主要用于翻译,有两部份组成:encoding和decoding。
1 encoding encoding如下图所示:
文章图片
1.1 self-attention
计算单词与其他单词的相关性。
输入:input embedding。
输出:每个单词之间的相关性。
包含3个向量矩阵:Query、Key、Value,计算相关性的计算方法:
Query=embeddingWq
Value=https://www.it610.com/article/embeddingWv
Key=embeddingWk
relevance=ValueSoftmax(Query*Key)
文章图片
文章图片
1.2 multi-attention head
1.1求self-attention的三个向量分别用了一个矩阵,论文中使用了8个矩阵,最后生成8个相关性矩阵,然后转化为使用一个矩阵生成结果的大小(num_words, num_words)
1.3 positional encoding
之前的谈论并没有考虑单词顺序的关系。假设使用jpe向量表示,有许多方法求该向量,论文中用到的公式是:
PE(pos,2i)=sin(pos/100002i/dmodel)
PE(pos,2i+1)=cos(pos/100002i/dmodel?)
pe+embedding作为最终的输入向量。
1.4 layer normalization
在每一个子模块后添加一个残差块,残差块包括layer normalization。
文章图片
2 decoding decoding如下图所示:
文章图片
2.1 mask multi-head attention
包括两种掩码:padding mask和sequence mask.
2.1.1 padding mask 【NLP|Transformer模型】输入序列需要对齐, 如果输入序列不足则用0填充,如果输入序列长则去掉多的部分。
2.1.1 sequence mask 屏蔽以后的信息。使用一个上三角为0的矩阵乘以输入embedding。
推荐阅读
- 机器学习算法|图像处理中的经典机器学习方法
- 机器学习|sklearn机器学习——day11
- #|机器学习入门三
- 云计算|基于 K8S 构建数据中心操作系统
- 人工智能|PyTorchの可视化工具
- 程序人生|三阶魔方自动求解及动态可视化matlab代码
- 机器学习系列文章|【晨读算法】为什么经常看到使用朴素贝叶斯公式的时候把分母忽略了()
- 深度学习|Pytorch总结五之 模型选择、?拟合和过拟合
- 职场|自学Python6个月,找到了月薪8K的工作,多亏了这套学习方式