主頁 >  其他 > 通俗直觀介紹ChatGPT背后的大語言模型理論知識

通俗直觀介紹ChatGPT背后的大語言模型理論知識

2023-05-28 08:51:05 其他

“AI 的 iPhone 時刻到來了”,非演算法崗位的研發同學'被迫'學習 AI,產品崗位的同學希望了解 AI,但是,很多自媒體文章要么太嚴謹、科學,讓非科班出身的同學讀不懂;要么,寫成了科幻文章,很多結論都沒有充分的邏輯支撐,是‘滑坡推理’的產物,這篇文章從底層講起,卻不引入太多概念,特別是數學概念,讓所有人都能對大模型的核心概念、核心問題建立認知,文章末尾也為需要嚴肅全面地學習深度學習的人給出了建議,

關于以 ChatGPT 為代表的大語言模型(LLM),相關介紹文章、視頻已經很多,演算法部分,約定俗成地,還是先來一段貫口,當前我們說的 LLM,一般代指以 ChatGPT 為代表的基于 Generative Pre-trained Transformer 架構的自然語言處理神經網路模型,顧名思義,它是個以預訓練技術為核心的模型,是個生成模型,同時它是Transformer這個編碼-解碼模型的解碼部分,

圖片

不管你能不能看懂,它就是這張圖的右邊部分,到了這里,非基礎研究、應用研究的同學就開始在聽天書了,讀這篇文章的這一部分,大家是為了’學到‘知識,而不是為了’被懂演算法的同學咬文嚼字扣細節給自己聽,被秀一臉,留下自己一臉茫然‘,大家的目標是‘學習’為首,‘準確’為輔,那我就用不嗑細節的‘人話’跟大家講一講,什么是自然語言處理大模型,雖然,這些內容就僅僅是’畢業生面試應用研究崗位必須完全答對‘的檔次,但是,‘知之為知之,不知為不知,是知也’,大家如果不懂,是應該看一看的,

 

1 編解碼與表示學習

什么是自編碼器(autoencoder,encoder-decoder model)?通俗地說,用拍攝設備,錄制視頻,錄制成了 mp4 檔案,就是采集并且 encode;你的手機視頻播放器播放這個視頻,就是 decode 視頻并且播放,做 encode-decode 的模型,就是編碼-解碼模型,很明顯,編碼模型和解碼模型是兩個模型,但是,他們是配對使用的,你不能編碼出一個.avi 檔案,然后用只支持.mp4 的解碼器去解碼,

在深度學習領域里,下面這個就是最簡單的編碼-解碼模型示意圖,f 函式是編碼器,把輸入 x 變成某個叫做 h 的東西,g 是解碼函式,把編碼出來的東西,解碼成輸出 r,

圖片

那么,最簡單的編碼器,就是什么都不干:f(x)=x,h=x,r=g(f(x))=h,輸入‘Tom chase Jerry’,輸出就是‘Tom chase Jerry’,顯然,這樣的字編碼器不需要訓練,并且,也沒有任何用處,

如果,輸入‘Tom chase Jerry’,輸出是‘湯姆追逐杰瑞’,那么這個自編碼器就完成了機器翻譯的任務,我們人類可以做翻譯,實際流程上,也跟這個差不多,那么,我們人類是怎么做到的呢?我們并不是以‘做翻譯’為唯一的目標去學習語言的,我們會學習‘單詞’、‘語法’、‘語言所表達的常識’這些語言之下最基礎的‘特征’的‘表示’,當我們學會了被表達的事物和它在不同語言中的表示之后,我們就能做翻譯這件事情了,我們仔細審視一下這個程序,我們至少做了兩件事情:

1 ) 學會被各種語言所表示的‘東西’,這里我們稱之為世界知識 (world knowledge),它包括事實性知識 (factual knowledge) 和常識 (commonsense),其中包括,學會至少兩門語言里表達世界知識的單詞和語法,

2)學會按別人的要求去執行翻譯這個任務,

那么,這兩件事情的第一件,就是 GPT 的第二個單詞,Pre-train(預訓練),我們就是要去學到‘Tom chase Jerry’這句話和其他無數句話在被拆解成世界性知識之后的‘表示’,

Transformer 就是一個專門用于自然語言處理的編碼-解碼器架構,編碼器-解碼器可以有很多不同的架構細節,就能得到不同的自編碼架構,Transformer 是此刻看起來效果最好的,能很好地學到自然語言背后的特征,并且有足夠大的模型容量,所謂模型容量,是指,有一些模型引數過多,就反而學不到特征,或者無法訓練了,無法用于表示特別復雜的東西,

 

2 GPT

GPT 全稱 Generative Pre-trained Transformer,前面講了編解碼,算是講了一點點 Transformer,也講了預訓練、Pre-trained,那么,Generative 從何講起?

我接著說人話,前面講到了,編碼器-解碼器是兩個不同的模型,就像你看視頻,你的手機上并不需要視頻錄制、編輯軟體,只需要一個解碼-播放器一樣,訓練兩個模型太麻煩,我們希望就圍繞一個模型做研究,做訓練,我們能不能不做編碼,就圍繞解碼模型來達到一些目的呢?答案當然是可以的,

打個不嚴謹的比方,我現在想找人幫我畫一幅肖像畫,其實我并不懂怎么畫畫,于是,我請人給我畫,我并不能從畫工技藝、藝術審美方面去評判他畫得好不好,但是,我是有能力去判斷我請的人畫出來的畫是不是令我滿意的,此時,我就是一個 decode-only 的模型,你會說,“你這個 decode-only 的模型必須要有一個懂 encode 的畫師才能作業啊“,是的,我不懂畫畫,確實需要一個畫師,

但是,你記得嗎,OpenAI 訓練 GPT3 的模型,就是給它海量的資料,讓它去訓練,那么,畫師不教導我繪畫技巧,只是不停的給我畫肖像,并且,給我看肖像是否滿意,我指出哪些地方不滿意,他做出修改,這個事情干了一千萬次,我是不是至少能學到‘當給我一幅沒畫好的我的肖像畫,我知道應該怎么接著畫下一筆‘?我不是從拆解好的理論體系里去學習的,我并不能叫出各種會畫技法的名字,但是,我就是會做上面這件事情了,

相當于,我聽到“GPT 是一個預訓練模”,我就知道下一個字一定是“型”字一樣,而因為我只擅長接著前面做好的事情完成接下來的事情,所以,我會‘生成’這個作業方式,同時,我也只會‘生成’這個作業方式,這就是 Generative 的意思,

總結一下,Generative 是被訓練出來的模型的作業的方式,Transformer 是這個模型的架構,Pre-trained 是形容 Transformer 的,就是說訓練這個模型,預訓練是不可或缺的核心步驟,

 

3 巨量引數

有一個很重要的點,被訓練完成的我,是如何知道沒畫完的肖像畫的下一筆是應該怎么畫的?就相當于你聽到“今天天氣很”之后,你是怎么知道下一個詞是什么的?顯然,你是靠猜測的,什么東西來支撐你的猜測?是你被訓練了一百萬次的經驗,這些經驗構成了什么?這些經驗被你潛意識地總結成了一些規律,有一些規律確定性很高,有一些規律確定性很低,“今天天氣很”后面接的字,確定性很低,“GPT 是一個預訓練模”后面接的字確定性很高,

那么,你實際上就是學到了一個概率模型,這個概率模型其實是無數個場景的概率分布組合而成的概率模型,預測“今天天氣很”的下一個詞,是一個概率分布,“GPT 是一個預訓練模”的下一個詞是另一個概率分布,所以,從頭學習機器學習、深度學習,就會知道,所有機器學習、深度學習模型都是概率模型,統計學是核心工具,

GPT3 的 paper講,OpenAI 做的 GPT3 有 1750 億引數,不管 paper 怎么說,實際上是如何做到的,你只是自己想象一下,想要記住足夠全面的‘世界知識’,是不是至少要有足夠大的'模型體積(模型容量)',即足夠多的引數?更深入的研究還在繼續進行,此刻,按照 GPT3 的 paper 來說,當引數量達到 1750 億的時候,模型就能記住這個世界的‘世界知識’所需要的所有‘特征’的‘表示’了,每個引數用 16 位的浮點數保存,體積是 320GBytes,這個世界的‘世界知識’,被這 320G 的資料表示了,

我們在對話聊天的時候,如果說了一些自己覺得是常識,對方卻不懂的時候,是不是對話就較難進行下去了?所以,為什么我們的模型需要這么多引數?因為它需要‘什么都懂’,如果我說我用 32M 規模的資料就記住了這個世界的常識,你是不是會覺得‘這顯然不可能’?

 

4 GPT3 不等于 ChatGPT

前面已經講了 Generative、Pre-trained、Transformer 這些概念,我們接著講 ChatGPT,首先,GPT3 不等于 ChatGPT,GPT3 這個預訓練模型,是 ChatGPT 的基礎,回顧我們最開始講的‘人如何學會翻譯’至少需要兩個步驟,第一步就是訓練一個 GPT3 的預訓練模型,有了這個模型之后,我們還要接著做一些訓練,才能完成 ChatGPT,

我們首先來回顧一下 GPT1、GPT2,

GPT1 的 paper名字叫做,Improving Language Understanding by Generative Pre-Training,通過生成式預訓練提升模型對語言的理解能力,這就是我們前面講過的東西,但是,它還沒達到很好的效果,我們想在 decoder-only 的模型里學到‘用語言呈現的世界知識’的'深層表示',初步證明這個方向有前途,

GPT2 的 paper名字叫做,Language Models are Unsupervised Multitask Learners,在這篇文章里,找到了讓 GPT1 這個‘思想方法’達到很好的效果的技術手段,通過自監督學習,怎么個自監督法呢?就是我們手里有很多書籍、文章,我們通過給模型書籍的前 n 個字兒,讓它猜測第 n+1 個字兒是什么,我們手里有正確的第 n+1 個字兒,讓模型去不斷糾正自己,模型為了達到更準確猜中第 n+1 個字兒的目標,就被迫‘學到’了潛在的‘世界知識’的表示,就像我們學到了語言的語法,記住了單詞,掌握了世界的常識,實際上,我們交給模型的任務,都是‘猜下一個詞’,但是計算‘56+21=’也是猜下一個詞,

所以,又可以把猜下一個詞分解為很多種猜詞任務,數學計算就是其中一種,最后,證明了 GPT2 效果還不錯,多說一句,上面這么搞,怎么就是自監督了呢?是否是‘有監督’學習,本身這個概念比較模糊,并不是一個科學的定義,只是大家習慣這么叫而已,我們約定俗成,把‘訓練資料是經過精巧地設計,并且準備程序對人力成本較高’的訓練,叫做有監督訓練,否則就是無監督,我們只是把前人努力寫的書做了一個調整給到模型,按照這個約定,應該屬于無監督學習,但是,好像,我們又其實是在用人類努力的成果在訓練它,所以,有人就開始稱這種情況為‘自監督學習’,

接著,你就會想,深度學習是一門科學啊,怎么能對概念的定義搞得這么模糊不嚴謹?對,你說得沒錯,深度學習,在玩數學的人眼里,就是充滿了不嚴謹,處在鄙視鏈的底端,但是,你擋不住深度學習應用的效果好呀,深度學習就是這么一系列‘不嚴謹’,充滿了‘我不知道為什么,但是這么做效果就好’的方法,科學家們在努力地解釋它為什么效果好,但是,這些研究遠遠追不上,找到‘效果更好,但是并不理解為什么效果好’的方法的步伐,對你自己的認知亦是如此,你有自我認知,那么,你的自我認知是怎么來的?“我是誰,我從哪里來,我要到哪里去?”

GPT3 的 paper名字叫做,Language Models are Few-Shot Learners,意思就是,在 GPT2 的思路的指導下,我們通過把引數增加到 1750 億,真地學到了‘世界知識’!學到了這些潛在的‘表示/特征’之后,我們只需要再讓模型學一個任務的少量幾個 case,模型就能學進一步學到我們給的幾個 case 里的潛在的'特征',即這幾個 case 所表達的規律和邏輯,

但是,GPT3 掌握了知識,但是,它還不會干活呀,比如,你給它輸入“給我寫一段簡介”,模型理解你確實說了“給我寫一段簡介”,但是,它此刻可以生成很多東西,比如生成一個“要簡介限制在 120 個字以內”,它是個生成模型,把你說的話續寫下去,也是一種生成啊!所以,我們還得教一個理解了我們的話模型,按照我們想要的方式去生成結果,就像,我們在進行一場對話,所以,就是 ChatGPT,chat+GPT,我們要進行聊天,本質上,就是讓模型‘要能聽懂我們的指令’,所以,OpenAI 接著又有一篇重磅論文Training language models to follow instructions with human feedback,它在 OpenAI 的官網上,是另一個名字Aligning language models to follow instructions,

顧名思義,就是要通過一些‘問題-回答’對的訓練資料,讓模型能在收到“給我寫一段簡介”這樣的指令性的輸入的時候,真地去按照指令的要求去生成接下來的東西,OpenAI 的標題里出現了一個詞'Alignling(對齊)',你可以不管它,但是,理解了這個詞,你才理解了‘制定對齊/指令微調’的核心技術,有興趣,你可以接著看這個自然段,也可以不看,直接跳到下下一個自然段,

‘指令對齊’,就讓掌握了知識的模型能按照我們想要的方式去生成更多的詞了,達到這個效果的方法,講起來,很硬核,為了說人話,我就打個比方,現在,我們有一個房間,里面有幾百本書就像垃圾一樣堆砌在一起,這就是預訓練已經把隱藏特征學到了,我們應該怎么去整理這些書籍呢?這個問題,取決于,我們后續要如何使用這些書籍,我們可以按門類,去排列書籍,每一類書籍一個書架,也可以按照書名去排列書籍,所有書籍分別根據書名被放在按 A-Z 排列的的書架里,


所以,對齊,就是根據我們的目的,去整理模型學到了的知識,那么,為什么我們不用整理、重構之類的詞,而用對齊呢?因為,我們知道模型學到了知識,但是,我們能看到這些表示,就是 1750 億個引數,但是,人類看不懂它,就像,人類能看到自己的腦袋,但是腦袋里的神經元是如何聯合在一起作業的,看不懂,

更具體的,‘1+1=2’這個知識,你知道它存盤在你大腦里的具體哪個神經元上么?你當然不能,所以,我們沒有細粒度的手段去整理書籍,有一個比較粗力度的手段,就是:按照我的需求,大概地把一些資料強行抓住首尾兩本書,把它們壓齊,你整理書籍,可以一本一本放,但是你沒法去拿其中一本的時候,你當然可以從一對兒書的兩端,用力壓,被按照我們想要的方式擠壓之后,書自己就變得更整齊了,對齊到了我們想要的結構,

我再打個比方,社會共識、常識,本身也是‘對齊’得來的,‘婚姻應該是自由戀愛的結果’,這個常識,不是從來如此的,是理性主義崛起之后,緊接著浪漫主義在 1900 年左右崛起,在 20 世紀才出現的,浪漫主義借由‘羅密歐與朱麗葉’之類的文藝作品廣泛傳播、得到認可,進而才把我們的常識‘對齊’成了這么一個結果,說得更遠一點,習慣了中國文化的人在美國必然會被‘文化沖突’所困擾,也是因為,中國和美國其實都通過媒體把自己的常識對齊成了不同的‘形狀’,‘對齊’無時無刻不在這個世界里發生,

實際上,模型每次只能生成一個詞兒,那么,把問題和回答都當成字串連接起來,結構是:輸入[問題里所有的詞][回答的前n個詞兒],生成回答的第 N+1 個詞兒,如果進行第二輪對話,輸入就變成了:輸入[第一個問題里所有的詞][第一個回答的所有詞][第二個問題的所有詞][第二個問題的回答的前n個詞],輸出[第二個回答的第 N+1 個詞],至于模型如何知道哪一段是問題,哪一段是問題,這里不展開描述,

實際上,ChatGPT 的訓練程序,可以看下面這張圖,我不做解釋,能不能看懂,隨緣(進一步閱讀另一篇比較說人話的文章,看這里):

圖片

至此,你知道了 GPT3 是 ChatGPT 這個‘技驚四座’的模型的基礎,

 

5 RLHF-強化學習

我們都知道,ChatGPT 至少經歷了預訓練、指令對齊、你可以理解為,一個大學生上一門課,指令對齊就是老師在課堂上給我們上課,但是,我們學習不能總是耗著一個老師一直給我們講啊,成本太高了,就是說,積累大量指令對齊的 QA(問題-回答)訓練資料,成本很高,后續更大量的學習,還得學生自己在脫離老師的強幫助,自行學習,一則效果更好,二則成本更低,

所以,我們用完成了指令對齊的模型,針對大量問題作出回答,并且,每個問題都給出 10 個回答,由人類去標注,所有回答里,哪些回答更好,用這個標注的 QA 對去接著‘對齊’模型,讓模型把知識對齊到更符合我們的要求,這個時候,人類需要做的,就僅僅是提問題+標注,之前是要給出問題且給出答案,成本降低了一些,速度也變快了一些,這里,強化學習實際上是訓練一個獎勵模型(reward model)作為新的老師,來對模型的回答進行‘批改’,讓模型愈發把知識‘對齊’到我們想要的樣子,

上面簡單的強化學習講解,其實有一個很嚴重的問題,如果對于同一個 Q,老師一會兒說 A1 好,一會兒說 A2 好,就變成了學生的腦子在來回拉扯,所以,強化學習,在細節上,還有更多不同的細節,為了講人話,我這里略過這些細節,

 

6 LoRA 與 instruction fine-tuning

大模型太大,訓練成本太高,人們總在尋找更低成本近似的方法,最近 LoRA 也是跟 CV(計算機影像)領域的 Stable Diffusion 一起大火,這里也用人話講一下 LoRA fine-tuning(不講 Stable Diffusion),為了講清楚,會有一點點不講人話的時候,

LoRA paper的標題是 LoRA: Low-Rank Adaptation of Large Language Models,其實,這個方法,屬于‘遷移學習’這個領域,LoRA 達到的效果是:在有一個已經訓練好的大模型之后,再訓練一個依賴于大模型的小模型,組合在一起作業,達到用較低的成本實作對大模型的微調,結果稍稍裂化于對大模型進行了微調,但是微調成本更低,低在哪兒呢?接下來就得先講明白 LoRA 是如何作業的,

什么是 low rank?低排名?low rank 是個數學概念,rank 是指矩陣的秩,low rank Adaptation 就是說,用秩較低的矩陣替代之前秩較高的矩陣,我還是稍微說一下什么是矩陣的秩,因為會被多次用到,

我們有一個 3x4 的矩陣如下:

[1,2,3,4]

[2,4,6,8]

[3,6,8,12]

顯然,要存盤它,我們需要用到 12 個數字,但是,這個我特別構造的矩陣是有一個特點的,第二行可以由[1,2,3,4]乘以 2 得到,第三行可以由[1,2,3,4]乘以 3 得到,那么,實際上,我就可以用[1,2,3,4]里的 4 個數字,加上 1、2、3 這 3 個系數,總共 7 個數字就可以表示這個矩陣,我需要的數字數量從 12 個降低到了 7 個,原始矩陣叫做 W,分解之后變成了需要的數字更少的兩個矩陣 B 和 A,公式就是 W=B 乘以 A,記為 W=BA,

在我這個例子中,是無損失地進行了分解,數學上,有辦法進行精度有損的分解,W 可以轉化為更少的數字構成 B 和 A,這就是說人話版本的矩陣的秩分解,

這里,我們補充介紹一下深度網路里的引數是怎么組織的:

圖片

在這個圖中,我們看到了一個網狀結構,其中‘O 單向箭頭指向 P’的意思就是‘O 參與計算,得到 P’,我們就看到了 z1、z2、z3 很多層,z1 這一層是一個 W1 矩陣和 B1 這個偏置向量,z1、z2、z3,越往右,就越深,就是深度網路,所謂引數,就是這些密密麻麻、層層疊疊的計算網路里的數字,這個圖只是一個示意,真實的網路結構,各有各的不同,以及,必須在每個網路節點上選擇合適的激活函式,后面不會用到,這里不做展開,好了,我們接著講 LoRA,

理解了低秩分解,LoRA 的 paper 的意思就是:

假設我們的模型深度為 l(layer 的首字母),每一層的引數為矩陣 W,并且,我們之前就已經訓練好了一個模型,這個模型的引數凍結住,永遠不改變了,記為 W0,那么,我們訓練模型就是在不斷改變下面這個公式的 ΔW 這個模型引數變更的增量,

圖片

這個增量可以通過低秩分解,分解為:

圖片

訓練主要程序依然和其他所有 fine-tuning 一樣,只是多了一個細節:把訓練后的引數變更保存到了 BA 中,而不是直接更新到 W0 里去,

這里,稍微講解一下訓練一個 Transformer 模型需要的顯存量,根據這篇文章的計算,訓練每 2 個位元組大小個 16 位浮點數表示的引數,需要 20 個位元組的顯存,那么,常見的 70 億引數的模型,大小是 14GBytes,需要的顯存至少是 140GBytes,如果要提高并行度,就需要更多顯存,當前比較強的A100 顯卡,單卡有 40G 顯存和 80G 顯存兩個版本,單卡無法進行訓練,必須要多卡同時進行,因為如果顯存不夠的話,是根本無法開始訓練的,顯存容量,決定了模型能不能開始訓練,GPU 算力,決定了要訓練多久,

那么,我們可以得到以下幾個結論:

1)模型訓練好之后,做線上推理服務,計算量,并沒有減少,反而可能有所微微增加,

2)低秩矩陣的大小是可以調整的,可以是非常小,低秩矩陣越小,丟失的精度越多,

3)訓練程序,兩個核心成本是顯存使用和 GPU 運算量,LoRA 方法下,低秩矩陣 BA 是可訓練引數,顯存的使用,等于 1 倍模型引數的體積加上 10 倍可訓練引數的體積,GPU 計算量可以根據可訓練引數的數量決定,如果我們把 BA 設定得比較小,訓練量可以比全引數模型訓練降低成千上萬倍

4)微調后的模型和原始模型的引數不能相差過大,不然用一個低秩矩陣 BA 所替代的 ΔW 會丟失大量精度,推理效果特別差,

5)LoRA 是一種模型訓練的思想方法,它可以適配到很多型別的模型上,GPT 模型,或者 Stable Diffusion 的模型,都可以,訓練時節省的顯存量,要根據具體模型結構來計算,

這些特性,說一個更具體的 case,stable diffusion 是一個開源的結合了 Transformer 的文字生成圖片的 CV(計算機視覺)模型,它的引數量是 1.2 億多,大小 469M,假設,如果沒有 LoRA 的方法,可能就需要至少 4G 的顯存,家庭游戲顯卡顯存一般在 8G 左右,因為顯存不夠,訓練的并行度很低,即使是民用 GPU 也可能在閑等,在同一張顯卡上,都需要更長的訓練時間,LoRA 讓顯存需求降低到 1G 左右,并行度提高了 8 倍,訓練的總結算量還降低上百倍,訓練成本大大降低,,同時,訓練出來的 LoRA 小模型,體積就 32M 左右,社區里就流行起了把自己 fine-tune 出來的 stable diffusion 下的 LoRA 模型互相傳播,

回顧一下 LoRA 與 GPT,我們可以說,LoRA 方式的 fine tuning 的對于 GPT 的價值,并不太大,只有在很小的場景,有 LoRA 的發揮空間,

圖片

現在,你應該能理解 LoRA 論文原文中的這種圖了,注意,這里,LoRA 是對原深度神經網路的每一層都設計了對應 BA 矩陣,

綜上,如果我們手里已經有一個強大的模型,我們僅僅像微調它的表現,而不是想要教會它很多新的東西,使用 LoRA 方法,成本是很低的,比如,文生圖的時候,我們不調整生成出來的圖片的框架、構圖,我們只想調整圖片的風格(真實系、漫畫風),或者,我們讓一個強大的模型去做一些簡單的任務,把簡單的任務做得特別好,也可以用 LoRA,

 

7 常見的開源類 GPT3 模型

Meta 開源的LLaMA是現在市面上預訓練做得最好的開源的架構類似 GPT3 的模型,它提供了 70 億、130 億、650 億 3 個引數規格的模型,特別說明一下,它只做了預訓練,它支持多種語言,英文效果最佳,中文和其他語言的效果一樣,比英語差一些,

Vicuna-7b 是用 70k 指令對 LLaMA 進行了指令微調,它微調的 70 億引數的 LLaMA 版本,是當前開源的做完了指令微調的模型里,效果最好的,

chatglm-6b是清華大學清華認知工程實驗室基于自己設計的預訓練模型架構General Language Model微調而來的聊天模型,引數規模是 62 億,GLM 模型是基于 Transformer 架構,更像 Transformer 的 Encoder 部份-BERT,預訓練用了 1T token 的中英文語料,沒說具體用了多少語料進行指令微調,中文聊天的效果,是開源模型里最好的,但是 GLM 模型架構天花板有沒有 GPT3 那么高,需要有人去研究,清華大學沒有對外公開,glm 預訓練模型有一個 130 億的版本,沒有對外開源,

bloom-176b是引數最多的開源預訓練模型,模型架構和 GPT3 很相似,是學術界很多人一起竄起來的一個預訓練模型,它只做了預訓練,做 QA 任務,效果較差,

alpaca-lora-7b是依附在 LLaMA-7b 上的模型,這個模型效果一般,但是它開源了 52k 條挺有價值的指令微調訓練資料,它是用了一個用 ChatGPT 作為老師來生成更多訓練資料的方法(paper 的名字是:SELF-INSTRUCT: Aligning Language Model with Self Generated Instructions)來訓練的模型,同時,alpaca 是一個 LoRA 方法下的模型,self-instruct 這個思路,非常有趣,其實大家都會自然而然有這種想法:既然有了 ChatGPT 這個效果特別好的模型,為什么我不直接只搜集指令問題,然后用 ChatGPT 給我生成指令 QA 里的 Answer,并且生成更多類似的 QA 對呢?這個想法是很好的,我們也在用,但是,文章里也說了,會出現‘對某些垂直領域的問題過擬合,對其他領域的問題欠擬合’的問題,這里不展開細節,

 

8 建議入門路徑

計算機大二課程:

吳恩達<斯坦福 CS229 機器學習>課程

<斯坦福 CS224n 自然語言處理>課程

<伯克利 CS285 | 深度強化學習>課程

新手友好的入門路徑:李宏毅機器學習系列Hung-yi Lee,

對截止 2017 年的理論研究最全面、深入的總結:

大概學懂前面的內容之后,看深度學習二號人物 bengio 寫的書,大家親切地叫它‘花書’,

《深度學習 》(豆瓣)

PyTorch 的 API 極度友好,可以通過下面這本書來數學,如果從這本書上手,你會不知道自己寫的簡短的代碼在干什么,此書由亞馬遜前首席科學家李沐所著,寫得不錯,這本書有很多個版本,最新的版本是 2023 年出的,才是以 PyTorch 為例子,

動手學深度學習(PyTorch 版) (豆瓣)

如果程序中有很多概念理解半天都理解不了,特別是統計學的概念,在碰到的時候,就可以去 B 站找解釋得比較好的視頻,我隨便列舉一下:

十分鐘搞定最大似然估計

【概率論】貝葉斯公式與后驗概率

極大似然估計/最大后驗估計—通過拋硬幣例子理解

「一個模型」教你搞定貝葉斯和全概率公式

“損失函式”是如何設計出來的?直觀理解“最小二乘法”和“極大似然估計法”

“交叉熵”如何做損失函式?打包理解“資訊量”、“位元”、“熵”、“KL 散度”、“交叉熵”

重新理解線性回歸 - 2 - 廣義線性模型:sigmoid 函式到底是怎么來的

 

作者:cheaterlin

本文來自博客園,作者:古道輕風,轉載請注明原文鏈接:https://www.cnblogs.com/88223100/p/introduction-to-the-theoretical-knowledge-of-the-big-language-model-behind-ChatGPT.html

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/553617.html

標籤:其他

上一篇:控制結構

下一篇:返回列表

標籤雲
其他(159856) Python(38173) JavaScript(25460) Java(18138) C(15231) 區塊鏈(8268) C#(7972) AI(7469) 爪哇(7425) MySQL(7214) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5873) 数组(5741) R(5409) Linux(5343) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4577) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2434) ASP.NET(2403) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1977) 功能(1967) Web開發(1951) HtmlCss(1948) C++(1922) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1878) .NETCore(1862) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 通俗直觀介紹ChatGPT背后的大語言模型理論知識

    “AI 的 iPhone 時刻到來了”。非演算法崗位的研發同學'被迫'學習 AI,產品崗位的同學希望了解 AI。但是,很多自媒體文章要么太嚴謹、科學,讓非科班出身的同學讀不懂;要么,寫成了科幻文章,很多結論都沒有充分的邏輯支撐,是‘滑坡推理’的產物。這篇文章從底層講起,卻不引入太多概念,特別是數學概念... ......

    uj5u.com 2023-05-28 08:51:05 more
  • 控制結構

    ```plaintext # 控制結構 ## 判斷陳述句 基于一定的條件判斷是否要執行代碼 一般結構: ```jupyter if : elif : else: ``` 例如: ```jupyter x = 0 if x > 0: print "x is positive" elif x == 0: ......

    uj5u.com 2023-05-28 08:25:55 more
  • 如何讓ChatGPT生成Midjourney提示詞

    ? 導讀:最近AI繪畫非常的火,今天我們看ChatGPT如何生成Midjourney提示詞,讓AI教AI做事。 本文字數:900,閱讀時長大約:3分鐘 正如 Midjourney 的官方網站報道的那樣,提供作業提示(Prompt)是一項碰運氣的業務。從單個表情符號或單詞都可以生成影像,但自然地結果可 ......

    uj5u.com 2023-05-28 08:25:43 more
  • [SWPUCTF 2021 新生賽]pop

    ![](https://img2023.cnblogs.com/blog/3180821/202305/3180821-20230527154746502-211535689.png) **很明顯了 反序列化 pop** 構造pop鏈,主要還是 死盯 反序列化的魔法函式 從__destruct()入 ......

    uj5u.com 2023-05-28 08:25:17 more
  • Loki 日志收集系統

    一.系統架構 二.組成部分 Loki 的日志堆疊由 3 個組件組成: promtail:用于采集日志、并給每條日志流打標簽,每個節點部署,k8s部署模式下使用daemonset管理。 loki:用于存盤采集的日志, 并根據標簽查詢日志流。單節點部署,一般和監控組件部署在同一節點。 Grafana:提 ......

    uj5u.com 2023-05-28 08:23:43 more
  • 人工智能導論——機器人自動走迷宮&強化學習

    # 一、問題重述 強化學習是機器學習中重要的學習方法之一,與監督學習和非監督學習不同,強化學習并不依賴于資料,并不是資料驅動的學習方法,其旨在與發揮智能體(Agent)的主觀能動性,在當前的狀態(state)下,通過與環境的互動,通過對應的策略,采用對應的行動(action),獲得一定的獎賞(rew ......

    uj5u.com 2023-05-28 08:18:11 more
  • 索引與分片

    # 索引與切片 ## 索引 在許多編程語言中,都有可以通過索引訪問值的資料結構。 比如說c++的陣列,字串。 在python中,也有許多資料結構可以通過索引訪問值。 ***訪問字串中某一個字符***: ```jupyter s = 'sadas' s[1] ``` ***訪問串列中某一個元素** ......

    uj5u.com 2023-05-28 08:12:56 more
  • hackthebox --interface medium

    主機發現 nmap -sV -sC -O -p22,80 10.10.11.200 -oN ports 訪問80頁面,主頁面是這樣的 再訪問一下index.php或者index.html 發現是404錯誤, 有可能是里面隱藏了一些api我們可以查看到搜索看看有沒有類似的api泄露 利用f12查看js ......

    uj5u.com 2023-05-28 08:11:59 more
  • 未來邊緣計算:趨于分布式智能

    摘要:AIoT的使能技術有很多,本次主要講云計算和分布式云,即Edge cloud,它帶來了實時性。 本文分享自華為云社區《未來邊緣計算:趨于分布式智能》,作者:曹建農 / 香港理工大學研究生院院長、IEEE Fellow、歐洲科學院院士。 在過去十幾年中,云計算已經成為主流技術,改變了很多工業、政 ......

    uj5u.com 2023-05-28 08:11:25 more
  • RoCE多網卡時,報文可以過去,但是回不來

    摘要:雖然網卡是接入RoCE網路,但其實問題本身是單純路由相關的,所以看的時候,不用關注RoCE,只當做一個獨立子網就行了 本文分享自華為云社區《<跟唐老師學習云網路> - RoCE多網卡時,報文可以過去,但是回不來》,作者: tsjsdbd 。 一、網路概要 一臺機子,接入2個子網,一個普通通信的 ......

    uj5u.com 2023-05-28 08:11:07 more