- Google Tensor2Tensor(T2T)系统时一套十分强大的深度学习系统,在多个任务上的表现都非常抢眼。尤其在机器翻译问题上,单模型的表现就可以超过之前方法的继承模型。这一套系统的模型结构、训练和优化技巧等,可以被利用到公司的产品线上,直接转化为生产力。
- Tensor2Tensor是一套基于TensorFlow的深度学习系统。该系统最初是希望完全使用Attention方法来建模序列到序列(Sequence-to-Sequence, Seq2Seq)的问题,对应于《Attention is All You Need》。这项工作的名字叫“Transformer”。
- 随着系统的不断扩展,T2T支持的功能变得越来越多,目前可以建模的问题包括:图像分类,语言模型,情感分析,语音识别,文本摘要,机器翻译。
- Encoder和Decoder可以选用不同结构的Neural Network,如RNN、CNN。
- Transformer是一种建模序列的新方法,序列到序列的模型依然是沿用了经典的Encoder-Decoder结构,不同的是不再使用RNN或是CNN作为序列建模机制了,而是使用了self-attention机制。
- self-attention机制的优势就是更容易捕获“长距离依赖信息(long distance dependency)”.
- 长距离依赖信息:(1)一个词其实是一个可以表达多样性语义信息的符号(歧义问题);(2)一个词的语义确定,要依赖其所在的上下文环境。(根据上下文消歧);(3)有的词可能需要一个范围较小的上下文环境就能确定其语义(短距离依赖现象),有的词可能需要一个范围较大的上下文环境才能确定其歧义(长距离依赖现象)。
- 采用双向LSTM的ELMO,带有门控机制,可以对历史信息进行有选择的遗忘和存储,但是门控参数量一定的情况下,这种能力是一定的。随着句子的增长,相对距离的增大,存在明显的理论上限。
- 多层CNN对序列进行建模时,第一层的CNN单元覆盖的语义环境范围较小,第二层覆盖的语义环境范围变大,以此类推,越深层次的CNN单元,覆盖的语义环境会越大。一个词首先会在底层CNN单元上与其近距离的词产生交互,然后再稍高层次的CNN单元上与其更远一些词产生交互。所以,多层的CNN结构体现的是一种从局部到全局的特征抽取过程。词之间的交互距离,与他们的相对距离成正比。距离较远的词只能在较高的CNN节点上相遇,才产生交互。这个过程可能会存在较多的信息丢失。
- 下图是self-attention机制的序列建模方法。图中“sentence”层中的每个词和第一层self-attention layer中的节点都是全连接的关系,第一层的self-attention layer和第二层self-attention layer之间的节点也都是全连接的关系。我们可以看到,在这种建模方法中,任意两个词之间的距离都是1,与词之间的相对距离不存在关系。这种方式下,每个词的语义的确定,都考虑了整个句子中所有词的关系。多层的self-attention机制,使得这种全局交互变得更加复杂,能够捕获到更多的信息。
原文:https://blog.csdn.net/QcloudCommunity/article/details/80972726