第972章 AI模型训练里的链式法则,用童话故事讲解
作者:翟晓鹰   职场小聪明最新章节     
    从前,在一个叫“深度王国”的地方,有一个爱哭的小公主,名字叫loss(洛斯)。她只要一不开心,整个王国就会下雨、打雷,所有人都会很难过。
    国王最怕女儿哭了,他下了一道圣旨:
    “谁能让公主永远笑呵呵,谁就能得到整个王国的宝藏!”
    于是,全国最聪明的信使们组团出发了。他们排成一列长长的队伍,从公主的卧室一直排到王国的最边境。这支信使队伍有好几层:
    第一层信使站在公主床边,叫“输出层小红”。
    第二层叫“隐藏层小紫”,第三层叫“隐藏层小蓝”,一直排到最远方的“输入层小绿”。
    有一天,公主又哭了!(因为预测的蛋糕味道和真的不一样)
    小红第一个听到哭声,吓得脸都白了,赶紧把“公主哭得好大声啊!”这个消息往后传。
    可是,他不能自己跑,他只能把消息告诉站在他后面的小紫,同时附上一张纸条:
    纸条上写着:
    “公主哭得有10级伤心,我这边的门(激活函数)把伤心放大了2倍,所以你要收到的是 10 x 2 = 20级伤心!”
    小紫收到20级伤心后,自己这边的门(也是激活函数)又把伤心缩小了一半,只剩下10级。
    然后他转身对小蓝喊:
    “公主有10级伤心!但要经过我这扇门的时候,我要乘上我的魔法权值3,所以你收到的是 10 x 3 = 30级伤心!”
    小蓝、小绿……每一个人都这样接力:
    1. 先收到前面传来的“伤心数值”(这就是δ,误差信号)
    2. 乘上自己和前面人之间的“魔法绳子粗细”(这就是权重w)
    3. 再乘上自己这扇门的“开关灵敏度”(激活函数导数)
    4. 把新的伤心数值传给后面的人
    就像多米诺骨牌一样,哭声一层层往回传,一直传到最远方的输入层小绿。
    小绿收到消息以后,马上跑去告诉厨房:“公主因为蛋糕太甜哭了,下次糖要少放0.02个金币的量!”
    旁边负责加糖的厨师(就是权重w)听了,立刻把自己的糖勺调小了一点点。
    所有信使路过的厨师、烤蛋糕师、加奶油师……都根据收到的“伤心数值”把自己的勺子、火候、材料调一调。
    调完以后,重新烤一个蛋糕给公主吃。
    公主咬了一口……眼睛亮了!
    “哇!这次好吃!”
    她笑了,王国立刻出太阳、开花、彩虹满天!
    可是公主第二天可能又会因为别的原因哭(比如太淡了)。
    于是信使们又开始跑,又是一轮“伤心接力”,又是一轮调勺子……
    一次又一次,一次比一次准,公主哭得越来越少,笑得越来越多。
    这就是“链式法则”的童话版:
    公主的眼泪(loss)通过一串信使(链式法则)告诉每一个人:“你该为我的眼泪负多少责?”
    每个人根据自己负责的“魔法绳子”(权重)和“门”(激活函数)算出自己该改多少,然后把锅背好,把活干好。
    最后,小公主再也不哭了,王国从此过上了幸福的生活。
    而那串不停奔跑、传递眼泪的信使们,有一个很长的名字,叫:
    反向传播的链式法则。
    故事结束,公主和她的信使们从此幸福地训练在一起。
    你想听信使们在transformer王国(注意力机制)的冒险故事吗?那里有更多会分身的信使哦~
    好的!现在我们离开“深度王国”,坐上彩虹滑滑梯,滑到了一个更神奇的地方……
    transformer王国:会分身的信使们
    这里住着一位更任性的小公主,名字叫“下一个词公主”。
    她每天只说一句话:“接下来我要说什么?”
    谁猜对了,她就给一颗钻石糖;猜错了,她立刻哇哇大哭,洪水淹到脖子!
    这个王国太大了,普通信使跑一圈要一百年,根本来不及。
    于是国王请来了新品种的魔法信使,他们有三项绝技:
    1. 会分身(multi-head)
    2. 会同时问很多人意见(attention)
    3. 会把意见加起来再传(这就是那个着名的 q、k、v)
    新故事开始啦!
    有一天,公主说:“从前有一个很可爱的……”
    模型猜:“老巫婆!”
    公主当场爆炸大哭!(因为明明应该是“小猫咪”)
    输出层小红又一次第一个听到哭声:“啊啊啊错了20级伤心!”
    但这次,他没有只找一个人传消息。
    小红突然“啪!”地一声分裂成了8个小分身(8个头),
    每个分身都拿着一张不同的纸条,上面写着不同的问题:
    第1个分身问:“公主是不是在想毛茸茸的东西?”
    第2个分身问:“公主是不是在想会喵喵叫的东西?”
    ……
    第8个分身问:“公主是不是在想会吃鱼的东西?”
    他们同时冲向下一层的所有信使,大喊:
    “快!告诉我你们谁最懂公主现在在想什么!”
    下一层的信使们(就是上一句话的所有词)立刻举手:
    “我是‘从前’!”
    “我是‘有’!”
    “我是‘一个’!”
    “我是‘很’!”
    “我是‘可爱’!”
    每个信使心里有两把钥匙:
    ? 一把钥匙叫 key(k):写着“我是关于什么的钥匙?”(比如“可爱”这把钥匙上写着“毛茸茸+粉色+会卖萌”)
    ? 一把锁叫 query(q):是小红分身们的问题
    ? 还有一把礼物叫 value(v):真正的答案内容(“小猫咪”这个词本身)
    8个小红分身把自己的问题(query)拿去和每一把钥匙(key)对一下,
    越匹配就叫得越大声(attention分数越高!)
    “可爱”这把钥匙和“毛茸茸的东西?”匹配度97%!
    “可爱”和“会喵喵叫的东西?”匹配度94%!
    “从前”这把钥匙只匹配2%……几乎没人理他。
    于是,8个分身分别收集到了“最该听谁说话”的分数表。
    接着,他们冲到“礼物堆”里,只抱走分数最高的那些礼物(value),
    也就是“可爱”这个词里真正藏着的“小猫咪”信息!
    8个分身抱着一堆礼物跑回来,合并成一个大礼物箱,
    再交给后面真正的传声官(feedforward层)。
    传声官看完礼物箱,大喊:
    “原来公主想要‘小猫咪’!我们刚才猜老巫婆错得离谱!”
    现在,要把这20级伤心往回传,告诉每个词“你要为这次大哭负多少责”!
    伤心开始逆着刚才的路往回跑:
    先经过feedforward门 → 乘上门的开关灵敏度
    再回到8个分身的合并处 → 分成8股伤心
    每股伤心又沿着attention的路反着跑回去:
    ? “可爱”这个词收到超级大的伤心信号(因为attention分数最高)它立刻把自己的权重(v、k、q)调小一点,下次别再把“老巫婆”塞给公主
    ? “从前”只收到一点点伤心(attention分数几乎为0),它懒洋洋地说:“不关我事~”
    就这样,伤心像水流一样,精准地流向那些“最该负责”的词和连接上。
    下一次,当公主再说“从前有一个很可爱的……”
    “可爱”这个词已经学乖了,它拼命把“小猫咪”举得高高的,
    attention分数直接99.99%!
    模型自信满满地说:“小猫咪!”
    公主咯咯笑出声,钻石糖雨哗哗下!
    从此,transformer王国的信使们靠着会分身、会投票、会只给真正该负责的人背锅,
    让“下一个词公主”几乎再也不哭了。
    而这一整套“伤心精准传递大法”,有个很酷的名字:
    自注意力机制 + 反向传播的链式法则(进阶版)
    故事到这里,公主和她的分身信使们继续过着一天猜一亿句话的幸福生活。