零基础构建 Transformer 模型
在自然语言处理和计算机视觉领域,Transformer 先后替代了 RNN、CNN 的地位成为首选模型。想进入机器学习的领域,就必须得懂 Transformer。
这里介绍一篇由前微软、Facebook 首席数据科学家撰写的零基础教程,从视觉化矩阵乘法开始,带你一步步入门。DeepMind 研究科学家 Andrew Trask 也推荐道:"这是我至今见过最好的教程,它对入门者非常非常友好。"
从视觉化矩阵乘法开始学
因为这是一个新手入门的教程,所以在正式学 Transformer 之前,会有很多介绍矩阵乘法和反向传播的内容。作者在介绍的过程中逐个添加学习 Transformer 所需要了解的概念,并加以解释。
基础概念解释
首先,了解 Transformer 的第一步就是编码,就是把所有的单词转换成数字,进而可以进行数学计算。
一般来说,将符号转换为数字的有效方法是先对所有单词符号分配数字,每个单词符号都会对应一个独立的数字,然后单词组成的句子便可以通过数字序列来表示了。
举个简单的例子,比如 files=1、find=2 和 my=3。然后,句子'Find my files'可以表示为数字序列 [2,3,1]。
不过这里介绍的是另外一种方法,即独热编码(One-hot Encoding)。
具体来说,就是将单词符号转换成一个数组,这个数组中只能有一个 1,其他全为 0。还是上面那个例子,用这种方式表示的话如下所示。

这样一来,句子'Find my files'就变成了一维数组的序列,压缩到一块也就像是二维数组了。

接下来就要再来了解下点积和矩阵乘法了。
点积这里也就不再过多赘述,元素相乘再相加便可以了。
它有两个作用,一个是用来度量两个单词之间的相似性,一个是显示单词的表示强度。
相似性很容易判别,一个单词的独热矢量和自己的点积是 1,和其他的点积为 0。
至于表示强度,和一个能够表示不同权重的值向量进行点乘便可以了。

矩阵乘法,看下面这幅图便足矣。

从简单的序列模型开始介绍
了解完这些基础概念之后,就要步入正轨了,开始学习 Transformer 是如何处理命令的。
还是用例子来解释,开发 NLP 计算机界面时,假设要处理 3 种不同的命令:
- Show me my directories please.
- Show me my files please.
- Show me my photos please.
可以用下面这个流程图(马尔可夫链)来表示,箭头上的数字表示下一个单词出现的概率。





