- 读“放弃幻想,全面拥抱Transformer:自然语言处理三大特征抽取器(CNN/RNN/TF)比较”的笔记
NLP的特征
- 输入是个一维线性序列
- 输入不定长
- 单词相对位置
- 相距较远的单词特征需要联合
背景,RNN的流行
~~~~~~
NLP的输入往往是个不定长的线性序列句子,而RNN本身结构就是个可以接纳不定长输入的由前向后进行信息线性传导的网络结构,而在LSTM引入三个门后,对于捕获长距离特征也是非常有效的。所以RNN特别适合NLP这种线形序列应用场景
~~~~~~
缺点:RNN无法并行计算的,只能老老实实地按着时间步一个单词一个单词往后走。
CNN运用于NLP的大概结构
~~~~~~
- 还可能用上casual NN(加上时间步的优化,但是不太明白),GLU是重要元件。
- CNN的并行计算能力强(不同卷积核,不同滑动窗口)。位置信息如果不使用pooling(局部取最大值)也不会消失,还可以采用position embedding来克服。
新宠Transformer
- 结构如下图
- 能让Transformer效果好的,不仅仅是Self attention,这个Block里所有元素,包括Multi-head self attention,Skip connection,LayerNorm,FF一起在发挥作用。
- 注意:Transformer是用位置函数来进行位置编码的;而Bert等模型则给每个单词一个Position embedding,将单词embedding和单词对应的position embedding加起来形成单词的输入embedding
- 注意:Self attention会让当前输入单词和句子中任意单词发生关系,然后集成到一个embedding向量里。如果与其他单词发生关系,我不是很明白,只知道那些矩阵的运算。
- 深度影响模型效果:Transformer base包含12个Block叠加,而Transformer Big则扩张一倍,包含24个Block。无疑Transformer Big在网络深度,参数量以及计算量相对Transformer base翻倍,所以是相对重的一个模型,但是效果也最好。
作者对于这几个模型进行了比较
- 语义特征提取能力;(考察语义类能力的任务WSD,常常是翻译问题)
- 长距离特征捕获能力;(主语-谓语一致性检测,比如we………are…)
- 任务综合特征抽取能力;
- 并行计算能力及运行效率
(这几个方面我不是很明白用什么比较呢?)
使用各种论文
所以CNN还有未来,但是稍逊于tf,而rnn计算量太大。
作者的疑问
Transformer微弱优于RNN模型(尤其在主语谓语距离小于13时),能力由强到弱排序为Transformer>RNN>>CNN; 但在比较远的距离上(主语谓语距离大于13),RNN微弱优于Transformer。
另外
tf调参建议Training Tips for the Transformer Model
memory work不行