【人工智能】TF-IDF以及BM25的计算逻辑


1 前情提要 在基于规则的词匹配算法中,首先需要做的事分词,我们先要有一个覆盖内容尽可能大的词表,然后对查询Query进行拆分,然后才能使用词袋算法计算词相关性数值。 我们假设词表为V,大小假设为26000。 2 TF-IDF Term Frequency - Inverse Document Fr

【数学】机器学习中的信息量、熵、交叉熵、KL散度


1 背景概述 在机器学习中,经常使用到交叉熵、KL散度,那么它们是如何由来、为何奏效? 在有监督学习中,通常有一个当前模型的概率分布以及目标概率分布,我们希望达到的效果是让当前的概率分布尽可能的去拟合目标概率分布,那么这个时候需要一个函数,它需要具备描述两个概率分布的差异的能力。 现在我们假设目标分

【大模型优化】常见激活函数


1 Sigmoid 缺点: 输入较大或较小时候梯度接近于0,容易导致梯度消失 函数输出不是以 0 为中心的,梯度可能就会向特定方向移动,从而降低权重更新的效率 Sigmoid 函数执行指数运算,计算机运行得较慢,比较消耗计算资源 f(x) = \frac{1}{1 + e^{-x}} f'(x) =

【大模型实践】开源项目NanoGPT实践


1 参数 n_head = 4 # 多头注意力的头数 n_layer = 4 # transformer层数 dropout = 0.0 # dropout率 context_size = 32 embd_dim = 64 batch_size = 16 lr = 1e-3 epochs =

【大模型】文本大模型的Embedding


1 介绍 关于词向量与Embedding: Embedding是以每个字在给定分布随机初始化的随机向量而组成的可学习参数矩阵,也就是一个全连接Dense层,其以onehot为输入,稠密向量为输出,即词向量,因此在实现上,用lookup查表来代替矩阵乘积以提高性能。PyTorch中常用的实现为nn.E

【大模型】文本大模型的Tokenization


1 分词粒度 1.1 词粒度 word 英文天生空格分开词汇,中文可以使用jieba分词工具 优点: 词的边界和含义得到保留 缺点: 词粒度的词表由于长尾效应可能会非常大,包含很多的稀有词,存储和训练的成本都很高,并且稀有词往往很难学好 OOV(out of vocabulary)问题,对于词表之外

【大模型】Full-FT与BitFit


1 全参数微调(Full-FT) 顾名思义,全参微调(Full-Fine-tuning)类似于预训练阶段,使用目标领域的少量语料对整个模型进行微调。这种方法虽然实现简单,但灵活性较低,且对计算资源的需求较高。 2 BitFit 原论文:[2106.10199] BitFit: Simple Para

【大模型】大模型量化


1 大模型量化基础 1.1 极大值量化(对称量化) 1.2 零点量化(非对称量化) 2 量化 2.1 动态量化 运行时量化:在模型推理阶段,动态计算激活值的量化参数,以适应不同的输入数据。 量化范围:通常仅对权重进行预量化,而激活值则在推理时实时量化。 数据依赖:

【大模型】Adapter系列微调方法


1. Adapter Tuning Adapter Tuning 通过在 Transformer 的 多头注意力机制 和 FFN 之后插入 瓶颈结构 的 Adapter 模块,实现了参数高效微调。其设计简单、高效且通用,适用于多种任务和模型。 2. Adapter Fusion AdapterFus

【深度学习】损失函数的使用场景和特性


1. 均方误差(Mean Squared Error, MSE) 使用场景: 回归问题。 特性: 计算预测值与真实值之间的平方差,然后取平均。 对大误差非常敏感,因为误差被平方。 平滑且连续,易于优化。 公式: \text{MSE} = \frac{1}{N} \sum_{i=1}^{N} (y_i

【深度学习】广义的监督学习和N-shot


1 广义的监督学习 1.1 全监督学习(Supervised Learning) 定义 模型在标注数据(输入-输出对)上进行训练,目标是学习从输入到输出的映射关系。 训练数据包含明确的标签(即每个输入数据都有一个对应的正确输出)。 特点 数据需求:需要大量标注数据。 目标:学习输入和输出之间的精确映

【深度学习】Decomposable Attention Model


1 整体结构 可分解注意力模型:Decomposable Attention Model 2 多层感知机 (MLP) def mlp(num_inputs, num_hiddens, flatten): net = [] net.append(nn.Dropout(0.2))

【深度学习】Bert结构以及预训练


1 Bert模型 先看看Bert做了什么: 静态词嵌入(如word2vec和GloVe): 特点:预训练的向量是固定的,同一个词在不同上下文中使用相同的向量。 局限性:无法处理一词多义或复杂语义,因为它们不考虑词的上下文信息。 上下文敏感的词表示: ELMo: 特点:使用双向编码,即考虑词的左侧和右

【深度学习】Transformer


1 Transformer结构 Transformer作为编码器-解码器架构的一个实例。正如所见到的,Transformer是由编码器和解码器组成的。与基于Bahdanau注意力实现的序列到序列的模型相比,Transformer的编码器和解码器是基于自注意力的模块叠加而成的,源(输入)序列和目标(输

【深度学习】层归一化和批量归一化


以这个张量为例: [[3, 2, 1], [1, 2, 3]] 其中第一个维度是样本,第二个维度是特征,所以该数据表示的是两个样本,每个样本都有三个特征。 1 层归一化 (Layer Norm) 主要思想是计算对 每一个样本计算所有特征均值、标准差 ,然后对样本数据进行归一化 就以上面的例子为例,

【深度学习】Word2Vec算法以及优化


1 跳元模型(Skip-Gram) 定义模型参数: 对于词典中的每个词,有两个d维的向量表示,分别用于中心词和上下文词。 中心词向量记为\mathbf{v}_i,上下文词向量记为\mathbf{u}_i。 计算条件概率: 给定一个中心词w_c,计算生成任意上下文词w_o的条件概率。 条件概率通过中心

【深度学习】注意力机制


1 注意力机制中的Q、K、V 我们通过一个简化的例子来说明注意力机制中q(查询)、k(键)和v(值)的作用。 假设我们有一个简单的语言模型,它正在处理一个英文句子,并试图预测下一个单词。句子是 "The cat sat on the mat",我们想要预测下一个单词。 步骤 1: 定义嵌入向量 首先

【深度学习】Seq2Seq(带有Bahdanau注意力机制)


Seq2Seq基础结构可以看上一篇文章【深度学习】Seq2Seq 1 总体结构 Bahdanau注意力也成为加性注意力,其实是一种注意力评分函数 2 编码器结构 在编码器部分,和基础的seq2seq结构完全一致 3 解码器结构 注意: 与基础Seq2Seq结构的主要不同主要是对于解码器结构的部分,对

【深度学习】Seq2Seq


1 总体结构 不论是编码器还是解码器,它们都会首先通过嵌入层(Embedding层)处理外部输入,以便转换成相应的词向量。 2 编码器结构 vocab_size:词汇表的大小,用于定义嵌入层。 embed_size:嵌入层输出的维度,即每个词汇的向量表示大小。 num_hiddens:循环神经网络(

【深度学习】RNN、GRU、LSTM的计算单元


1. RNN(Recurrent Neural Network) 相关公式: a^{<t>} = \tanh(W_a \cdot [a^{<t-1>}, x^{<t>} ] + b_a) \hat{y}^{<t>} = \sigma(W_y \cdot a^{<t>} + b_y) 2. GRU(G

【深度学习】卷积层、池化层的正向反向传播


1 卷积层 1.1 前向传播 以此卷积核为例: \begin{bmatrix}1&0&1\\0&1&0\\1&0&1\\\end{bmatrix} 1.2 反向传播 dA += \sum _{h=0} ^{n_H} \sum_{w=0} ^{n_W} W_c \times dZ_{hw} \tag{

【深度学习】梯度下降优化算法-Momentum,RMSprop,Adam


提要 一般的梯度下降公式为 w=w-dw b=b-db 这里提到的是对于一般的梯度下降的优化方案 1 动量梯度下降 (Gradient Descent with Momentum) v_{dw}=\beta v_{dw}+(1-\beta)dW v_{db}=\beta v_{db}+(1-\bet

【深度学习】单隐层网络-公式推导


注意dZ^{[2]}的由来 激活函数为Sigmoid: a^{[2]} = \frac{1}{1 + e^{-z^{[2]}}} 损失函数为: L(a , y) = - y \log{a} - (1-y)\log{(1-a)} 所以:\frac{dL}{da} = -\frac{y}{a} + \f