3Blue1Brown 刚出了 Transformer 的系列科普视频,做得很好。之前看过不少讲 Transformer 的课程
3Blue1Brown 刚出了 Transformer 的系列科普视频,做得很好。之前看过不少讲 Transformer 的课程和文章,包括李宏毅老师的课程在内,最后都陷在矩阵运算的过程里,几乎没有能把 K、Q、V三个矩阵的象征意义讲清楚的。3Blue1Brown通过自己最擅长的动画和类比,把这套 Attention 的原理讲得比较浅显和直白。
具体来说,“Attention 像是问每个 vector 一连串问题,然后根据这串问题的答案来更新自己。” Query 矩阵就像是在问:"Are you in English?", “Are you a noun?”, "Do you refer to a person?", "Are you a number?", "Is your tone positive?" 等等,Key 矩阵就像是 vector 对这个问题的答案,而 Value 矩阵则代表向量自己根据这个答案和相关性权重进行的自我调整。整个过程有点像是物理中的受力分析,每个 Attention Head 代表一种力,通过 Q 和 K 找到所有施力的对象,再通过 V 来计算受力的大小, 最后,把多个 Attention Head 代表的多个力进行加总,计算出合力的方向和大小,作用在最后一个Vector上,从而指向 next embedding。之所以叫 transformer,就是指各个不同的力汇总在一起,将原本的 vector 扭曲到了一个新的方向上。
相比之前的 RNN、LSTM 之类的模型,Transformer 的强大在于其支持并发计算。细想之下,这种并行的自注意机制颠覆了语言中的时间观,顺序不再重要。这让我想起《你一生的故事》/ 《降临》里七肢桶的语言 - 把完整的生命在眼前一下子同时铺开,没有先后,没有早晚,没有时间。类似的,Sora 中的所谓 spacetime patches,索性把空间也和时间打包在一起,颇像是爱因斯坦相对论里对“时空”的理解。或许,所谓的时间、空间,其实都是伪概念,只不过是 tokens/patches 的一种分布方式而已。还挺有趣的。