最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

【花師小哲】鑒定網(wǎng)絡(luò)熱門(?)AI(13)——從舊網(wǎng)絡(luò)到新網(wǎng)絡(luò)

2023-07-27 10:43 作者:花師小哲-中二  | 我要投稿

好久沒(méi)更新了,最近一些項(xiàng)目處理的差不多了,所以來(lái)寫一篇專欄,講講從一個(gè)神經(jīng)網(wǎng)絡(luò)到另一個(gè)神經(jīng)網(wǎng)絡(luò)的一些做法

1.為什么人們追求從一個(gè)(舊)網(wǎng)絡(luò)到另一個(gè)(新)網(wǎng)絡(luò)

說(shuō)到神經(jīng)網(wǎng)絡(luò),一個(gè)很讓人頭大的問(wèn)題是,我們想要獲得具有某種能力的神經(jīng)網(wǎng)絡(luò),似乎都需要從頭設(shè)計(jì)網(wǎng)絡(luò)、找數(shù)據(jù)集、訓(xùn)練。即使是在一些自監(jiān)督預(yù)訓(xùn)練方法出來(lái)之后,情況似乎也沒(méi)有太多好轉(zhuǎn),無(wú)非是大公司先預(yù)訓(xùn)練得到模型A,然后模型A在不同數(shù)據(jù)集上微調(diào)得到模型A1、A2等等,A1和A2應(yīng)對(duì)的場(chǎng)合又是不同的。到了ChatGPT為代表的大模型時(shí)代,雖然我們似乎可以通過(guò)prompt的方式來(lái)讓大模型輸出我們想要的東西,但很多具體問(wèn)題依然離不開(kāi)微調(diào)。多任務(wù)微調(diào)雖然很大程度上提升了泛化性能,但依然很難做到面面俱到。

這里存在的很大的問(wèn)題就是,一個(gè)網(wǎng)絡(luò)的知識(shí)是很難完全被另一個(gè)網(wǎng)絡(luò)(特別是架構(gòu)不同的網(wǎng)絡(luò))所繼承的,沒(méi)錯(cuò),就像我們每個(gè)人學(xué)知識(shí)都要從頭開(kāi)始一樣,目前也沒(méi)辦法把別人腦袋中的知識(shí)復(fù)制給我

如果能做到把一個(gè)網(wǎng)絡(luò)的能力復(fù)制給另一個(gè)網(wǎng)絡(luò),短期來(lái)看,能夠大量節(jié)省訓(xùn)練資源(畢竟新網(wǎng)絡(luò)是不需要再訓(xùn)練的);長(zhǎng)期來(lái)看,能夠?qū)崿F(xiàn)一個(gè)愿景——機(jī)器終身學(xué)習(xí)。

所以我們下面就來(lái)介紹一些探索吧

2.剪枝、量化

剪枝量化的目的實(shí)際上都是在讓模型變“小”,但是不改變大的網(wǎng)絡(luò)框架。

關(guān)于剪枝可以看這篇專欄:

【花師小哲】當(dāng)代煉金術(shù)(神經(jīng)網(wǎng)絡(luò))前沿(28)——給1750億參數(shù)模型剪枝吧

簡(jiǎn)單來(lái)說(shuō),我們一般的神經(jīng)網(wǎng)絡(luò)是密集連接的,但這不意味著每個(gè)連接實(shí)際上都是有用的,所以剪枝的目的就是把不重要或沒(méi)用的連接給取消掉,從而形成一個(gè)稀疏一些的模型,推理速度就上去了。

量化我個(gè)人并不是特別熟悉,但基本就是改變數(shù)據(jù)存儲(chǔ)的精度,例如從32位浮點(diǎn)數(shù)改到16位浮點(diǎn)數(shù)。據(jù)說(shuō)量化是最有效的神經(jīng)網(wǎng)絡(luò)加速優(yōu)化。


但是,大家可以看到,這兩種方法基本上是先訓(xùn)練出一個(gè)大模型,然后再對(duì)這個(gè)大模型做優(yōu)化操作(瘦身)

3.蒸餾、自蒸餾

剪枝和量化基本上只是在給網(wǎng)絡(luò)瘦身,相對(duì)來(lái)說(shuō)不夠靈活,也很難在兩個(gè)結(jié)構(gòu)差別很大的網(wǎng)絡(luò)架構(gòu)見(jiàn)傳播知識(shí),于是就有了知識(shí)蒸餾(后簡(jiǎn)稱蒸餾)

蒸餾有兩個(gè)網(wǎng)絡(luò),一個(gè)網(wǎng)絡(luò)是訓(xùn)練好的,稱為教師網(wǎng)絡(luò);另一個(gè)網(wǎng)絡(luò)是沒(méi)訓(xùn)練的或沒(méi)有充分訓(xùn)練的(或者說(shuō)待訓(xùn)練的),稱為學(xué)生網(wǎng)絡(luò)。就像老師教學(xué)生一樣,學(xué)生網(wǎng)絡(luò)的所有數(shù)據(jù)都是來(lái)自教師網(wǎng)絡(luò)。

具體來(lái)說(shuō),就是給定一個(gè)輸入X,先送給教師網(wǎng)絡(luò)得到輸出Y,然后我們用Y作為X的標(biāo)簽,就可以對(duì)學(xué)生網(wǎng)絡(luò)做有監(jiān)督微調(diào)了。

雖說(shuō)蒸餾一般來(lái)講是大的教師網(wǎng)絡(luò)蒸餾小的學(xué)生網(wǎng)絡(luò),但實(shí)際上可以非常靈活。對(duì)于大模型,也可以專注于蒸餾某一方面的能力,取自己所需。

雖然有時(shí)候蒸餾出來(lái)的學(xué)生網(wǎng)絡(luò)也會(huì)有分布跑偏的問(wèn)題,但大部分情況下學(xué)生網(wǎng)絡(luò)都能很好地繼承教師的性能,并且推理更快。

蒸餾實(shí)際上有大量很神奇的玩法,例如我們可以調(diào)轉(zhuǎn)方向,讓Y作為輸入,X作為輸出,就可以做到類似反向蒸餾的東西。


當(dāng)然,蒸餾最神奇的玩法可能就是自蒸餾了。想一想,如果我們讓一個(gè)網(wǎng)絡(luò)既作為教師網(wǎng)絡(luò)、又作為學(xué)生網(wǎng)絡(luò),會(huì)發(fā)生什么。如果套用人類的情況,我自己教授自己,那肯定不會(huì)產(chǎn)生新的知識(shí)嘛,似乎是沒(méi)什么意義的行為。然而,自蒸餾實(shí)際上是能夠提升自身性能的,也許可以類比到人類在復(fù)習(xí)時(shí)鞏固了知識(shí)或“溫故而知新”吧。不過(guò)至今自蒸餾依然充滿了謎團(tuán)。

4.集成、MoE

不管是量化、剪枝還是蒸餾,實(shí)際上性能往往會(huì)有所下降(也有上升的情況)。很好理解,畢竟是從一個(gè)大網(wǎng)絡(luò)瘦身或從一個(gè)大網(wǎng)絡(luò)到一個(gè)小網(wǎng)絡(luò)。那有沒(méi)有反過(guò)來(lái)的情況呢?有的,那就是“我們聯(lián)合”——集成

簡(jiǎn)單來(lái)說(shuō),就是我們訓(xùn)練N個(gè)弱模型,然后集合這N個(gè)模型的輸出(例如投票、贏者通吃等策略)得到一個(gè)總輸出。很多情況下,集成可以很大程度上提高性能。

雖然很早就有人用數(shù)學(xué)方法嚴(yán)格證明了“一些比隨機(jī)分類器好一點(diǎn)的分類器在集成后都可以成為強(qiáng)分類器”,但集成依然是充滿了謎團(tuán)的方法。

與集成相關(guān)的方法就是MoE了,可以參考這篇專欄:

【花師小哲】當(dāng)代煉金術(shù)(神經(jīng)網(wǎng)絡(luò))前沿(16)——語(yǔ)言模型的其他出路

簡(jiǎn)單來(lái)說(shuō),就是我們有N個(gè)專家網(wǎng)絡(luò),每個(gè)專家都有擅長(zhǎng)的工作,所以我們每次就挑選一些專家“開(kāi)會(huì)”,得到一個(gè)結(jié)果。從思想上來(lái)說(shuō)和集成差不多,更像是把幾個(gè)小網(wǎng)絡(luò)的聚合直接寫成了網(wǎng)絡(luò)架構(gòu)(MoE可以做到每一層都是集成的形式)


最近很多“小道消息”都在說(shuō)GPT-4可能是集成模型或MoE架構(gòu),這個(gè)確實(shí)有可能的。但是,有一點(diǎn)需要記住,不是說(shuō)8個(gè)模型的集成就有一個(gè)模型的8倍性能,集成雖然很有效,但提升依然是有上限的,并且受到每個(gè)被集成模型的性能影響。所以MoE的代價(jià)一般來(lái)說(shuō)就是超大的參數(shù)量。

5.Net2Net、參數(shù)共享

然后我們來(lái)介紹一下Net2Net吧。

Net2Net的想法是,我們何必通過(guò)從一個(gè)訓(xùn)練好的網(wǎng)絡(luò)中獲得輸出的形式來(lái)傳遞知識(shí),直接傳遞網(wǎng)絡(luò)參數(shù)不就好了嗎?

做法也很簡(jiǎn)單,關(guān)鍵思想就是等價(jià),或者說(shuō),用一個(gè)同樣作用的更大的結(jié)構(gòu)取代之間已經(jīng)訓(xùn)練好的結(jié)構(gòu)(就比如a+2b=a+b+b,這樣就從2個(gè)節(jié)點(diǎn)擴(kuò)展到3個(gè)節(jié)點(diǎn)了),然后在此基礎(chǔ)上訓(xùn)練,就不需要從頭開(kāi)始訓(xùn)練了。事實(shí)證明這種方法極大地節(jié)省了訓(xùn)練成本且效果往往比隨機(jī)初始化更好。

當(dāng)然,Net2Net也存在很多問(wèn)題,例如為了打破對(duì)稱性實(shí)際上新權(quán)值是需要加干擾的、不是所有的網(wǎng)絡(luò)架構(gòu)都是很好找等價(jià)網(wǎng)絡(luò)的方法的等。

Net2Net方法的極致可能是谷歌提出的GradMAX,然而GradMAX依然只能適用于MLPCNN。然而,現(xiàn)在神經(jīng)網(wǎng)絡(luò)基本上是Transformer的天下啊。

對(duì)于Transformer也不是沒(méi)人想過(guò)辦法,一個(gè)簡(jiǎn)單的方法就是StackBERTStackBERT發(fā)現(xiàn)不同層的attention矩陣都長(zhǎng)得差不多,不同架構(gòu)的attention矩陣也都長(zhǎng)得差不多,基本上注意力都是在周圍和開(kāi)頭(說(shuō)動(dòng)這里,補(bǔ)充兩點(diǎn)吧:1.什么是注意力attention。對(duì)于一句話,例如“旺財(cái)是一只白色的可愛(ài)的小狗”,“旺財(cái)”和“狗”的關(guān)系明顯更緊密,對(duì)我們理解句子也最有用,所以Transformer顯示計(jì)算一個(gè)句子中兩兩詞之間關(guān)系的密切程度,稱為attention;2.最近有一條消息是說(shuō)Transformer使用softmax可能是一個(gè)大bug,建議換成softmax_1,即一個(gè)詞可能不會(huì)和其他單詞有任何的關(guān)系[可能是寫錯(cuò)的詞或干擾詞],不過(guò)考慮到有FT-Transfromer這樣的架構(gòu),我認(rèn)為用哪個(gè)函數(shù)仁者見(jiàn)仁智者見(jiàn)智吧,甚至這波可能還是為了RetNet炒熱度,畢竟RetNet聲稱能代替Transformer并且放棄了softmax),所以我們就簡(jiǎn)單粗暴地直接復(fù)制現(xiàn)有層來(lái)進(jìn)行加深(反正Transformer結(jié)構(gòu)一般都像豆腐一樣整齊,操作起來(lái)也容易),反正實(shí)驗(yàn)做出來(lái)有用就好了。

不過(guò)在大模型上的嘗試實(shí)際上并不多。在Deepmind設(shè)計(jì)的2800億參數(shù)的Gopher(這個(gè)模型明明比GPT-3要大,但存在感真的很低)的附錄G(這玩意竟然有論文能找到)中提到了Net2Net,并嘗試從一個(gè)45億參數(shù)模型初始化了一個(gè)90億參數(shù)的模型,據(jù)說(shuō)效果比其他方法都好,然而就沒(méi)有后文了。

另一個(gè)做法相似的是一個(gè)中文大模型M6-10T,這是我目前見(jiàn)過(guò)的最大的模型了,有10T,也就是10萬(wàn)億參數(shù)(GPT-3是1750億,高了兩個(gè)數(shù)量級(jí)),M6-10T采用了MoE架構(gòu)、Deepspeed加速、512個(gè)GPU和類似于StackBERT的方法進(jìn)行訓(xùn)練,而且這個(gè)模型甚至是多模態(tài)模型,可以說(shuō)是buff疊滿了(雖然沒(méi)什么存在感)。不過(guò)說(shuō)是類似于StackBERT,是因?yàn)閷?shí)際上這種方法是用了在《Attention is all you need》中就說(shuō)過(guò)的共享參數(shù),和先訓(xùn)練小模型再用小模型初始化大模型有一些不同。

其他在自回歸語(yǔ)言模型上的嘗試就沒(méi)再找到了(畢竟Net2Net本身也不是那么主流的方法,線索到MSG方法的一篇論文就斷掉了)

6.模塊化

另一個(gè)想法就是模塊化。之前已經(jīng)有論文表明神經(jīng)網(wǎng)絡(luò)在訓(xùn)練過(guò)程中會(huì)自己構(gòu)建一些函數(shù),見(jiàn):

【花師小哲】當(dāng)代煉金術(shù)(神經(jīng)網(wǎng)絡(luò))前沿(23)——transformer涌現(xiàn)了傅里葉變換

所以我們可以設(shè)想,大模型實(shí)際上在內(nèi)部模擬了很多函數(shù),例如做加法的函數(shù)、做傅里葉變換的函數(shù)、做翻譯的函數(shù)等等。如果我們能精準(zhǔn)識(shí)別這些函數(shù),就可以做很多事情,例如做移植、用更高效的部件替換原有結(jié)構(gòu)(用什么結(jié)構(gòu)模擬加法啊,我直接給你做加法的代碼)。當(dāng)然,現(xiàn)在是做不到的,不然就沒(méi)有蒸餾什么事情了。

但還是有一些論文在模塊化的路上做了探索的,例如:

這里不展開(kāi)太多,基本思路是,我們先訓(xùn)練一個(gè)小模型,然后把它切分成N份,每份都用一個(gè)大網(wǎng)絡(luò)取代,得到N個(gè)“部分膨脹”的模型,然后我們就可以并行訓(xùn)練這N個(gè)“畸形”模型,然后把膨脹后的部分組成一個(gè)新的網(wǎng)絡(luò)。感覺(jué)有點(diǎn)像昆蟲的變態(tài)發(fā)育,成蟲盤稱為各個(gè)部分的營(yíng)養(yǎng)了(比喻不是很準(zhǔn)確)

7.總結(jié)

總的來(lái)說(shuō),人們還是想方設(shè)法地利用上老模型為新模型做些事情的,但是目前都存在很多問(wèn)題,大模型訓(xùn)練各自為營(yíng)的情況可能還要持續(xù)很久。

【花師小哲】鑒定網(wǎng)絡(luò)熱門(?)AI(13)——從舊網(wǎng)絡(luò)到新網(wǎng)絡(luò)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
上犹县| 临颍县| 新昌县| 克拉玛依市| 永仁县| 湘乡市| 麟游县| 深圳市| 即墨市| 龙陵县| 饶平县| 沙田区| 翼城县| 策勒县| 廊坊市| 会昌县| 玉树县| 红原县| 濮阳县| 高碑店市| 原平市| 颍上县| 金门县| 大石桥市| 静安区| 四川省| 萍乡市| 灯塔市| 本溪市| 宜兰市| 防城港市| 即墨市| 新竹市| 吉林市| 文山县| 康乐县| 漠河县| 溆浦县| 崇信县| 闽清县| 定结县|