白话FNN、RNN、Attention和self-attention等
我尝试同过炸酱面的例子,让所有人都能理解Transformer的核心Self-Attention。你在做老北京炸酱面的酱,食谱包括一系列步骤:准备食材(干黄酱、甜面酱、猪肉、葱姜等)、洗菜、切菜(葱姜蒜等)、炒肉,调和干黄酱、甜面酱、凉水、酱油后,加入锅中,慢炖成酱。我们将从FNN开始讲起,最终讲到Self-Attention,每个算法将以不同的方式处理这个食谱,从简单的单步处理到复杂的全局优化,模拟从新手到大师级厨师的进化。
炸酱面版
新厨子:处理独立、静态输入的FNN
FNN全称是Feedforward Neural Network,前馈申请网络。FNN是最简单的神经网络,像一个完全新手的厨子,只看当前的步骤,没有前后的步骤的记忆和关联。一个新手厨子第一次拿到菜谱后,就开始按照菜谱做饭,看一一步做一步,每一步都是独立的,比如看到了“切葱”的步骤,就只看到切葱的输入粗细,长短等,输出就是切成小段的细葱丝。但是他并不管前面的步骤,也不管后面的步骤。如果前面一步洗葱,如果并没有洗就切葱了,葱上如果有泥。如果后面的步骤是200度热油炒香葱丝,那么如果葱丝切的很细,下锅就糊了。这就如同一个手忙脚乱的新厨师,只能按照每一步指令干活,只顾眼前。这样的优点就是每一个步骤都简单,适合独立步骤的任务。但是由于忽略的步骤的连续性,如果食谱是“1. 洗葱;2. 切葱;3. 炒肉”,FNN把每步当独立任务,可能导致错误:没洗就切,葱不干净;或切得太细,下锅一炒就糊了。那么这炒酱的工作是一个连续性的工作,FNN无法处理好这种有序列性的工作,就像新手不懂整体流程。需要能记住前因后果的模型,引出RNN。
<