【花師小哲】當代煉金術(神經網絡)前沿(23)——transformer涌現了傅里葉變換
為什么標題就只能這么長啊??赡芎芏嗳硕贾?strong>機器學習領域,特別是神經網絡的涌現能力了。不過這篇文章研究的涌現有些不一樣,在訓練過程中,作者發(fā)現transformer模型完全學會了用傅里葉變換解決同余加法問題:


1.涌現
還是先介紹涌現。
為什么我覺得大模型值得研究呢?一個很神奇的點就是涌現。我專欄中也經常提到這一點(雖然不一定用的這個詞)
這組圖很好的說明了涌現。在模型的規(guī)模沒有達到一定規(guī)模時,模型的一些能力只在某一個數值左右浮動(特別一些能力是在0左右浮動),在模型規(guī)模大到一定程度時這些能力就會突然提升。這些能力包括多步推理、上下文理解等,這些本來都是自然語言處理研究中很難的課題,但是大模型一出現(以ChatGPT為代表),這些問題甚至都是被順帶解決的。

這個現象非常神奇,說明大模型和小模型可能是有根本的差異的
昨天看了一些網絡文章和論文,才意識到這種現象其實不罕見的,例如我們常說的微觀和宏觀、溫度之類的等都體現出了涌現。包括復雜系統(tǒng)等,都存在一些涌現現象。

2.訓練過程的涌現
當然,本篇論文并不是說明上面這種隨著模型規(guī)模增大而出現的涌現現象。相反,作者僅僅用了單層transformer網絡,是個名副其實的小模型。本文研究的是訓練過程中的涌現。
作者想要這個小模型做一個很簡單的任務:同余加法,即計算(a+b)%c,可能有不懂編程的朋友,這里解釋一下,a、b和c都是整數,%符號代表取模,或者說,取余數。就是先計算a+b,然后除以c,要的是余數,例如(3+3)%4=2
可能大家說,哎,這不是很簡單嘛。確實,對我們來說確實很簡單,但是要知道神經網絡里是沒有加法、取模這些操作的,這些操作是要學的。就像你要教一個嬰兒加法一樣,對神經網絡并不是什么很簡單的問題。
然后作者就開始訓練了,一開始很正常的過擬合了,在訓練集上表現得很好,但是測試集上性能一直提不上去。然后,突然在某個時刻,測試集的準確率直接飆升到100%,這意味著:在這一刻,網絡完全學會了同余加法。這個能力就這樣涌現出來了。

3.這和傅里葉變換有什么關系?
可能大家會問,哎,做同余加法怎么扯上傅里葉變換了?事實上,這個問題確實可以用傅里葉變換來做,具體可以看圖:

做法是new bing告訴我的(我終于有new bing beta測試資格了),高數什么的早就忘掉了。
沒錯,經過訓練的神經網絡就在某一刻突然學會了用傅里葉變換來完成同余加法,相當于直接從小學生蛻變了大學生。

4.怎么學會的
其實transformer之所以強大,是因為已經被證明是圖靈完備的,所以能夠算出來其實并不出人意料,但涌現是出人意料的,為什么學著學著就真的學會了傅里葉變換呢?作者可能也知道量變引起質變,這個過程一定有什么在做鋪墊,于是作者嘗試做了些分析。
作者用逆向工程(這部分還是挺專業(yè)的,不展開)展開了研究,認為模型學習分為了三個階段:
(1)記憶。比較好理解,過擬合可能得主要原因是網絡在記憶訓練集
(2)形成電路。網絡概括出了一種機制,或者說網絡自己發(fā)現了規(guī)律。這時記憶仍然會影響網絡性能,所以性能還達不到100%。
(3)清理。將記憶清理掉,留下比較純粹的電路。
涌現就是在清理的過程中學會的。
這一觀點某種程度上也是很像我們人類的學習的,即從一些個性中發(fā)現共性,然后帶著共性去研究其他個性。