怎么設(shè)計(jì)一個(gè)自己的大模型?設(shè)計(jì)一個(gè)大模型需要哪些能力? 原創(chuàng)
?“ 自己設(shè)計(jì)并實(shí)現(xiàn)一個(gè)大模型,才能對(duì)大模型技術(shù)有更加深刻的體會(huì)”
對(duì)學(xué)習(xí)大模型技術(shù)的人來(lái)說(shuō),大家都想體驗(yàn)自己訓(xùn)練和微調(diào)一個(gè)模型,但受限于自身?xiàng)l件,可能很多人無(wú)法達(dá)成這個(gè)目的;但不知道有人是否思考過(guò),能否自己設(shè)計(jì)一個(gè)模型,根據(jù)自己的想法去落地一個(gè)大模型。
當(dāng)然,這個(gè)大模型也不一定非要體積特別大,也可以是一個(gè)參數(shù)規(guī)模較小的模型。那么應(yīng)該怎么實(shí)現(xiàn)它呢?
設(shè)計(jì)一個(gè)大模型的思路
怎么設(shè)計(jì)一個(gè)大模型,不知道大家有沒(méi)有思考過(guò)這個(gè)問(wèn)題,就是自己從零開(kāi)始,一步一步地設(shè)計(jì)并完善一個(gè)模型。
那具體應(yīng)該怎么做呢?
對(duì)有過(guò)產(chǎn)品開(kāi)發(fā)經(jīng)驗(yàn)的人來(lái)說(shuō),設(shè)計(jì)與開(kāi)發(fā)一個(gè)產(chǎn)品,一般會(huì)有一個(gè)完善的流程;因此,設(shè)計(jì)一個(gè)大模型也不例外。
設(shè)計(jì)一個(gè)大模型首先要做的就是需求采集,簡(jiǎn)單來(lái)說(shuō)就是你想要一個(gè)什么樣的大模型? 也可以說(shuō)你想讓這個(gè)大模型實(shí)現(xiàn)什么樣的功能?
比如讓這個(gè)模型實(shí)現(xiàn)一個(gè)分類(lèi)任務(wù),又或者讓它能夠回答問(wèn)題,總結(jié)會(huì)議等;不要一上來(lái)就想做那么大,那么復(fù)雜;先從一個(gè)小功能開(kāi)始,去了解一個(gè)模型的實(shí)現(xiàn)過(guò)程。

有了需求之后,還要做什么?做需求評(píng)審,也就是說(shuō)這里面哪些需求是合適的,哪些是不合適的;比如功能上是否有沖突,技術(shù)上是否能實(shí)現(xiàn)等等。
當(dāng)然,更多關(guān)于產(chǎn)品開(kāi)發(fā)流程的內(nèi)容這里就不多說(shuō)了;我們今天主要討論的是技術(shù)問(wèn)題。
有了需求之后,我們需要找到一個(gè)合適的機(jī)器學(xué)習(xí)模型;比如決策樹(shù),支持向量機(jī),神經(jīng)網(wǎng)絡(luò)模型等。
我們就以神經(jīng)網(wǎng)絡(luò)模型來(lái)說(shuō),是選擇一個(gè)現(xiàn)有的模型架構(gòu),比如Transformer,BERT,RNN等;還是自己設(shè)計(jì)一個(gè)新的架構(gòu)模式,當(dāng)然根據(jù)大部分人的水平來(lái)看,還是選擇現(xiàn)有的架構(gòu)比較靠譜一點(diǎn)。
所以,這一步我們需要根據(jù)自己的需求選擇一個(gè)能夠?qū)崿F(xiàn)需求的神經(jīng)網(wǎng)絡(luò)架構(gòu)模型。
ok ,現(xiàn)在需求確定了,神經(jīng)網(wǎng)絡(luò)模型有了;那么怎么把這個(gè)神經(jīng)網(wǎng)絡(luò)架構(gòu)與自己的需求結(jié)合起來(lái)?
比如說(shuō),要想實(shí)現(xiàn)你的需求,需要設(shè)計(jì)一個(gè)多少層的神經(jīng)網(wǎng)絡(luò)?每個(gè)網(wǎng)絡(luò)層的作用是什么? 應(yīng)該實(shí)現(xiàn)哪些功能,用哪些算法去實(shí)現(xiàn)?可能存在哪些問(wèn)題?
比如說(shuō)卷積神經(jīng)網(wǎng)絡(luò)架構(gòu),那幾層需要對(duì)圖片進(jìn)行卷積,卷積參數(shù)有哪些?卷積到什么程度等等。

再有,輸入層怎么設(shè)計(jì),輸出層怎么設(shè)計(jì)?
神經(jīng)網(wǎng)絡(luò)模型的第一層就是輸入層,它需要接收和處理來(lái)自外部的訓(xùn)練數(shù)據(jù)和用戶數(shù)據(jù);因此第一層主要的任務(wù)就是數(shù)據(jù)處理。
神經(jīng)網(wǎng)絡(luò)模型的最后一層就是輸出層,輸出層的作用是什么?
輸出層的作用是把神經(jīng)網(wǎng)絡(luò)處理之后的數(shù)據(jù)轉(zhuǎn)換為需要的格式,比如文字,圖片,視頻等多種格式的數(shù)據(jù);而在神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)完成之后,與用戶交互的只有輸入層與輸出層,中間的多層網(wǎng)絡(luò)就是一個(gè)黑盒模型,對(duì)用戶來(lái)說(shuō)是完全不可見(jiàn)的。
好,現(xiàn)在神經(jīng)網(wǎng)絡(luò)架構(gòu)有了,神經(jīng)網(wǎng)絡(luò)也有了,輸入輸出層也有了;那么,怎么設(shè)計(jì)損失函數(shù)?因?yàn)閾p失函數(shù)是模型訓(xùn)練的重要環(huán)節(jié)之一;有了損失函數(shù),模型在訓(xùn)練過(guò)程中才知道不同的參數(shù)應(yīng)該訓(xùn)練到什么程度。

有了損失函數(shù)之后,還需要有激活函數(shù),激活函數(shù)又應(yīng)該怎么設(shè)計(jì)?
所謂的激活函數(shù),就是神經(jīng)網(wǎng)絡(luò)中神經(jīng)元是否會(huì)向下一個(gè)神經(jīng)元傳遞“突觸”;其實(shí)說(shuō)白了,激活函數(shù)就是正向傳播的一種實(shí)現(xiàn)手段,正向傳播的過(guò)程中,激活函數(shù)發(fā)揮著不可替代的作用。
ok,經(jīng)過(guò)以上的努力,一個(gè)神經(jīng)網(wǎng)絡(luò)模型的雛形已經(jīng)基本具備了;但其中還少了一個(gè)環(huán)節(jié),那就是反向傳播。
反向傳播算法可以說(shuō)是神經(jīng)網(wǎng)絡(luò)模型中非常重要的一個(gè)節(jié)點(diǎn),沒(méi)有反向傳播,大模型就無(wú)法做到參數(shù)調(diào)整,那么預(yù)訓(xùn)練就成了一個(gè)徹頭徹尾的笑話。所以,反向傳播也是一個(gè)模型必不可少的一個(gè)環(huán)節(jié)。
當(dāng)然,上面說(shuō)的這些都是純理論方面的東西,也就是設(shè)計(jì)一個(gè)神經(jīng)網(wǎng)絡(luò)的基本步驟;讀者也可以根據(jù)以上步驟,自己思考實(shí)現(xiàn)一個(gè)神經(jīng)網(wǎng)絡(luò)模型。
但理論畢竟只是理論,任何天上飛的理念都要有落地的實(shí)現(xiàn);即使選擇了合適的模型架構(gòu),也設(shè)計(jì)好了神經(jīng)網(wǎng)絡(luò)模型,輸入層,輸出層,激活函數(shù),損失函數(shù)等;但具體怎么實(shí)現(xiàn),用哪種算法實(shí)現(xiàn),是否還能進(jìn)行優(yōu)化?

這時(shí)用戶就需要根據(jù)自己的需求與存在的問(wèn)題進(jìn)行架構(gòu)和技術(shù)上的調(diào)整或優(yōu)化。
總之,設(shè)計(jì)和實(shí)現(xiàn)一個(gè)模型是一家大模型服務(wù)公司的核心技術(shù),也是其立足的根本;當(dāng)然,理論是一回事,現(xiàn)實(shí)是另一回事,即使使用同樣的模型架構(gòu),可能在不同的企業(yè)會(huì)得到不完全相同的結(jié)果。
比如,全世界有很多家做模型服務(wù)的企業(yè)都在搞Transformer模型,但能做到像openAI那么強(qiáng)的卻沒(méi)幾個(gè)。
而且,真正從事大模型設(shè)計(jì)與實(shí)現(xiàn)的人,大部分都具備較強(qiáng)的數(shù)學(xué)功底;原因就在于大模型就是通過(guò)數(shù)學(xué)對(duì)人腦進(jìn)行的抽象。
?
本文轉(zhuǎn)載自公眾號(hào)AI探索時(shí)代 作者:DFires

















