【花師小哲】當代煉金術(神經(jīng)網(wǎng)絡)前沿(29)——Make RNN Great Again
雖然本系列專欄的名稱是當代煉金術(神經(jīng)網(wǎng)絡)前沿,但講的大部分都是大模型。當然,也沒辦法,這個就是前沿。雖然很多期都把某個知識點當做是常識了,但這里還是說一下,目前大家看到的大模型底層都是transformer架構,或者說attention機制。這個在很早之前的科普就提過:
【花師小哲】面向一般大眾的神經(jīng)網(wǎng)絡科普(2)-NLP領域
但,今天這篇同樣來自于谷歌的論文要做的事情就是:Make RNN Great Again。


1.講講幾個架構對比
transformer可以說是谷歌研究成果的集大成,似乎transformer就是一切神經(jīng)網(wǎng)絡架構的重點,即使是MoE等方法也不是推翻attention機制,只是在其他方向找出路罷了。
傳統(tǒng)上,計算機視覺用的是CNN,自然語言處理用的是RNN,而transformer可以取代這兩套架構,成為類似于大一統(tǒng)的底層架構。
然而并不是說這些傳統(tǒng)的方法就沒有用了,例如即使在Diffusion大行其道的時候,也有團隊在繼續(xù)研究GAN,為GAN正名。
這點對于RNN也是一樣,雖然transformer很強大,但RNN的各種變體——以LSTM和SSM為例,仍然在各種地方發(fā)揮著難以被替代的作用。
不過本文算是回歸初心,在原始的RNN基礎上進行修改

2.為什么需要重新研究RNN
雖然transformer很強大,但不代表它沒有劣勢,實際上,劣勢還是挺多的。
(1)transformer處理的序列總歸是有上限的。這個上限在設計網(wǎng)絡時就已經(jīng)定下來了,我們使用ChatGPT有輸入長度限制就是來源于此。雖然GPT-4大大擴展了這個數(shù)值,但總歸是有限制的,但如果我要處理非常、非常長的序列呢?即使我們有一些辦法能夠“延長”transformer能夠處理的序列長度,但總歸還是有上限。而RNN可以說是沒有上限的方法(雖然到后面很可能是會失控的)
(2)transformer計算復雜度高。因為transformer實際上可以看成是一種全連接圖神經(jīng)網(wǎng)絡。之前也講過,因為attention機制是要顯式地建立“個體”之間的聯(lián)系的,所以計算復雜度會很高,而RNN是一個個輸入進去的,下一個輸入只和上一個結果有關(雖然也不是只以來上一個輸入了),整體就比較簡單。當然transformer是可以靠并行來續(xù)命的,但從理論分析上來講,計算量還是擺在那里的
所以上,基于以上的分析,我們確實可以嘗試做一件事——Make RNN Great Again:


3.如何改進RNN
本文的核心方法非常簡單——線性化。
稍微有些神經(jīng)網(wǎng)絡基礎的朋友一定很熟悉激活函數(shù),例如sigmoid:

簡單來說,激活函數(shù)就是在每個神經(jīng)元“匯總”上一層的數(shù)值后對結果用一個函數(shù)處理一下,或者用簡單的式子表示:y=f(Ax)(A是一個矩陣,這里用了簡化的寫法)。我們可以看到,sigmoid函數(shù)是非線性的,這就意味著如果多套幾層的話會出現(xiàn)這樣一個算式:y=f(Af(Af(Ax))),如果f函數(shù)是非線性的,整體計算就很復雜了。
那么有朋友就問了:那我們把非線性函數(shù)去掉不就可以了。
沒錯,谷歌也是這么想的。那問題來了,為什么之前一直沒想著去掉呢?
一個很顯而易見的觀點是:非線性函數(shù)一般意味著更高的計算復雜度,也往往有著更好的性能。雖然在深度網(wǎng)絡中人們常用ReLU(RNN中還常用tanh),但ReLU本身其實也不是線性函數(shù),只是有線性部分。
另一個點是:我們可以證明使用tanh或sigmoid的單層RNN是圖靈完備的。可能就是這一點很吸引人,導致一直沒有去掉。
但谷歌的實驗證明,我們可以去掉非線性函數(shù),在某些情況下表現(xiàn)會更好。

4.線性化帶來的優(yōu)勢
線性化之后,很多事情就好做了:
(1)我們觀察之前的式子y=f(Ax),如果f(x)=x,整個式子就是y=Ax,那么多加幾層就是y=(A^N)x。哎,是不是感覺計算簡單多了。并且,學過線性代數(shù)的朋友應該看出來了,如果我們把A對角化是不是計算就更簡單了。什么,你說不是所有矩陣都可以對角化的?沒有關系,我們可以變到復數(shù)域去做。
(2)復數(shù)域的重新構筑。變到復數(shù)域之后,復數(shù)并不是很好處理,但復數(shù)和實數(shù)并不是完全分割的(例如歐拉公式),所以我們可以改變一下整個式子的形式,這樣我們就有了可以訓練的參數(shù)了。與此同時,這里還用了一些優(yōu)美的數(shù)學在某種程度上解決梯度爆炸、梯度消失等問題(所以去非線性沒那么簡單?。?/p>
(3)并行化。這樣做之后我們也可以對RNN做并行,進一步提升速度

5.結語
OK,再經(jīng)過這一套理論水平max的連招后,RNN變得煥然一新,但是這樣就可以和attention-based模型抗衡了嗎?很可惜,有人做實驗證明還有差距。
不過畢竟RNN還是有可以處理無限長序列等優(yōu)勢,只能說未來可期,莫欺少年窮,我們都有光明的未來。
【花師小哲】當代煉金術(神經(jīng)網(wǎng)絡)前沿(29)——Make RNN Great Again的評論 (共 條)
