读完|图解Transformer,读完这篇就够了( 五 )
损失函数:
比如说我们正在训练模型 , 现在是第一步 , 一个简单的例子——把“merci”翻译为“thanks” 。
这意味着我们想要一个表示单词“thanks”概率分布的输出 。 但是因为这个模型还没被训练好 , 所以不太可能现在就出现这个结果 。
本文插图
因为模型的参数(权重)都被随机的生成 , (未经训练的)模型产生的概率分布在每个单元格/单词里都赋予了随机的数值 。 我们可以用真实的输出来比较它 , 然后用反向传播算法来略微调整所有模型的权重 , 生成更接近结果的输出 。
你会如何比较两个概率分布呢?我们可以简单地用其中一个减去另一个 。 更多细节请参考交叉熵和KL散度 。
交叉熵:
https://colah.github.io/posts/2015-09-Visual-Information/
KL散度:
https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained
但注意到这是一个过于简化的例子 。 更现实的情况是处理一个句子 。 例如 , 输入“je suis étudiant”并期望输出是“i am a student” 。 那我们就希望我们的模型能够成功地在这些情况下输出概率分布:
每个概率分布被一个以词表大小(我们的例子里是6 , 但现实情况通常是3000或10000)为宽度的向量所代表 。
第一个概率分布在与“i”关联的单元格有最高的概率
第二个概率分布在与“am”关联的单元格有最高的概率
以此类推 , 第五个输出的分布表示“”关联的单元格有最高的概率 。
本文插图
依据例子训练模型得到的目标概率分布:
在一个足够大的数据集上充分训练后 , 我们希望模型输出的概率分布看起来像这个样子:
本文插图
我们期望训练过后 , 模型会输出正确的翻译 。 当然如果这段话完全来自训练集 , 它并不是一个很好的评估指标(参考:交叉验证 , 链接https://www.youtube.com/watch?v=TIgfjmp-4BA) 。
注意到每个位置(词)都得到了一点概率 , 即使它不太可能成为那个时间步的输出——这是softmax的一个很有用的性质 , 它可以帮助模型训练 。
因为这个模型一次只产生一个输出 , 不妨假设这个模型只选择概率最高的单词 , 并把剩下的词抛弃 。 这是其中一种方法(叫贪心解码) 。
另一个完成这个任务的方法是留住概率最靠高的两个单词(例如I和a) , 那么在下一步里 , 跑模型两次:其中一次假设第一个位置输出是单词“I” , 而另一次假设第一个位置输出是单词“me” , 并且无论哪个版本产生更少的误差 , 都保留概率最高的两个翻译结果 。
然后我们为第二和第三个位置重复这一步骤 。 这个方法被称作集束搜索(beam search) 。 在我们的例子中 , 集束宽度是2(因为保留了2个集束的结果 , 如第一和第二个位置) , 并且最终也返回两个集束的结果(top_beams也是2) 。 这些都是可以提前设定的参数 。
再进一步 , 我希望通过上文已经让你们了解到Transformer的主要概念了 。 如果你想在这个领域深入 , 我建议可以走以下几步:阅读Attention Is All You Need , Transformer博客和Tensor2Tensor announcement , 以及看看?ukasz Kaiser的介绍 , 了解模型和细节 。
Transformer博客:
https://ai.googleblog.com/2017/08/transformer-novel-neural-network.html
Tensor2Tensor announcement:https://ai.googleblog.com/2017/06/accelerating-deep-learning-research.html
?ukasz Kaiser的介绍:
https://colab.research.google.com/github/tensorflow/tensor2tensor/blob/master/tensor2tensor/notebooks/hello_t2t.ipynb
接下来可以研究的工作:
Depthwise Separable Convolutions for Neural Machine Translation
https://arxiv.org/abs/1706.03059
One Model To Learn Them All
https://arxiv.org/abs/1706.05137
Discrete Autoencoders for Sequence Models
https://arxiv.org/abs/1801.09797
Generating Wikipedia by Summarizing Long Sequences
https://arxiv.org/abs/1801.10198
Image Transformer
https://arxiv.org/abs/1802.05751
Training Tips for the Transformer Model
https://arxiv.org/abs/1804.00247
Self-Attention with Relative Position Representations
https://arxiv.org/abs/1803.02155
Fast Decoding in Sequence Models using Discrete Latent Variables
https://arxiv.org/abs/1803.03382
Adafactor: Adaptive Learning Rates with Sublinear Memory Cost
推荐阅读
- 人民论坛图解|人民论坛图解 | 中国市场吸引外资的魅力不减
- 人民论坛图解 | 中国市场吸引外资的魅力不减
- 开学|开学防疫系列图解:中小学生返校防疫攻略
- 同比|新氧季报图解:营收3.3亿同比增15% 运营亏损近千万
- 同比|B站季报图解:营收26亿同比增70% 日均活跃用户5100万
- 选项|iPhone 12 Pro终极爆料图解:加入高刷选项 边框变窄刘海变小
- 防疫|开学防疫 系列图解之一:大学生返校防疫攻略
- Apple|iPhone 12 Pro 终极爆料图解:影像能力大提升/加入高刷选项
- 北京日报客户端|图解 | 涉水入主险,地震也管赔!车险改革加量不加价
- 约合|社交电商云集季报图解:营收同比降51% 净亏1750万
