1.transformer的encoder和decoder

区别是decoder在encoder的block的基础上增加了新的计算cross attention的部分,位于自注意力模块和前馈神经网络之间。

cross attention是BEGIN和encoder的输出之间计算相关信息,把相关信息编码到向量中去。

2.AT和NAT

区别是后者支持并行,但是训练起来更困难,需要的数据更多 AT在输出时是会逐个输出并且把新的输出当成下一步decoder的输入,NAT是一次输入多个BEGIN。

AT在输出终止是通过在词表里有一个END,当输出这个代表结束。

而NAT刚开始就已经输入了输出数量的BEGIN,问题就是怎么在一开始就确定输出数量,一种思路是训练另一个模型来做这个任务,另一种是生成固定数量的输出但是通过end代表结尾。

3.实际训练

在实际训练时和AT不同之处在于数据看到的不是训练过程中的输出 而是真实输出前面的位置,比如语音识别机器学习到汉字机器学习,学习器的时候要输入真实的机给模型,但是真实情况是使用输出的内容作为输入的末尾。

除此之外在训练时不能完全使用正确的输入,因为在机器学习这几个字实际情况下可能生成机能、机票等等都有可能,在这种情况下如果没有经过训练会迅速生成一堆无关的内容。

4.缓存

在真实计算时,encoder的输出部分,很多会循环计算的部分,但是没有变化的部分可以储存下来,不需要每次都计算,我理解的是模型训练完真实使用的场合。

 

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐