Pine 发自 凹非寺 真正零门槛!小白都能轻松看懂的Transformer教程来了。 在自然语言处理和计算机视觉领域,Transformer先后替代了RNN、CNN的地位成为首选模型,最近爆火的ChatGPT也都是基于这个模型。 换言之,想进入机器学习的领域,就必须得懂Transformer。 这不,量子位就发现了一篇零基础也能学的教程,作者是前微软、Facebook首席数据科学家,也是MIT机械工程的硕博士,从视觉化矩阵乘法开始,带你一步步入门。 DeepMind研究科学家Andrew Trask也转发评论道: 这是我至今见过最好的教程,它对入门者非常非常友好。 这条帖子也是掀起了一阵热度,浏览量已经有近30w。 网友们也纷纷在评论区作出“码住”状。 从视觉化矩阵乘法开始学因为这是一个新手入门的教程,所以在正式学Transformer之前,会有很多介绍矩阵乘法和反向传播的内容。 并且在介绍的过程中,作者逐个添加学习Transforme所需要了解的概念,并加以解释。 具体有多新手友好,我们先来浅看下这篇教程~ 基础概念解释首先,了解Transformer的第一步就是编码,就是把所有的单词转换成数字,进而可以进行数学计算。 一般来说,将符号转换为数字的有效方法是先对所有单词符号分配数字,每个单词符号都会对应一个独立的数字,然后单词组成的句子便可以通过数字序列来表示了。 举个简单的例子,比如files=1、find=2和my=3。然后,句子“ Find my files”可以表示为数字序列[2,3,1]。 不过这里介绍的是另外一种方法,即独热编码。 具体来说,就是将单词符号转换成一个数组,这个数组中只能有一个1,其他全为0。还是上面那个例子,用这种方式表示的话如下图。 这样一来,句子“Find my files”就变成了一维数组的序列,压缩到一块也就像是二维数组了。 接下来就要再来了解下点积和矩阵乘法了。 点积这里也就不再过多赘述,元素相乘再相加便可以了。 它有两个作用,一个是用来度量两个单词之间的相似性,一个是显示单词的表示强度。 相似性很容易判别,一个单词的独热矢量和自己的点积是1,和其他的点积为0. 至于表示强度,和一个能够表示不同权重的值向量进行点乘便可以了。 矩阵乘法,看下面这幅图便足矣。 从简单的序列模型开始介绍了解完这些基础概念之后,就要步入正轨了,开始学习Transformer是如何处理命令的。 还是用例子来解释,开发NLP计算机界面时,假设要处理3种不同的命令
可以用下面这个流程图(马尔可夫链)来表示,箭头上的数字表示下一个单词出现的概率。 接下来解释将马尔可夫链转换为矩阵形式了,如下图。 每一列代表一个单词,并且每一列中的数字代表这个单词会出现的概率。 因为概率和总是为1,所以每行的数字相加都为1。 以my为例,要想知道它的下一个单词的概率,可以创建一个my的独热向量,乘上面的转移矩阵便能得出了 再然后,作者又详细介绍了二阶序列模型,带跳跃的二阶序列模型,掩码。 至此,关于Transformer,已经学到了最核心的部分,至少已经了解了在解码时,Transformer是如何做的。 不过了解Transformer工作的原理和重新建造Transformer模型之间还是有很大差距的,后者还得考虑到实际情况。 因此教程中还进一步展开,作了更大篇幅的学习教程,包括Transformer最重要的注意力机制。 换句话说,这个教程就是从最基础的东西教我们重新构建一个Transformer模型。 更加具体内容就不在这里一一列出了,感兴趣的朋友可以戳文末链接学习。 目录先放在这里,可以根据自己的基础知识选择从哪个阶段开始学起: 1、独热(one-hot)编码 作者介绍Brandon Rohrer,目前是Linkedin的一名机器学习工程师,曾先后在微软,Facebook担任首席数据科学家。 在Facebook工作期间,他建立了一种更精确的电网映射预测模型,以评估全球的中压电网的连通性和路由。 写教程算是Brandon的一大爱好了,目前他所有的教程都不断更新在他的新书《如何训练你的机器人》中,帖子的跨度从职业发展到各种编程工具的介绍。 传送门: —完— @量子位 · 追踪AI技术和产品新动态 深有感触的朋友,欢迎赞同、关注、分享三连'' |