![]() |
![]() 加入周期性变化的位置信息 L 一句话中有多少个单词, pos 表示第几个单词,范围[0,L-1],pos为单词在句子中的位置 单词向量的维度为embedding_dim,i属于[0,embedding_dim-1] i 表示向量维度的位置,第几维 transformer网络中向量特征个数通常是固定的,比如512维 每个小区域会从512变大,但最后小区域结束时,会收缩到512维, 然后不断地循环重复这一系列的小区域, 参数在网络中的特征变化为,在某个特定的维度附近,一张一收,循环往复 这个固定的维度就是d 优点/作用 可以处理任何⻓度的序列: - 因为编码是通过函数⽣成的,所以理论上可以为任何⻓度的序列⽣成位置编码。 可以捕捉相对位置信息: - 这种编码⽅式能够让模型捕捉词与其周围词之间的相对位置关系。 可以轻易加到词向量上: - 这些编码是添加到词嵌⼊向量上的,⽽不是与之相乘,这样简化了模型。 这种位置编码⽅法为模型提供了词在序列中相对位置的信息, 这对于许多NLP任务(如翻译、摘要等)来说是⾮常有⽤的。 下面的部分为个人猜测,如有雷同,纯属巧合 参数在网络中的特征变化为,在某个特定的维度附近,一张一收,循环往复 特别像跳动的音符,音乐播放时那个在一定范围内跳动的曲线, 但语音通常有五个主峰频率,但tranformer的model维度通常一个,d=512, 个人猜测,tranformer后续要想有更强大的表征能力, 这个model维度也应该能够随数据规律而增加/变化才是 |
生成模式 解码训练是一个序列生成一个单词,然后再生成下一个,是一上下三角矩阵 |
解码器X提供KV,解码器为Q X是整个解码器的最终输出 y则是解码器每个小模块(注意力+残差+归一化)的输入 即解码器所有小模块 共用同一个x |
注意力是求特征的,残差是解决梯度消失问题的,整个小模块就是为了能够多次循环求特征 前馈神经网络,线性变换+激活函数,是为了特征变换,将一个维度的特征映射到另外一个维度 注意力中是没有激活函数的,是纯线性变换,且不注重特征在不同维度的变换, 注意力的线性变换是模型维度d的变换, 要求的是相对重要性,侧重于百分比,概率的计算,再与V相乘,化为具体的值 注意力是要分个高下,称一称到底几斤几两,划分成三六九等, 让差异清晰明了...这样方便后续特征变换 其实这就是一个评分模型,通常内积/相似度运算,让重要维度上的数值/评分 大/高一点 前馈神经网络的特征变换,是不同维度的变换 通常是模型维度d -- 2d/4d -- 模型维度d,是有一个一张一收的过程的 特征维度先大后小,这也是神经网络特征变换的一个基本思想 所以,这里的神经网络通常是两层, 一层将特征维度变大,一层将之收缩回来,每层+一个激活函数 |