GPT模型的预训练与微调
1 预训练 GPT使用的是阉割版的Transformer decoder。它取消了第二层的多头注意力,使用最下层带掩码的多头注意力。GPT使用多个这样的Transformer层。 以最后一层的输出计算损失。 在最后一层计算损失时,目标向量在概念上使用的是预测词的One-hot表示,而不是embedding矩阵里的向量。GPT的embedding矩阵…
ELMo模型
模型整体架构和实现思路看知乎大佬的总结: ELMo原理解析及简单上手使用 - 知乎 自己的理解: ELMo的预训练是训练各层LSTM内部参数,以及各层的输出上下文矩阵的参数值。 ELMo的输出: 以三层ELMo为例,当输入一个文本,并确定一个中心词后,那么在E1~En层会输出一个中心词原来的embedding向量,在第一个LSTM层的前向会输出一个…
二分类交叉熵和多分类交叉熵损失函数的区别于联系
核心联系 本质是同一个概念:它们都源于信息论中的交叉熵概念,用于衡量两个概率分布之间的差异。在机器学习中,一个分布是模型预测的分布 (Prediction),另一个是真实的分布 (Truth)。目标就是通过梯度下降等优化方法,最小化这个交叉熵,使得预测分布尽可能接近真实分布。 统一的数学思想:无论是二分类还是多分类,它们的损失函数都是同一个形式:L…
Word2vec负采样和层序softmax理解
为了解决跳远模型和连续词袋模型在训练时需要计算词表大小的梯度使计算量太大的问题。从而有了这两个方法。 1.负采样 负采样修改了原来的⽬标函数。给定中⼼词Wc的⼀个背景窗口,我们把背景词Wo出现在该背景窗 口看作⼀个事件,并将该事件的概率计算为 2.层序softmax 不搬运了,看视频 IMG_0054_哔哩哔哩_bilibili
批量梯度随机下降,小批量梯度随机下降和随机梯度下降的差别
这三种方法是梯度下降优化算法的三种主要变体,其核心区别在于每次更新模型参数时,所使用的训练数据量不同。 1. 批量梯度下降 核心思想:使用整个训练数据集(全部样本)来计算损失函数关于参数的梯度,然后进行一次参数更新。 工作流程: 遍历整个训练集,计算每个样本的梯度。 对所有样本的梯度求平均。 用这个平均梯度来更新模型参数。 重复以上步骤,直到收敛。…
Transformer编码器和解码器训练和预测流程
1.训练流程  比如我们想做一个中译英的机器翻译任务,现在我们已经准备好了数据集,例如{‘chinese’:我爱吃梨,‘english’: i love eating pears} ,那么模型的输入和输出以及标签分别是什么呢?首先我们会先根据数据集创建中文词表和英文词表,假如数据集中只有{‘chinese’:我爱吃梨,‘english’: i lo…
用python写算法题遇到的问题
1.字母和字母之间不能像c语言一样直接进行加减操作 使用ord()函数将字母转acsll,使用chr()函数将acsll转成字母 2.在类内创建方法并使用这个方法,需要使用self. 的方式调用 3.python不使用&&和||表示并 或 而是使用and or 4.sorted函数返回值是一个列表,如 sr=‘cba’ sorted…
RNN初学容易弄混的一些点
1.假如batch size=2 那么这两批是使用同一套权重的,在时间步走完后一起更新同一套权重,但是这两批使用的是不同的H,更新权重时使用的梯度是两批梯度的平均。 2.RNN的数据输入时需要进行转置在one_hot的原因是一开始的输入是batchsize*timestep那么这样直接进行one_hot的结果是batchsize*timestep*…
RNN梯度更新BPTT
1.损失函数 对于分类任务来说,rnn使用交叉熵损失。 其中: T为序列长度 C为类别数 yt,i​为真实标签的one-hot表示 yhat t,i​为模型预测的概率分布 预测的输出是C维张量,每个数值代表这个类别的概率。真实标签也是一个C维张量,但是只有一个值为1。 对于回归任务来说,rnn使用均方损失。 2.梯度更新过程 假设我们使用一个时间步…