從做菜的角度來更形象的理解什么是大模型的參數,訓練原理與過程,以及為什么要訓練? 原創
在前面的??大模型參數的文章??中講了什么是大模型的參數,以及大模型為什么要訓練;
不過那個講的比較抽象,這里就用一個更形象的例子來解釋一下大模型的參數到底是什么,以及訓練的原理。
01、大模型和廚師
從我們使用者的角度來說,大模型就是一個黑盒,它需要輸入,然后給出一個輸出。
如下圖就是大模型的黑盒模型:
而從我們使用上來看,基本上就是一個聊天框,然后我們輸入文字/圖片/視頻等,然后大模型給我們一個輸出。
而這種模式和我們去飯店吃飯一樣,我們到飯店之后點菜,然后廚師就會把我們的菜做好,而廚房對我們來說也是一個黑盒。
大模型那么多參數是干什么的呢?廚師又是怎么做菜的呢?
如果把沒有訓練過的大模型比作一個新東方烹飪學校的學生;那么剛開始這個學生并不會做菜,如果你讓他做菜,那么他只能根據自己的感覺亂七八糟的一通操作。
這個就是初始化的大模型,它雖然可以輸出結果,但它輸出的結果亂七八糟。
所以學生需要去學習怎么做菜;不論會不會做飯的人應該都知道,炒菜需要控制火候與調料,不同的菜需要不同的火候和調料。
火候有大火小火中火,調料有必須的蔥姜蒜,還有鹽,辣椒,雞精,麻辣蝦,油等等。
做菜的時候,不同的菜需要不同的搭配,而且需要不同的火候和調料;比如,西紅柿炒蛋需要有西紅柿和雞蛋,然后調料需要有鹽,也可以放蔥姜蒜;
而如果做辣椒炒肉,那么就需要有肉和辣椒,然后口味重的人就可以多放一點辣椒和鹽,口味清淡的人就可以少放一點。
對比到大模型也是如此,廚師做菜的材料,調料與火候是廚師的參數;而大模型也有自己的參數,比如權重,偏置,卷機網絡的卷積核,嵌入矩陣,損失函數參數,激活值,參數梯度,訓練輪次等。
從技術等角度來說,大模型的參數就是大模型的一些變量,之所以是變量是因為這些參數的值并不是固定的,而是可以變化的;
就像做菜一樣,鹽可以多放一點,也可以少放一點;并不是每次必須放多少鹽。
02、做菜與大模型的訓練
專業的廚師學習做菜時,會測試不同的菜品放不同含量的調料會有什么樣的效果,比如放一克鹽和放十克鹽,放蔥姜蒜和不放蔥姜蒜在口味上的區別。
然后經過很多次的測試之后,廚師就知道做什么菜需要放多少鹽,放多少辣椒,然后口味會是什么樣。
而大模型的訓練也是如此,大模型是基于神經網絡的架構而開發的;而一個大模型有很多神經網絡層,每一層又有很多的神經元節點;
那么,不同的神經元節點的權重和偏置,會對其它神經元以及神經層會產生什么樣的影響及效果?
不同神經網絡的架構的參數又會有什么樣的影響?比如卷積神經網絡的卷積層的個數,多一層和少一層的區別?如果是循環神經網絡呢?
而這些問題都是需要經過大量的數據訓練,然后給大模型找到一個最優的參數值。
而具體怎么訓練呢?
比如第一次訓練,所有神經元的權重都是1,然后生成了一個結果;這就類似于第一次做菜,所有的調料都放1克,然后做出之后嘗嘗好不好吃。
而因為神經網絡是有層的,這樣數據在一層一層神經網絡之間的傳遞就叫做正向傳播。
當用1克調料把“菜”做出來之后,嘗了一下發現鹽放少了;這時第二次做菜的時候,就可以把鹽多放一點,比如放四克或五克。
而大模型畢竟不是人,所以需要有一個方法來測試它做的“菜”是否合格,而這個東西就是損失差,損失差越大,說明輸出效果越差,“菜”做的越差。
而具體的損失差怎么計算,不同的大模型和架構有不同的方法,比如交叉熵損失。
而這時,就需要告訴大模型做的“菜”不好吃,這個告訴的過程就叫做反向傳播。
廚師知道菜做的不好吃的時候,就可以直接調整下次放調料的數量和種類;而大模型也有這種類似的功能,這個功能就是優化器,優化器的功能就是去調整大模型的參數,下次把“鹽”放多一點,“辣椒”放少一點。
最小二乘法損失函數
而這個鹽和辣椒就是大模型中的權重,偏置,損失函數參數等參數。
而訓練次數就是廚師鍛煉做菜的次數,可能是十次,也可能是一百次,一千次。
所以說,廚師訓練是不斷的調整其調料的數量和含量;大模型的訓練本質上也是在不斷的去調整它的參數。
等廚師全部學會之后,還會找一個專業的老師去評價他做的菜;而在大模型里面,這個就是大模型的評估函數,去測試其效果。
當然,大模型并不是參數和訓練次數越多越好,最重要的是合適。
這就是大模型的參數以及訓練的過程及原理。
本文轉載自公眾號AI探索時代 作者:DFires
原文鏈接:??https://mp.weixin.qq.com/s/oZEmLJBoCaHlkyA-6j1ZTw??
