Transformer
文章平均质量分 77
丿罗小黑
计算机硕士在读
展开
-
Transformer的代码实现 day04(FFN)
【代码】Transformer的代码实现 day04(FFN)原创 2024-04-03 14:32:31 · 331 阅读 · 0 评论 -
Transformer的代码实现 day03(Positional Encoding)
【代码】Transformer的代码实现 day03(Positional Encoding)原创 2024-04-02 23:07:27 · 437 阅读 · 0 评论 -
Transformer的代码实现 day02(Multi-Head Self-Attention)
【代码】Transformer的代码实现 day02(Multi-Head Self-Attention)原创 2024-04-02 16:51:21 · 361 阅读 · 0 评论 -
Transformer的代码实现 day01(残差和layer_norm标准化)
【代码】Transformer的代码实现 day01(残差和layer_norm标准化)原创 2024-04-01 23:11:28 · 418 阅读 · 0 评论 -
Transformer的前世今生 day12(Transformer的三个问题)
首先此处的Attention并不是自注意力,由于K、V同源,但是Q与K、V不同源,所以不能做自注意力Q是查询变量,即已经生成的词,K=V是源语句,因此当我们要生成这个词的时候,通过Q和K、V做注意力,就能确定源语句中哪些词对将要生成的词更有作用相反,如果Encoder给Decoder的是Q矩阵,那么我们生成的词作为K、V在Q中查询,这相当于用全部信息在部分信息里查询,这做反了。原创 2024-04-01 19:15:17 · 681 阅读 · 0 评论 -
Transformer的前世今生 day11(Transformer的流程)
Transformer的流程在机器翻译任务中,翻译第一个词,Transformer的流程为:先将要翻译的句子,一个词一个词的转换为词向量送入编码器层,得到优化过的词向量以及K、V,将K、V送入解码器层,并跟解码器层将要翻译的Q进行计算,来找出相匹配的K、V,经过线性层和Softmax层得到最后翻译的结果,如下图:注意:翻译第一个词的时候,还没有已经生成好的词输入进解码器层在机器翻译任务中,翻译接下来的词,Transformer的流程为:先将要翻译的句子,一个词一个词的转换为词向量送原创 2024-03-28 18:17:32 · 677 阅读 · 0 评论 -
Transformer的前世今生 day10(Transformer编码器、解码器)
前情提要ResNet(残差网络)由于我们加更多层,更复杂的模型并不总会改进精度,可能会让模型与真实值越来越远,如下:我们想要实现,加上一个层把并不会让模型变复杂,即没有它也没关系,于是我们将残差块加入快速通道来实现,如下:g(x)作为激活函数的输入,x作为模型的输入,f(x)为加上的层的输出,那么原本g(x) = f(x)加入残差块x后,g(x) = f(x) + x,表明即使f(x)没有得出很好的结果,那我也可以直接用x来作为激活函数的输入,绕过f(x)残差块使很深的网络更加容易训原创 2024-03-27 22:37:24 · 258 阅读 · 0 评论 -
Transformer的前世今生 day09(Transformer的框架概述)
Transformer的框架概述原创 2024-03-26 22:19:08 · 415 阅读 · 0 评论 -
Transformer的前世今生 day08(Positional Encoding)
前情提要Attention的优点:解决了长序列依赖问题,可以并行。Attention的缺点:开销变大了,而且不存在位置关系为了解决Attention中不存在位置关系的缺点,我们通过位置编码的形式加上位置关系Positional Encoding(位置编码)通过在原输入词向量的基础上,给他加一个位置编码,组成新的输入词向量位置编码的具体公式,如下:其中:pos指当前单词在句子中的位置,i指位置编码的维度(通常来说词向量的维度为512,那么i就是0-511,表示第几维)得到位置编码原创 2024-03-26 19:57:51 · 294 阅读 · 0 评论 -
Transformer的前世今生 day07(Masked Self-Attention、Multi-Head Self-Attention)
Masked Self-Attention 掩码自注意力由于NLP中的生成模型,是一个一个的生成单词, 所以为了让自注意力也实现这个过程,就设计了掩码自注意力掩码:在自注意力机制中,每个输入位置都会与其他位置进行注意力计算,并计算出一个加权和。而掩码的作用是将不相关或无效的位置的注意力权重设置为0,从而将模型的关注点限定在有效的位置上。如:将未来位置的注意力权重被设置为0,以防止模型在生成当前位置时依赖未来的信息,从而达到生成模型,一个一个生成单词的效果如果只是自注意力机制,那么模型会知道这原创 2024-03-25 17:13:17 · 280 阅读 · 0 评论 -
Transformer的前世今生 day06(Self-Attention和RNN、LSTM的区别)
Self-Attention和RNN、LSTM的区别RNN(循环神经网络)RNN,当前的输出oto_tot取决于上一个的输出ot−1o_{t-1}ot−1作为当前的输入xt−1x_{t-1}xt−1和当前状态下前一时间的隐变量hth_tht,隐变量和隐变量的权重WhhW_hhWhh存储当前状态下前一段时间的历史信息,如果我们去掉Whh∗ht−1W_{hh} * h_{t-1}Whh∗ht−1,RNN就退化为MLP在RNN中,我们根据前一个的输出和当前的隐变量,就可以预测当前的输出。当前原创 2024-03-21 21:39:18 · 1234 阅读 · 0 评论 -
Transformer的前世今生 day05(Self-Attention、Attention和Self-Attention的区别)
XK≈XV≈XQWQWKWVXK≈XV≈XQq1k1q1k2dkx1x2q1z1z1x1Z1。原创 2024-03-20 16:25:45 · 935 阅读 · 0 评论 -
Transformer的前世今生 day04(ELMO、Attention注意力机制)
ELMO前情回顾NNLM模型:主要任务是在预测下一个词,副产品是词向量Word2Vec模型:主要任务是生成词向量CBOW:训练目标是根据上下文预测目标词Skip-gram:训练目标是根据目标词预测上下文词ELMO模型的流程针对Word2Vec模型的词向量不能表示多义词的问题,产生了ELMO模型,模型图如下:通过不只是训练单单一个单词的Q矩阵,而是把这个词的上下文信息也融入到这个Q矩阵中,从而解决一词多义的问题注意:左侧的LSTM是融入上文信息,右侧的LSTM是融入下文信息。E原创 2024-03-19 22:48:13 · 461 阅读 · 0 评论 -
Transformer的前世今生 day03(Word2Vec、如何使用在下游任务中)
前情回顾由上一节,我们可以得到:任何一个独热编码的词都可以通过Q矩阵得到一个词向量,而词向量有两个优点:可以改变输入的维度(原来是很大的独热编码,但是我们经过一个Q矩阵后,维度就可以控制了)相似词之间的词向量有了关系但是,在NNLM(神经网络语言模型的一种)中,词向量是一个副产品,即主要目的并不是生成词向量,而是去预测下一个词是什么,所以它对预测的精度要求很高,模型就会很复杂,也就不容易去计算Q矩阵和词向量模型图如下:因此提出了一个专门生成词向量的神经网络语言模型----Wor原创 2024-03-18 23:07:48 · 465 阅读 · 0 评论 -
Transformer的前世今生 day02(神经网络语言模型、词向量)
神经网络语言模型使用神经网络的方法,去完成语言模型的两个问题,下图为两层感知机的神经网络语言模型:以下为预备概念感知机线性模型可以用下图来表示:输入经过线性层得到输出线性层 / 全连接层 / 稠密层:假设输入有n个,输出有m个,则w、b、y的个数如下:独热编码目的是让计算机认识单词用矩阵的形式,存储所有单词。且在矩阵中,每一个元素都代表一个单词,这就要求矩阵的行列等于单词数,如下图:独热编码有两个缺点:矩阵的尺寸很容易过大,因为他需要行列等于单词数相似单词之间的独热原创 2024-03-17 23:14:56 · 488 阅读 · 0 评论 -
Transformer的前世今生 day01(预训练、统计语言模型)
预训练在相似任务中,由于神经网络模型的浅层是通用的,如下图:所以当我们的数据集不够大,不能产生性能良好的模型时,可以尝试让模型B在用模型A的浅层基础上,深层的部分自己生成参数,减小数据集的压力使用模型A的浅层来实现任务B,由两种方式:冻结(frozen):浅层参数不变微调(Fine-Tuning):浅层参数会跟着任务B的训练而改变总结:一个任务A,一个任务B,两者极其相似,任务A已经通过大数据集训练出一个模型A,使用模型A的浅层参数去训练任务B,得到模型B。原创 2024-03-15 20:16:18 · 532 阅读 · 0 评论