“ 學(xué)習(xí)是一個從圍觀到宏觀,從宏觀到微觀的一個過程 ” 學(xué)習(xí)大模型技術(shù)也有幾個月的時間了,之前的學(xué)習(xí)一直是東一榔頭,西一棒槌,這學(xué)一點(diǎn)那學(xué)一點(diǎn),雖然弄的亂七八糟,但對大模型技術(shù)也算有了一個初步的認(rèn)識。 因此,今天就來整體梳理一下大模型技術(shù)的框架,爭取從大模型所涉及的理論,技術(shù),應(yīng)用等多個方面對大模型進(jìn)行梳理。 01 — 大模型技術(shù)梳理 這次梳理大模型不僅僅是大模型本身的技術(shù),而是一個以大模型為核心的涉及到多個方面的理論,技術(shù)和應(yīng)用實(shí)踐,也可以說是對自己學(xué)習(xí)大模型技術(shù)的總結(jié)吧。 話不多表,下面開始進(jìn)入正題。 首先,大家應(yīng)該明白一件事,大模型技術(shù)是人工智能技術(shù)的一個分支,是目前主流的一個研究方向,但并不是唯一的方向。 人工智能技術(shù)是一個通過某種技術(shù)手段人為的創(chuàng)建一個具有類人智能的系統(tǒng)(軟件或硬件),而大模型技術(shù)是一種仿造人類學(xué)習(xí)進(jìn)化的一種方式,使用深度學(xué)習(xí)(機(jī)器學(xué)習(xí))算法模仿人類大腦神經(jīng)元,來實(shí)現(xiàn)智能的一種方式,其主要載體是神經(jīng)網(wǎng)絡(luò)。 神經(jīng)網(wǎng)絡(luò)之所以得到發(fā)展的原因是因為,基于神經(jīng)網(wǎng)絡(luò)架構(gòu)進(jìn)行預(yù)訓(xùn)練之后,神經(jīng)網(wǎng)絡(luò)會產(chǎn)生一種無法解釋的涌現(xiàn)能力,而這個涌現(xiàn)能力特別像是具有了智能一樣。 神經(jīng)網(wǎng)絡(luò)模型架構(gòu) 既然是模仿神經(jīng)網(wǎng)絡(luò),那么就需要一種深度學(xué)習(xí)模型來模仿人類大腦神經(jīng)系統(tǒng),比如CNN(卷積神經(jīng)網(wǎng)絡(luò)),RNN(循環(huán)神經(jīng)網(wǎng)絡(luò)),以及目前主流的Transformer模型,還有LSTM,ResNet,GANs等。 神經(jīng)網(wǎng)絡(luò)的主要結(jié)構(gòu)為一個輸入層,一個輸出層,以及隱藏層(一個或多個層組成),不同網(wǎng)絡(luò)層之間使用全連接的方式進(jìn)行連接,每一個圓都代表著一個神經(jīng)元,如下圖所示: 在神經(jīng)網(wǎng)絡(luò)中,除了輸入/輸出層之外,每一個神經(jīng)元都有其參數(shù),神經(jīng)網(wǎng)絡(luò)的效果就是由這些參數(shù)值決定的。 神經(jīng)網(wǎng)絡(luò)模型通過一種叫正向傳播,損失計算和反向傳播的方式來調(diào)整神經(jīng)網(wǎng)絡(luò)模型中每個神經(jīng)元的參數(shù)。 通過把大量的訓(xùn)練數(shù)據(jù)輸入到神經(jīng)網(wǎng)絡(luò)中,讓神經(jīng)網(wǎng)絡(luò)進(jìn)行“學(xué)習(xí)”(不斷的調(diào)整參數(shù)),來達(dá)到類智能的能力。 不同神經(jīng)網(wǎng)絡(luò)的架構(gòu)和實(shí)現(xiàn)有所不同,但其核心點(diǎn)都是基于此模型實(shí)現(xiàn)的,對想學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的朋友來說,先學(xué)會基礎(chǔ)的神經(jīng)網(wǎng)絡(luò)架構(gòu),然后再針對不同的神經(jīng)網(wǎng)絡(luò)模型進(jìn)行深化是最好的選擇。 目前的大模型主要采用的是預(yù)訓(xùn)練的方式來實(shí)現(xiàn)智能的,簡單來說就是給神經(jīng)網(wǎng)絡(luò)模型一堆資料,讓它自己學(xué),自己看,自己總結(jié);其中給答案的叫做監(jiān)督學(xué)習(xí),沒答案的叫無監(jiān)督學(xué)習(xí)。 然后根據(jù)不同的任務(wù)需求,又設(shè)計出用來解決不同類型任務(wù)的神經(jīng)網(wǎng)絡(luò),比如分類任務(wù),圖片處理任務(wù),自然語言處理任務(wù)等。 至于大模型技術(shù)細(xì)節(jié)方面的東西,就不詳細(xì)描述了,感興趣的可以自己學(xué)習(xí),比如編碼器,損失計算和反向傳播怎么實(shí)現(xiàn)等。 再有,設(shè)計并訓(xùn)練一個完整可用的神經(jīng)網(wǎng)絡(luò)模型是一個復(fù)雜的工程,比如模型的設(shè)計,訓(xùn)練數(shù)據(jù)的收集與處理,損失函數(shù)與反向傳播算法的設(shè)計,模型過擬合,欠擬合等問題。 而且隨著模型規(guī)模的增大,模型的訓(xùn)練難度成幾何式增長,比如分布式訓(xùn)練,并行計算等問題;以及為了提升大模型的學(xué)習(xí)效率,節(jié)約成本而設(shè)計的強(qiáng)化學(xué)習(xí),遷移學(xué)習(xí)等。 最后,為了使得大模型更像人,也為了實(shí)現(xiàn)真正的AGI(通用人工智能),現(xiàn)在多模態(tài)大模型大行其道,而多模態(tài)大模型技術(shù)比傳統(tǒng)大模型的技術(shù)復(fù)雜度又上升了不止一個臺階。 基于知識庫的向量檢索——RAG 大模型技術(shù)雖然很強(qiáng)大,但其有幾個明顯的缺點(diǎn),第一就是知識是有限制的,因為采用的是預(yù)訓(xùn)練方式,因此大模型的知識最多只能到訓(xùn)練開始的時間節(jié)點(diǎn),之后產(chǎn)生的新的知識大模型無法獲取。 其次,由于訓(xùn)練大模型的成本問題,導(dǎo)致很多企業(yè)無法承擔(dān)大模型的訓(xùn)練成本,因此只能使用第三方的大模型,但第三方大模型沒有在特定領(lǐng)域的數(shù)據(jù)上進(jìn)行訓(xùn)練或微調(diào),因此,其表現(xiàn)能力一般。 這時RAG就出現(xiàn)了,RAG中文是檢索增強(qiáng),是通過外掛知識庫的方式,提問大模型之前先從向量數(shù)據(jù)庫中查詢數(shù)據(jù),然后一起輸入到大模型,這樣大模型就相當(dāng)于有了一個外部資料庫,遇到不懂的問題就可以通過查資料的方式解決。 以目前的技術(shù)來說,RAG是大模型技術(shù)的一個重要節(jié)點(diǎn),即是大模型能力范圍的擴(kuò)展,也是對大模型短板的補(bǔ)充。 微調(diào)與提示詞工程 我們一般使用的大模型都是預(yù)訓(xùn)練模型,也就是用某些數(shù)據(jù)集訓(xùn)練過的模型;但這些模型一般情況下只會在特定領(lǐng)域表現(xiàn)出色,但如果用來解決自己的實(shí)際問題可能就不太好用了。 這時怎么讓預(yù)訓(xùn)練模型在其它任務(wù)中表現(xiàn)更好就是一個值得思考的問題,而這就是微調(diào)與提示詞工程存在的意義。 微調(diào) 微調(diào)從技術(shù)手段上來說和模型訓(xùn)練沒有區(qū)別,只不過微調(diào)是在相似任務(wù)的預(yù)訓(xùn)練模型的基礎(chǔ)之上,通過少量的數(shù)據(jù)對模型參數(shù)進(jìn)行調(diào)整,使得其能夠更加適應(yīng)當(dāng)前任務(wù)的一種方式。由于其成本低,對資金和技術(shù)要求要比完全重新設(shè)計和訓(xùn)練一款模型要低的多。 因此,微調(diào)存在的意義是為了節(jié)約成本和降低門檻,如果資金充足的情況下,根據(jù)任務(wù)需求設(shè)計并訓(xùn)練一款模型是最好的選擇,微調(diào)是退而求其次的一種方式。 提示詞工程 如果說微調(diào)是為了讓大模型去適應(yīng)特定的任務(wù),那么提示詞的作用就是怎么更好的使用一個大模型。 根據(jù)研究發(fā)現(xiàn),對待同樣的問題使用不同的提示詞有時會得到完全不一樣的效果,因此根據(jù)這一現(xiàn)象就提出了提示學(xué)習(xí)的方法,具體的可以看之前的問題——提示學(xué)習(xí)。 用人類來舉例就是,假如有人問你吃飯了嗎這種簡單的問題,你可以下意識的回答,而且可以回答的很好;大模型也是如此,如果你問大模型很簡單的問題,它也能回答的比較好。 但如果問到一些復(fù)雜的問題就需要更加準(zhǔn)確的描述,比如說根據(jù)當(dāng)前的就業(yè)環(huán)境,從經(jīng)濟(jì),市場,貿(mào)易,國際局勢等多個方面來分析一下產(chǎn)生當(dāng)前情況的原因,以及后續(xù)的應(yīng)對方法。 這種復(fù)雜的問題,不論是問人還是問大模型,你說的越準(zhǔn)確,它回答的才能更好,這就是提示詞存在的意義。 智能體Agent 在前面的描述中,神經(jīng)網(wǎng)絡(luò)架構(gòu)講的是怎么構(gòu)建一個大模型,知識庫是怎么補(bǔ)充和強(qiáng)化大模型,微調(diào)和提示詞是怎么更好的使用大模型,那么智能體就是真正的使用大模型,研究大模型的具體應(yīng)用。 如果把大模型比做人類的大腦,那么智能體就是大模型的手和腳。 在此之前使用大模型,我們能夠讓它回答問題,寫文章,生成圖片和視頻,但這都是大模型天生具備的能力,就類似于人類可以寫寫畫畫一樣。 但如果讓大模型完成更加復(fù)雜的任務(wù),這時就需要借助外部工具,比如外出旅行需要設(shè)計旅行路線,定酒店和車票等。 這種任務(wù)就完全超出大模型或者人類本身的能力圈,如果想完成這些任務(wù)就需要借助外部工具,比如說手機(jī)APP。 智能體就是大模型+外部工具實(shí)現(xiàn)的一種能夠獨(dú)自分析和解決復(fù)雜任務(wù)的一種載體,利用大模型的獨(dú)立規(guī)劃能力,讓它根據(jù)自己的判斷去調(diào)用外部工具完成任務(wù)。 使用的技術(shù)主要有function call,langchain等;如上圖所示,大模型使用function call的方式調(diào)用外部工具,使用自身能力完成規(guī)劃和行動,并且由于大模型沒有足夠的記憶能力,需要增加記憶模塊來記錄對復(fù)雜任務(wù)的分析過程。 目前,大模型解決復(fù)雜任務(wù),主要通過思維鏈(CoT)的方式來實(shí)現(xiàn)對復(fù)雜問題的分解。 langchain是一種人工智能開發(fā)框架,它封裝了大部分調(diào)用大模型的細(xì)節(jié),以及其它輔助功能,比如文檔的加載,多個大模型的鏈?zhǔn)秸{(diào)用,提示詞模板的封裝等,與其類似的還有LlamaIndex等。 總結(jié) 從大的方向上來說,大模型從技術(shù)到應(yīng)用,主要涉及到以上幾個大的模塊;而每個模塊又涉及到大量的技術(shù)和細(xì)節(jié)。比如打造不同任務(wù)的神經(jīng)網(wǎng)絡(luò)模型,強(qiáng)化學(xué)習(xí),遷移學(xué)習(xí),知識蒸餾,分布式訓(xùn)練與存儲等;以及RAG使用的向量檢索,向量數(shù)據(jù)庫,語義理解等,還有復(fù)雜任務(wù)的思維鏈(CoT),模型訓(xùn)練使用的LoRa等微調(diào)方法。 還有多模態(tài)模型中的知識對齊,數(shù)據(jù)融合等復(fù)雜技術(shù)。 基于大模型開發(fā)的人工智能機(jī)器人,感興趣的可以點(diǎn)擊查看: 因此,大模型技術(shù)到應(yīng)用到學(xué)習(xí)是一個系統(tǒng)性的復(fù)雜過程,中間涉及到無數(shù)的技術(shù)細(xì)節(jié)和理論,并且還在不斷的產(chǎn)生新的技術(shù)和理論。 千里之行,始于足下。 |
|