ChatGPT的工作原理介紹_第1頁
ChatGPT的工作原理介紹_第2頁
ChatGPT的工作原理介紹_第3頁
ChatGPT的工作原理介紹_第4頁
ChatGPT的工作原理介紹_第5頁
已閱讀5頁,還剩102頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

ChatGPT的工作原理—0

—前言ChatGPT

能夠自動生成一些讀起來表面上甚至像人寫的文字的東西來這非常了不起來而且出乎意料。但它是如何做到的要為什么它能發(fā)揮作用要我在這里的目的是大致介紹一下ChatGPT內部的情況來然后探討一下為什么它能很好地生成我們認為是有意義的文本。還沒使用過ChatGPT的伙伴可以點擊下面鏈接直接使用(不需要科學上網工具來后臺對接的是OpenAI和微軟的官方接口)就/我首先要說明一下來我將把重點放在正在發(fā)生的事情的大的方向上來雖然我會提到一些工程細節(jié)來但我不會深入研究它們。(我所說的實質內容也同樣適用于目前其他的“大型語言模型”LLM和

ChatGPT)。首先要解釋的是來ChatGPT從根本上說總是試圖對它目前得到的任何文本進行“合理的延續(xù)”來這里的“合理”是“在到人們在網上所寫的東西之后來人們可能會期望某人寫出什么”。因此來假設我們已經得到了“人工智能最好的是它能去做……”

的文本(“ThebestthingaboutAIisitsabilityto”)。想象一下來掃描的人類書寫的文本(例如在網絡上和字化書籍中)來并找到這文本的所有實例——然后

到什么詞在接下來的時間里出現(xiàn)了多少。ChatGPT有效地做了類似的事情來除了(正如我將解釋的)它不字面文本天它尋找在某種意義上“意義匹配”的東西。但最終的結果是來它產生了一可能出現(xiàn)在后面的詞的排序列表來以及

“概率”。值得注意的是來當 ChatGPT

做一些事情來比如寫一篇文章時來它所做的基本上只是反復詢問 “鑒于到目前為止的文本來下一

詞應該是什么要”—— 而且每次都增加一

詞。(更準確地說來正如我將解釋的那樣來它

在添加一 “標記”來這可能只是一

詞的一部分來這就是為什么它有時可以

“編造新詞”)。在每一步來它得到一

帶有概率的單詞列表。但是來它究竟應該選擇哪一

來添加到它正在寫的文章(或其他什么)中呢要人們可能認為它應該是“排名最高”的詞(即被分配到最高“概率”的那

)。但是來這時就會有一點巫術開始悄悄出現(xiàn)。因為出于某種原因——

也許有一天我們會有一科學式的理解——如果我們總是挑選排名最高的詞來我們通常會得到一篇非常“平淡”的文章來似乎從來沒有

“顯示出任何創(chuàng)造力”(甚至有時一字不差地重復)。但是來如果有時(隨機的)我們挑選排名較低的詞來我們會得到一篇“更有趣”

的文章。這里有隨機性的事實意味著來假如我們多次使用同一提示來我們也很可能每次都得到不同的文章。而且來為了與巫術的想法保持一致來有一特定的所謂“溫度”參(temperatureparameter)來它決定了以什么樣的頻率使用排名較低的詞來而對于論文的生成來事實證明來0.8的“溫度”似乎是最好的。(值得強調的是來這里沒有使用任何“理論”天這只是一在實踐中被發(fā)現(xiàn)可行的問題)。例如來“溫度”的概念之所以存在來是因為恰好使用了統(tǒng)計物理學中熟悉的分布來但沒有“物理”聯(lián)系——至少到目前為止我們如此認為。)在我們繼續(xù)之前來我應該解釋一下來為了論述的目的來我大多不會使用ChatGPT中的完整系統(tǒng)天相反來我通常會使用更簡單的GPT-2系統(tǒng)來它有一

很好的特點來即它足夠小來可以在標準的臺式電腦上運行。因此來對于我展示的所有內容來包括明確的沃爾弗拉姆語言(WolframLanguage)代碼來你可以立即在你的計算機上運行。例如來這里是如何獲得上述概率表的。首先來我們必須檢索底層的“語言模型”

神經網就稍后來我們將這神經網的內部來并談談它是如何工作的。但現(xiàn)在我們可以把這“網絡模型”作為一

黑匣子應用于我們迄今為止的文本來并要求按概率計算出該模型認為應該選擇的前五

詞就這就把這結果變成了一明確的格式化的

“據(jù)集”就如果重復“應用模型”——

在每一步中加入概率最高的詞(在此代碼中被

定為模型的

“決定”)來會發(fā)生什么就如果再繼續(xù)下去會發(fā)生什么要在這種情況下(“零溫度”)來很快就會出現(xiàn)相當混亂和重復的情況就但是來如果不總是挑選“頂級”詞來而是有時隨機挑選“非頂級”

詞(“隨機性”對應“溫度”為

0.8)呢要人們又可以建立起文本就而每次這樣做來都會有不同的隨機選擇來文本也會不同——如這5

例子就值得出的是來即使在第一步來也有很多可能的

“下一詞” 可供選擇(溫度為 0.8)來盡管它們的概率下降得很快(是的來這

圖上的直

線對應于n-1的“”來這是語言的一

統(tǒng)計的特點)就那么來如果繼續(xù)下去會發(fā)生什么要這里有一

隨機的例子。它比頂層詞(零溫度)的情況要好來但頂多還是有點奇怪就這是用最簡單的GPT-2模型(來自2019年)做的。用較新和較大的

GPT-3模型來結果更好。這里是用同樣的“提示”

產生的頂部文字(零溫度)來但用最大的GPT-3

模型就這是“溫度為0.8”時的一

隨機例子就—1

—概率從何而來?好吧來ChatGPT總是根據(jù)概率來選擇下一

詞。但是這些概率從何而來要讓我們從一更簡單的問題開始。讓我們考慮一次生成一字母(而不是單詞)的英語文本。我們怎樣才能算出每

字母的概率呢要我們可以做的一非常簡單的事情就是取一英語文本的樣本來然后計算不同字母在其中出現(xiàn)的頻率。因此來舉例來說來這是計算維基百科上關于“貓”(cat)

的文章中的字母就而這對“狗”(dog)

也有同樣的作用就結果相似來但不一樣(“o”在“dogs”

文章中無疑更常見來因為畢竟它出現(xiàn)在 “dog” 這

詞本身)。盡管如此來如果我們采取足夠大的英語文本樣

本來我們可以期待最終得到至少是相當一致的結果。下面是我們得到的一樣本來如果我們用這些概率生成一

字母序列就我們可以通過添加空格將其分解為 “單詞”來就像它們是具有一定概率的字母一樣就我們可以通過強迫“字長”的分布與英語中的分布相一致來在制造

“單詞”方面做得稍微好一點就我們在這里沒有碰巧得到任何 “實際的詞”來但結果

起來稍好一些。不過來要想更進一步來我們需要做的不僅僅是隨機地分別挑選每字母。例如來我們知道來如果我們有一“q”來下一字母基本上必須是

“u”就這里有一

字母本身的概率圖就這是一

顯示典型英語文本中成對字母(“2-grams”)概率的圖??赡艿牡谝?/p>

字母顯示在

面上來第二

字母顯示在

面下就例如來我們在這里到來除了“u”行來“q”

列是空白的(概率為零)。好了來現(xiàn)在我們不再是一次生成一字母的“單詞”來而是使用這些“2-gram”概率來一次兩字母來生成它們。下面是一結果的樣本

——其中恰好包括一些

“實際的詞”就有了足夠多的英語文本來我們不僅可以對單字母或成對字母(

2-

grams)的概率進行很好的估計來而且還可以對較長的字母進行估計。如果我們用逐漸變長的n-gram概率生成“隨機詞”來我們就會發(fā)現(xiàn)它們逐漸變得

“更現(xiàn)實”就但現(xiàn)在讓我們假設——或多或少像ChatGPT那樣——

我們處理的是整

單詞來而不是字母。英語中大約有40,000合理的常用詞。通過查大型英語文本語料庫(比如幾百萬本書來總共有幾千單詞)來我們可以得到每單詞的常見程度的估計。利用這一點來我們可以開始生成“子”來其中每詞都是獨立隨機抽取的來其出現(xiàn)的概率與語料庫中的相同。下面是我們得到的一

樣本就顯然來這是一派胡言。那么來我們如何才能做得更好呢要就像對待字母一樣來我們可以開始考慮的不僅僅是單詞的概率來還有成對的或更長的詞的n-grams的概率。在成對的情況下來以下是我們得到的5例子來所有情況都是從“貓”這

詞開始的就它變得稍微“起來很合理”

了。我們可以想象來如果我們能夠使用足夠長的n-grams來我們基本上會“得到一ChatGPT”——在這意義上來我們會得到一些東西來以“正確的總體論文概率”生成論文長度的單詞序列。但問題是就沒有足夠的英文文本可以推導出這些概率。在網絡的抓取中來可能有幾千單詞天在已經字化的書籍中來可能有另外幾千單詞。但是有了4萬常用詞來即使是可能的2-grams的量也已經是

16

了來可能的

3-grams

量是

60

。所以我們沒有辦法從現(xiàn)有的文本中估計出所有這些的概率。而當我們達到20字的“文章片段”時來可能性的量比宇宙中的粒子

量還要多來所以從某種意義上說來它們永遠不可能全部被寫下來。那么我們能做什么呢要最大的想法是建立一模型來讓我們估計序列出現(xiàn)的概率——即使我們在所的文本語料庫中從未明確見過這些序列。而ChatGPT的核心正是一所謂的“大型語言模型”(LLM)來它的建立可以很好地估計這些概率?!?

—什么是模型?假設你想知道(就像伽利略在15

世紀末所做的那樣)來從比薩塔的每一層落下的炮彈要多長時間才能落地。那么來你可以在每一種情況下測量它來并將結果制成表格?;蛘吣憧梢宰隼碚摽茖W的精髓就建立一模型來給出某種計算答案的程序來而不是僅僅測量和記住每

案例。讓我們想象一下來我們有(有點理想化的)據(jù)來說明炮彈從不同樓層落下需要多長時間。我們如何計算出它從一我們沒有明確

據(jù)的樓層落下需要多長時間要在這種特殊情況下來我們可以用已知的物理學定

來計算。但是來如果說我們所得到的只是據(jù)來而我們不知道有什么基本定在支配它。那么我們可以做一

學上的猜測來比如說來也許我們應該用一條直線作為模型。我們可以選擇不同的直線。但這是平均來說最接近我們所給的

據(jù)的一條。而根據(jù)這條直線來我們可以估算出任何樓層的下降時間。我們怎么知道要在這里嘗試使用一條直線呢要在某種程度上我們不知道。這只是學上簡單的東西來而我們已經習慣了這樣的事實就我們測量的很多據(jù)都被學上簡單的東西很好地擬合了。我們可以嘗試一些

學上更復雜的東西——比如說a+bx+cx2來然后在這種情況下來我們做得更好就不過來事情可能會出大問題。比如這里是我們用a+b/c+xsin(x)

最多也就做成就值得理解的是來從來沒有一 “無模型的模型”。你使用的任何模型都有一些特定的基礎結構來然后有一組 “你可以轉動的旋鈕”(即你可以設置的參)來適應你的據(jù)。而在ChatGPT

的案例中來使用了很多這樣的“旋鈕”——實際上來有1750

。但令人矚目的是來ChatGPT的底層結構——“僅僅”有這么多的參——足以使一計算下一單詞概率的模型“足夠好”來從而為我們提供合理的文章長度的文本?!?

—類人的任務模型我們上面舉的例子涉及到為字據(jù)建立模型來這些

據(jù)基本上來自于簡單的物理學——幾世紀以來我們都知道“簡單

學適用”。但是對于ChatGPT來說來我們必須為人類語言文本建立一模型來即由人腦產生的那種模型。而對于這樣的東西來我們(至少現(xiàn)在)還沒有類似“簡單學”

的東西。那么來它的模型可能是什么樣的呢要在我們談論語言之前來讓我們先談談另一項類似人類的任務就識別圖像。而作為一簡單的例子來讓我們考慮字的圖像(是的來這是一

經典的機器學習例子)就我們可以做的一件事是為每

字獲取一堆樣本圖像就然后來為了找出我們輸入的圖像是否對應于某特定的

字來我們只需與我們擁有的樣本進行明確的逐像素比較。但作為人類來我們似乎可以做得更好——因為我們仍然可以識別字來即使它們是于寫的來并且有各種各樣的修改和扭曲。當我們?yōu)樯厦娴?/p>

據(jù)建立一

模型時來我們能夠取一

給定的

字值x來然后為特定的a和b計算

a+bx。因此來如果我們把這里的每像素的灰度值當作某變量

xi來是否有一些所有這些變量的函來在評估時告訴我們這圖像是什么

字要事實證明來有可能構建這樣一函。不足為奇的是來這并不特別簡單。一

典型的例子可能涉及50萬次

學運算。但最終的結果是來如果我們把一幅圖像的像素值集合輸入這函

來就會得出一字來定我們的圖像是哪

字。稍后來我們將討論如何構建這樣一函來以及神經網絡的概念。但現(xiàn)在讓我們把這函

當作黑匣子來我們輸入例如于寫字的圖像(作為像素值的陣列)來然后我們得到這些字對應的

字就但這里到底發(fā)生了什么要比方說來我們逐步模糊一字。有一段時間來我們的函仍然“識別”它來在這里是一“2”。但很快它就“失去”

了來并開始給出“錯誤”

的結果就但為什么我們說這是一“錯誤”

的結果呢要在這種情況下來我們知道我們通過模糊一“2”得到所有的圖像。但是來如果我們的目標是制作一人類識別圖像的模型來那么真正要問的問題是來如果遇到這些模糊的圖像來在不知道其來源的情況下來人類會做什么。如果我們從我們的功能中得到的結果通常與人類會說的話一致來我們就有一“好的模型”。而非微不足道的科學事實是來對于像這樣的圖像識別任務來我們現(xiàn)在基本上知道如何構建這樣的函

。我們能“從學上證明”

它們的作用嗎要嗯來不能。因為要做到這一點來我們必須有一關于我們人類正在做什么的學理論。以“2”圖像為例來改變幾像素。我們可以想象來只有幾像素“不合適”來我們還是應該認為這圖像是“2”。但這應該到什么程度呢要這是一關于人類視覺感知的問題。而且來是的來對于蜜蜂或章魚來說來答案無疑是不同的——對于假定的外星人來說來可能完全不同?!?/p>

4—神經網路好吧來那么我們用于圖像識別等任務的典型模型究竟是如何工作的呢要目前最流行?最成功的方法是使用神經網絡。在20世紀40

年代來神經網絡的發(fā)明形式與今天的使用非常接近來它可以被認為是大腦似乎工作方式的簡單理想化。在人類的大腦中來有大約1000神經元(神經細胞)來每神經元都能產生電脈沖來每秒可能有一千次。這些神經元在一復雜的網絡中連接起來來每神經元都有樹狀的分支來允許它將電信號傳遞給可能有成千上萬的其他神經元。粗略估計來任何給定的神經元是否在某一時刻產生電脈沖來取決于它從其他神經元那里收到的脈沖——不同的連接有不同的“權重”

貢獻。當我們“到一圖像”時來所發(fā)生的事情是來當圖像的光子落在眼睛后面的(“光感受器”)細胞上時來它們在神經細胞中產生電信號。這些神經細胞與其他神經細胞相連來最終信號通過一整層的神經元。而正是在這過程中來我們“識別”了圖像來最終“形成了一想法”來即我們“到了一

2”(也許最后會做一些事情來如大聲說“2”這詞)。上一節(jié)中的“黑盒子”函是這樣一神經網絡的“學化”

版本。它剛好有11層(雖然只有4

“核心層”)。這神經網并沒有什么特別的“理論推導”天它只是在1998

年作為一項工程而構建的東西來并且被發(fā)現(xiàn)是有效的。(當然來這與我們描述我們的大腦是通過生物進化過程產生的沒有什么不同)。好吧來但是像這樣的神經網絡是如何

“識別事物”的要關鍵在于吸引器的概念。想象一下來我們有1和2

的于寫圖像就我們希望所有的1都“被吸引到一地方”來而所有的2都

“被吸引到另一地方”?;蛘邅頁Q一種方式來如果一圖像在某種程度上

“更接近于1”來而不是2來我們希望它最終出現(xiàn)在“1的地方”來反之

然。作為一

直接的類比來我們假設在平面上有某些位置來用點表示(在現(xiàn)實生活中來它們可能是咖啡店的位置)。那么我們可以想象來從平面上的任何一點開始來我們總是想在最近的點結束(即我們總是去最近的咖啡店)。我們可以通過將平面劃分為由理想化的“分水嶺”

分隔的區(qū)域(“吸引盆地”)來表示這一點就我們可以認為這是在執(zhí)行一種 “識別任務”來我們不是在做類似于識別給定圖像“起來最像”的字的事情——而是很直接地

到給定點最接近哪點。(我們在這里展示的“Voronoi圖”

設置是在二維歐幾里得空間中分離點天字識別任務可以被認為是在做非常類似的事情——

但卻是在一由每張圖像中所有像素的灰度等級形成的784

維空間中。)那么來我們如何使一

神經網絡 “完成一

識別任務”要讓我們考慮這

非常簡單的案例就我們的目標是獲取一對應于{x,y}位置的“輸入”來然后將其“識別”

為它最接近的三點中的任何一?;蛘邅頁Q

話說來我們希望神經網絡能夠計算出一

類似于

{x,y}

的函

就那么來我們如何用神經網絡做到這一點呢要歸根結底來神經網是一

理想化的“神經元”的連接集合——通常按層排列——一

簡單的例子是就每“神經元”都被有效地設置為評估一簡單的字函。為了

“使用”這網絡來我們只需在頂部輸入字(如我們的坐標x和y)來然后讓每一層的神經元“評估它們的功能”來并通過網絡向前輸入結果——最終在底部產生最終的結果。在傳統(tǒng)的(受生物啟發(fā)的)設置中來每

神經元實際上都有一組來自上一層神經元的“傳入連接”來每連接都被賦予一定的“權重”(可以是一正或負)。一給定的神經元的值是通過將“前一神經元”的值乘以其相應的權重來確定的來然后將這些值相加并乘以一常來最后應用一“有值”(或“激活”)函

。在學術語中來如果一神經元有輸入x={x1,x2……

}來那么我們計算f[w.x+b]來其中權重w和常b通常為網絡中的每神經元選擇不同天函

f通常是相同的。計算w.x+b只是一矩陣乘法和加法的問題。激活函“f

引入了非線性(并最終導致了非線性行為)。通常使用各種激活函

天這里我們只使用Ramp(或

ReLU)就對于我們希望神經網絡執(zhí)行的每一項任務(或者說來對于我們希望它評估的每一整體函)來我們將有不同的權重選擇。(正如我們稍后要討論的那樣來這些權重通常是通過使用機器學習從我們想要的輸出實例中“[練”

神經網絡來確定的)。最終來每神經網絡都對應于一些整體的學函——盡管它可能寫得很亂。對于上面的例子來它就是就ChatGPT的神經網絡也只是對應于這樣的一學函——

但實際上有

術語。但讓我們回到單神經元上。下面是一有兩輸入(代表坐標x和y)的神經元在選擇不同的權重和常(以及Ramp作為激活函)后可以計算的函

的一些例子就但是來上面那

更大的網絡是怎么回事要嗯來這是它的計算結果就這不是很“正確”來但它接近于我們上面展示的“最近點”函

。讓我們其他一些神經網絡的情況。在每一種情況下來正如我們稍后所解釋的來我們都在使用機器學習來尋找最佳的權重選擇。然后來我們在這里展示帶有這些權重的神經網絡的計算結果就更大的網絡通常能更好地逼近我們的目標函。而在“每

吸引子盆地的中間”來我們通常會得到我們想要的答案。但在邊界——神經網絡“很難下定決心”的地方——

情況可能會更加混亂。在這簡單的學風格的“識別任務”中來“正確答案”是什么很清楚。但在識別于寫字的問題上來就不那么清楚了。如果有人把“2”

寫得很糟糕來起來像“7”來等等來怎么辦要不過來我們還是可以問來神經網絡是如何區(qū)分字的——這就給出了一

示就我們能“從學上”

說說網絡是如何區(qū)分的嗎要并非如此。它只是在“做神經網絡所做的事” 而已。但事實證明來這通常似乎與我們人類所作的區(qū)分相當吻合。讓我們舉一更復雜的例子。比方說來我們有貓和狗的圖像。我們有一神經網絡來它被[練來區(qū)分它們。下面是它在一些例子中可能做的事情就現(xiàn)在來“正確答案”

是什么就更不清楚了。穿著貓衣的狗怎么辦要等等。無論給它什么輸入來神經網絡都會產生一答案。而且來事實證明來這樣做的方式與人類可能做的事情是合理一致的。正如我在上面所說的來這不是一我們可以“從第一原理推導”的事實。它只是根據(jù)經驗被發(fā)現(xiàn)是真的來至少在某些領域是這樣。但這是神經網絡有用的一關鍵原因就它們以某種方式捕捉了“類似人類”

的做事方式。給自己一張貓的照片來然后問

“為什么那是一只貓要”。也許你會開始說“嗯來我到它的尖耳朵來等等”。但要解釋你是如何認出這張圖片是一只貓的來并不是很容易。只是你的大腦不知怎么想出來的。但是對于大腦來說來沒有辦法(至少現(xiàn)在還沒有)“進入”它的內部來它是如何想出來的。那么對于一(人工)神經網來說呢要好吧來當你展示一張貓的圖片時來可以直接到每“神經元”的作用。但是來即使要獲得一基本的可視化來通常也是非常困難的。在我們用于解決上述“最近點”問題的最終網絡中來有17神經元。在用于識別于寫字的網絡中來有2190

。而在我們用來識別貓和狗的網絡中來有60,650

。通常情況下來要將相當于60,650維度的空間可視化是相當困難的。但由于這是一為處理圖像而設置的網絡來它的許多神經元層被組織成陣列來就像它所

的像素陣列一樣。如果我們采取一

典型的貓圖像就那么我們就可以用一組衍生圖像來表示第一層神經元的狀態(tài)——

其中許多圖像我們可以很容易地解釋為“沒有背景的貓”或“貓的輪廓”

等就到了第

層來就更難解釋發(fā)生了什么就但總的來說來我們可以說神經網絡正在

“挑選出某些特征”(也許尖尖的耳朵也在其中)來并利用這些特征來確定圖像是什么。但這些特征是我們有名字的來比如“尖耳朵”要大多

情況下不是。我們的大腦在使用類似的特征嗎要大多情況下我們不知道。但值得注意的是來像我們在這里展示的神經網絡的前幾層似乎可以挑出圖像的某些方面(如物體的邊緣)來這些方面似乎與我們知道的由大腦中第一層視覺處理挑出的特征相似。但是來假設我們想要一神經網絡的“貓識別理論”。我們可以說“

來這

特定的網絡做到了”——這立即給了我們一些關于“問題有多難”的感覺(例如來可能需要多少

神經元或層)。但至少到現(xiàn)在為止來我們還沒有辦法對網絡正在做的事情進行“敘述性描述”。也許這是因為它在計算上確實是不可簡化的來而且除了明確地追蹤每一步驟之外來沒有一的方法可以找到它在做什么。也可能只是因為我們還沒有“弄清科學”來還沒有確定“自然法則”來使我們能夠總結出正在發(fā)生的事情。當我們談論用ChatGPT生成語言時來我們會遇到同樣的問題。而且同樣不清楚是否有辦法“總結它在做什么”。但是語言的豐富性和細節(jié)(以及我們在這方面的經驗)可能會讓我們比圖像走得更遠?!?

—機器學習和神經網絡的訓練到目前為止來我們一直在談論那些“已經知道”

如何完成特定任務的神經網絡。但是來神經網絡之所以如此有用(估計也是在大腦中)來是因為它們不僅在原則上可以完成各種任務來而且可以逐步“根據(jù)實例[練”來完成這些任務。當我們制作一區(qū)分貓和狗的神經網絡時來我們實際上不需要寫一程序來(比如說)明確地找到胡須天相反來我們只需要展示大量關于什么是貓和什么是狗的例子來然后讓網絡從這些例子中“機器學習”如何去區(qū)分它們。重點是來[練有素的網絡從它所展示的特定例子中“概括”出來。正如我們在上面到的來這并不是簡單地讓網絡識別它所到的貓咪圖像的特定像素模式天而是讓神經網絡以某種方式設法在我們認為是某種“一貓性”

的基礎上區(qū)分圖像。那么來神經網絡的[練究竟是如何進行的呢要從本質上講來我們一直在努力尋找能夠使神經網絡成功重現(xiàn)我們所給的例子的權重。然后來我們依靠神經網絡以“合理”的方式在這些例子之間進行“插值”(或

“概括”)。讓我們一

比上面的最近點的問題更簡單的問題。讓我們只嘗試讓一

神經網絡學習函

就對于這任務來我們需要一只有一輸入和一

輸出的網絡來比如就但我們應該使用什么權重等要在每一組可能的權重下來神經網絡都會計算出一些函

。例如來這里是它用幾組隨機選擇的權重所做的事情就是的來我們可以清楚地

到來在這些情況下來它甚至都沒有接近再現(xiàn)我們想要的函

。那么來我們如何找到能夠重現(xiàn)該功能的權重呢要基本的想法是提供大量的“輸入→輸出”的例子來“學習”——

然后嘗試找到能重現(xiàn)這些例子的權重。下面是用逐漸增多的例子來做的結果就在這“[練”的每階段來網絡中的權重都被逐步調整——我們

到來最終我們得到了一能成功重現(xiàn)我們想要的功能的網絡。那么來我們是如何調整權重的呢要基本的想法是在每階段我們離得到我們想要的功能

“有多遠”來然后以這樣的方式更新權重來使之更接近。為了找出“我們有多遠”來我們計算通常被稱為“損失函”(或有時稱為“成本函”)的東西。這里我們使用的是一簡單的(L2)損失函

來它只是我們得到的值與真實值之間的差異的平方之和。我們到的是來隨著我們[練過程的進展來損失函逐漸

少(遵循一定的“學習曲線”來不同的任務是不同的)——直到我們達到一

點來網絡(至少是一很好的近似值)成功再現(xiàn)了我們想要的函

就好了來最后要解釋的重要部分是如何調整權重以少損失函。正如我們所說來損失函給我們提供了我們得到的值與真實值之間的

“距離”。但是“我們得到的值”在每階段都是由當前版本的神經網絡和其中的權重決定的。但現(xiàn)在想象一下來這些權重是變量——比如說wi。我們想找出如何調整這些變量的值來以使取決于這些變量的損失最小。例如來想象一下(對實踐中使用的典型神經網絡進行了不可思議的簡化)來我們只有兩權重w1和w2。那么我們可能有一損失來作為w1和w2的函來

起來像這樣就

值分析提供了各種技術來尋找這樣的情況下的最小值。但一典型的方法是來從之前的w1?w2

開始來逐步遵循最的我的下降路徑就就像水從山上流下來一樣來所能保證的是這過程最終會在地表的某局部最小值(“一

山湖”)天它很可能達不到最終的全球最小值。在 “重量景觀” 上找到最的我的下降路徑并不明顯來這是不可行的。但是來微積分可以幫助我們。正如我們上面提到的來我們總是可以把神經網

作是在計算一學函——

它取決于它的輸入和權重。但現(xiàn)在考慮對這些權重進行微分。事實證明來微積分的連鎖法則實際上可以讓我們 “解開” 神經網中連續(xù)幾層所做的運算。其結果是來我們可以——至少在某些局部近似中——“反轉”神經網的操作來并逐步找到使與輸出相關的損失最小的權重。上圖顯示了在只有2

權重的不現(xiàn)實的簡單情況下來我們可能需要做的最小化工作。但事實證明來即使有更多的權重(ChatGPT使用了

1750

)來仍有可能做到最小化來至少在某種程度上是近似的。事實上來2011年左右發(fā)生的“深度學習”的重大突破與以下發(fā)現(xiàn)有關就從某種意義上說來當有很多權重參與時來做(至少是近似)最小化比有相當少的權重更容易。換話說

——有點反直覺——用神經網絡解決更復雜的問題比簡單的問題更容易。其大致原因似乎是來當一人有很多“權重變量”

時來他有一

高維空間來有“很多不同的方向”來可以把他引向最小值——而如果變量較少來則更容易陷入一局部最小值(“山湖”)來沒有“方向可以出去”。值得出的是來在典型的情況下來有許多不同的權重集合來它們都能使神經網絡具有幾乎相同的性能。而在實際的神經網絡[練中來通常會有很多隨機的選擇來導致

“不同但等同的解決方案”來就像這些就但每一這樣的“不同的解決方案”

至少會有輕微的不同行為。如果我們要求來比如說來在我們提供[練實例的區(qū)域之外進行

“外推”來我們可以得到極大的不同結果就但是哪一

“正確的”

呢要真的沒有辦法說。它們都

“與觀察到的

據(jù)一致”。但它們都對應著不同的“先天”方式來“思考”如何在“盒子外”做什么。對我們人類來說來有些可能比其他的起來

“更合理”?!?

—神經網絡訓練的實踐與理論特別是在過去的

年里來在[練神經網絡的藝術方面取得了許多進展。而且來是的來這基本上是一門藝術。有時來特別是在回顧中來人們至少可以

到正在做的事情有一絲“科學解釋”的影子。但大多情況下來事情都是通過試驗和錯誤發(fā)現(xiàn)的來增加了一些想法和技巧來逐步建立了一關于如何使用神經網絡的重要傳說。有幾關鍵部分。首先來對于一特定的任務來應該使用什么架構的神經網絡。然后來還有一關鍵問題來即如何獲得[練神經網絡的據(jù)。而且來人們越來越多地不是在處理從頭開始[練一

網絡的問題就相反來一

新的網絡可以直接納入另一

已經[練好的網絡來或者至少可以使用該網絡為自己產生更多的[練實例。人們可能認為來對于每一種特定的任務來人們都需要一不同的神經網絡結構。但人們發(fā)現(xiàn)來即使是對于明顯不同的任務來相同的架構似乎也能發(fā)揮作用。在某種程度上來這讓人想起了通用計算的想法(以及我的計算等價原則)來但是來正如我將在后面討論的那樣來我認為這更多地反映了這樣一事實來即我們通常試圖讓神經網絡做的任務是“類似人類”的來而神經網絡可以捕獲相當普遍的

“類似人類的過程”。在早期的神經網絡中來人們傾向于認為應該

“讓神經網絡盡可能地少做”。例如來在將語音轉換為文本時來人們認為應該首先分析語音的音頻來將其分解為音素來等等。但人們發(fā)現(xiàn)來至少對于“類似人類的任務”來說來通常更好的做法是嘗試在“端到端問題”上[練神經網絡來讓它自己“發(fā)現(xiàn)”必要的中間特征?編碼等。還有一想法是來我們應該在神經網絡中引入復雜的單獨組件來讓它實際上“明確地實現(xiàn)特定的算法想法”。但是來這又一次被證明是不值得的天相反來最好只是處理非常簡單的組件來讓它們“自我組織”(盡管通常是以我們無法理解的方式)來實現(xiàn)(大概)那些算法想法的等價物。這并不是說沒有與神經網絡相關的“結構化思想”。因此來例如來具有局部連接的二維神經元陣列似乎至少在處理圖像的早期階段非常有用。而擁有專注于“回顧序列”

的連接模式似乎很有用——

我們將在后面

到——在處理人類語言等事物時來例如在ChatGPT

中。但神經網絡的一重要特點是來像一的計算機一樣來它們最終只是在處理據(jù)。而目前的神經網絡——目前的神經網絡[練方法

——是專門處理字陣列的。但在處理過程中來這些組可以被完全重新排列和重塑。舉例子來我們上面用來識別字的網絡從一二維的“圖像”陣列開始來迅速“增厚”到許多通道來但隨后“濃縮”成一一維陣列來最終將包含代表不同可能輸出

字的元素就但是來好吧來如何判斷一

特定的任務需要多大的神經網要這是一門藝術。在某種程度上來關鍵是要知道 “這

任務有多難”。但對于類似人類的任

務來說來這通常是很難估計的。是的來可能有一種系統(tǒng)的方法可以通過計算機非常“機械”

地完成任務。但很難知道是否存在人們認為的技巧或捷徑來使人們至少在“類似人類的水平”上更容易地完成這項任務。可能需要列舉一巨大的游戲樹來“機械地”玩某游戲天但可能有一更容易(“啟發(fā)式”)的方法來實現(xiàn)“人類水平的游戲”。當人們在處理微小的神經網絡和簡單的任務時來有時可以明確地到“從這里不能到達那里”。例如來這是人們在上一節(jié)的任務中用幾小的神經網絡似乎能做到的最好的結果就而我們的情況是來如果網太小來它就不能再現(xiàn)我們想要的功能。但如果超過一定的規(guī)模來它就沒有問題了——至少如果一

人用足夠長的時間和足夠多的例子[練它。順便說一下來這些圖片說明了一神經網絡的傳說就如果中間有一“擠壓”來迫使所有東西都通過一較小的中間神經元量來那么我們往往可以用一

較小的網絡。(值得一提的是來“無中間層”——或所謂的“感知器”——網絡只能學習本質上的線性函——但只要有一中間層來原則上就可以任意很好地近似任何函來至少如果有足夠的神經元來盡管為了使其可行地[練來通常需要某種正則化或規(guī)范化)。好吧來讓我們假設我們已經確定了某種神經網絡架構?,F(xiàn)在有一問題來就是如何獲得據(jù)來[練網絡。圍繞神經網絡和一機器學習的許多實際挑戰(zhàn)都集中在獲取或準備必要的[練據(jù)上。在許多情況下(“監(jiān)督學習”)來人們希望獲得明確的輸入和期望的輸出的例子。因此來舉例來說來人們可能希望通過圖像中的內容或一些其他屬性來標記圖像。也許我們必須明確地去做——通常是費盡心機地去做標記。但是很多時候來我們可以借助已經完成的工作來或者將其作為某種代理。因此來舉例來說來我們可以使用網絡上已經提供的圖片的alt標簽。或者來在另一領域來我們可以使用為視頻創(chuàng)建的封閉式字幕。或者在語言翻譯[練中來可以使用不同語言的網

或其他文件的平行版本。你需要向神經網絡展示多少據(jù)來[練它完成一項特定任務要同樣來這很難從第一原理上估計。當然來通過使用“轉移學習”來“轉移”

諸如已經在另一

網絡中學習過的重要特征列表的東西來可以大大降低要求。但一來說來神經網絡需要“到大量的例子”才能[練好。而至少對于某些任務來說來神經網絡的一重要傳說是來這些例子可能是非常重復的。事實上來向神經網絡展示所有的例子是一標準的策略來一遍又一遍。在每“[練回合”(或

“epochs”)中來神經網絡至少會處于一稍微不同的狀態(tài)來而以某種方式“提醒”它某特定的例子對于讓它“記住那例子”是很有用的。(是的來也許這類似于人類記憶中的重復的有用性)。但往往只是反復重復同一例子是不夠的。還需要向神經網絡展示這例子的變化。而神經網絡理論的一特點是來這些“據(jù)增強”的變化不一定要復雜才有用。只要用基本的圖像處理方法稍微修改一下圖像來就可以使它們在神經網絡[練中基本上“像新的一樣好”。同樣來當人們沒有實際的視頻等來[練自動駕駛汽車時來人們可以繼續(xù)從模擬的視頻游戲環(huán)境中獲得

據(jù)來而不需要實際的真實世界場景的所有細節(jié)。像ChatGPT這樣的東西如何呢要嗯來它有一很好的特點來那就是它可以進行

“無監(jiān)督學習”來這使得它更容易得到用于[練的例子?;仡櫼幌聛鞢hatGPT的基本任務是找出如何繼續(xù)它所給的一段文字。因此來為了獲得“[練實例”來我們所要做的就是獲得一段文本來并將其結尾遮蓋起來來然后將其作為“[練的輸入”——“輸出”是完整的?未被遮蓋的文本。我們稍后會詳細討論這

問題來但主要的一點是來與學習圖片中的內容不同來不需要“明確的標簽”天ChatGPT

實際上可以直接從它所得到的任何文本例子中學習。好吧來那么神經網絡的實際學習過程是怎樣的呢要歸根結底來這都是為了確定什么權重能夠最好地捕捉所給的[練實例。有各種詳細的選擇和“超參設置”(之所以被稱為超參來是因為可以把權重作是“參

”)來可以用來調整如何完成這一過程。有不同的損失函選擇(平方之和?絕對值之和來等等)。有不同的方法來進行損失最小化(每一步要在權重空間中移動多遠來等等)。然后還有一些問題來比如要展示多大的“一批”例子來獲得每一試圖最小化的損失的連續(xù)估計。而且來是的來人們可以應用機器學習(例如來我們在Wolfram語言中所做的)來實現(xiàn)機器學習的自動化——自動設置超參等東西。但最終來整[練過程的特點是到損失是如何逐漸

少的(如這WolframLanguage

的小型[練的進度監(jiān)視器)就而人們通常到的是來損失在一段時間內少來但最終在某

恒定值上趨于平緩。如果這值足夠小來那么可以認為[練是成功的天否則來這可能是一

應該嘗試改變網絡結構的信號。說可能是一

方便的設置來但并不清楚它是否是實現(xiàn)我們所需功能的最佳能否告訴我們“學習曲線”

要花多長時間才能變平要就像許多其他事情一樣來似乎有近似的縮放關系來這取決于神經網絡的大小和使用的據(jù)量。但一的結論是來[練一神經網絡是很難的來需要大量的計算努力。作為一實際問題來這些努力的絕大部分都花在了對字陣列的操作上來而這正是GPU所擅長的——這就是為什么神經網絡[練通常受限于GPU

的可用性。在未來來是否會有從根本上更好的方法來[練神經網絡來或者一地做神經網絡的工作要我認為來幾乎可以肯定。神經網絡的基本理念是用大量簡單(本質上相同)的組件創(chuàng)建一靈活的“計算結構”來并讓這“結構”能夠被逐步修改來以便從實例中學習。在目前的神經網絡中來人們基本上是使用微積分的思想——

應用于實——

來做這種增量修改。但越來越清楚的是來擁有高精度的字并不重要天即使用目前的方法來8位或更少的

字可能也足夠了。像蜂窩自動機這樣的計算系統(tǒng)來基本上是在許多單獨的比特上并行操作的來如何做這種增量修改從來都不清楚來但沒有理由認為它不可能。事實上來就像“2012年深度學習的突破”一樣來這種增量修改在更復雜的情況下可能比簡單的情況下更容易。神經網絡——也許有點像大腦——被設定為擁有一

基本固定的神經元網絡來被修改的是它們之間連接的強度(“重量”)。(也許至少在年輕的大腦中來大量的完全新的連接也可以增長。)

但是來雖然這對生物學來方式。而涉及漸進式網絡重寫的東西(也許讓人想起我們的物理項目)最終可能會更好。但即使在現(xiàn)有的神經網絡框架內來目前也有一關鍵的限制就現(xiàn)在的神經網絡[練從根本上說是連續(xù)的來每一批例子的效果都被傳播回來以更新權重。事實上來就目前的計算機硬件而言——即使考慮到GPU——在[練期間來神經網絡的大部分時間都是“閑置”的來每次只有一部分被更新。從某種意義上說來這是因為我們目前的計算機往往有獨立于

CPU(或GPU)的內存。但在大腦中來這大概是不同的——每一“記憶元素”(即神經元)也是一潛在的活躍的計算元素。如果我們能夠以這種方式設置我們未來的計算機硬件來就有可能更有效地進行[練?!爱斎粊硪?/p>

足夠大的網絡可以做任何事情好”像ChatGPT這樣的能力似乎令人印象深刻來人們可能會想象來如果人們能夠“繼續(xù)下去”來[練越來越大的神經網絡來那么它們最終將能夠“做任何事情”。如果人們關注的是那些容易被人類直接思考的事物來那么很有可能是這樣的。但是來過去幾百年科學的教[是來有些東西可以通過形式化的過程來計算出來來但并不容易被人類的直接思維所獲得。非瑣碎的學就是一大例子。但一

的情況其實是計算。而最終的問題是計算的不可還原性現(xiàn)象。有一些計算來人們可能認為需要很多步驟才能完成來但事實上可以“簡化”為相當直接的東西。但計算的不可簡化性的發(fā)現(xiàn)意味著這并不總是有效的。相反來有些過程——可能就像下面這過程——要弄清楚發(fā)生了什么來必然需要對每

計算步驟進行追蹤就我們通常用大腦做的那些事情來大概是專門為避免計算的不可還原性而選擇的。在一人的大腦中做學需要特別的努力。而且來在實踐中來僅僅在一人的大腦中“思考”任何非微觀程序的操作步驟來在很大程度上是不可能的。當然來為此我們有計算機。有了計算機來我們可以很容易地做很長的?計算上不可簡化的事情。而關鍵的一點是來這些事情一

來說沒有捷徑。是的來我們可以記住很多關于在某特定計算系統(tǒng)中發(fā)生的具體例子。也許我們甚至可以到一些(“計算上可還原的”)模式來使我們可以做一點概括。但問題是來計算上的不可還原性意味著我們永遠無法保證意外不會發(fā)生——只有通過明確地進行計算來你才能知道在任何特定情況下實際發(fā)生了什么。最后來在可學習性和計算的不可重復性之間存在著一種基本的緊張關系。學習實際上是通過利用規(guī)則性來壓縮據(jù)。但計算上的不可復制性意味著最終對可能存在的規(guī)性有一

限制。作為一實際問題來我們可以想象將一些小的計算設備——如蜂窩自動機或圖靈機——構建成像神經網絡這樣的可[練系統(tǒng)。而且來這種設備確實可以作為神經網的好“工具”來就像Wolfram|Alpha可以作為ChatGPT的好工具。但計算的不可簡化性意味著我們不能望“進入”這些設備并讓它們學習?;蛘邠Q話說來在能力和可[練性之間有一最終的權衡就你越想讓一系統(tǒng)“真正利用”它的計算能力來它就越會顯示出計算的不可復制性來它的可[練性就越低。而它越是從根本上可[練來它就越不能做復雜的計算(對于目前的ChatGPT來說來情況實際上要極端得多來因為用于生成每輸出符號的神經網絡是一純粹的

“前饋”網絡來沒有循環(huán)來因此沒有能力做任何具有非復雜“控制流”

的計算)。當然來人們可能會問來能夠做不可還原的計算是否真的很重要。事實上來在人類歷史的大部分時間里來這并不特別重要。但我們的現(xiàn)代技術世界是建立在至少使用學計算的工程之上的來而且越來越多地使用更普遍的計算。如果我們一下自然界來它充滿了不可簡化的計算——我們正在慢慢理解如何模仿并用于我們的技術目的。是的來一神經網絡當然可以注意到自然世界中的各種規(guī)性來而我們也可能很容易通過“無助的人類思維”注意到這些規(guī)

性。但是來如果我們想要解決屬于學或計算科學范你的事情來神經網絡是無法做到的

——除非它有效地“作為工具”使用一“普通”

的計算系統(tǒng)。但是來這一切都有一些潛在的混了之處。在過去來有很多任務——包括寫文章——我們認為對計算機來說“從根本上說太難了”。而現(xiàn)在我們到這些任務是由ChatGPT等完成的來我們傾向于突然認為計算機一定是變得更加強大了來特別是超越了它們已經基本能夠做到的事情(比如逐步計算蜂窩自動機等計算系統(tǒng)的行為)。但這并不是正確的結論。計算上不可還原的過程仍然是計算上不可還原的來而且對計算機來說仍然是根本性的困難——即使計算機可以輕易地計算它們的單步驟。相反來我們應該得出的結論是來我們人類可以做的來但我們不認為計算機可以做的任務來比如寫文章來實際上在某種意義上比我們想象的更容易計算。換話說來神經網絡之所以能夠成功地寫出一篇文章來是因為寫一篇文章被證明是一比我們想象的“計算上更淺”的問題。從某種意義上說來這使我們更接近于“擁有一種理論”來即我們人類是如何做到像寫文章這樣的事情的來或在一

情況下處理語言。如果你有一足夠大的神經網絡來那么來是的來你可能能夠做任何人類能夠輕易做到的事情。但是來你不會捕捉到自然界一能做的事情——或者我們從自然界塑造的工具能做的事情。而正是這些工具的使用——

無論是實用的還是概念性的——使得我們在近幾世紀里能夠超越

“純粹的無助的人類思維” 所能達到的界限來并為人類的目的捕捉到物理和計算宇宙中的更多東西?!?

—嵌入的概念神經網絡——至少在它們目前的設置中——從根本上說是基于

字的。因此來如果我們要用它們來處理像文本這樣的東西來我們就需要一種方法來用

字表示我們的文本。當然來我們可以開始(基本上就像ChatGPT那樣)為字典中的每詞分配一字。但是來有一重要的想法——例如來它是ChatGPT

的核心——超出了這范圍。這就是“嵌入”的概念。我們可以把嵌入作是一種嘗試用字陣列來表示事物“本質”的方式——其特性是

“附近的事物”由附近的

字來表示。因此來舉例來說來我們可以把一詞的嵌入作是試圖在一種“意義空間”中排列詞語來在這空間中來以某種方式“在意義上接近”

的詞語在嵌入中出現(xiàn)。實際使用的嵌入——例如在ChatGPT中——

往往涉及大量的

字列表。但是如果我們把它投射到二維空間來我們就可以顯示出嵌入的單詞是如何排列的例子就而且來是的來我們

到的東西在捕捉典型的日常印象方面做得非常好。但是來我們怎樣才能構建這樣一嵌入呢要大致的想法是查大量的文本(這里是來自網絡的50詞)來然后不同的詞出現(xiàn)的“環(huán)境”

有多相似。因此來例如來“alligator”和“crocodile”經常會在其他類似的

子中互換出現(xiàn)來這意味著它們在嵌入中會被放在附近。但是“蘿卡”和“老鷹”

不會出現(xiàn)在其他類似的

子中來所以它們在嵌入中會被放在很遠的地方。但是來如何使用神經網絡實際實現(xiàn)這樣的東西呢要讓我們先來討論一下不是針對單詞的嵌入來而是針對圖像的嵌入。我們想找到某種方法來通過字列表來描述圖像來使“我們認為相似的圖像”被分配到相似的字列表中。我們如何判斷我們是否應該

“認為圖像相似”要好吧來如果我們的圖像是來例如來于寫的字來我們可能會“認為兩圖像是相似的”來如果它們是相同的字。早些時候來我們討論了一被[練來識別于寫

字的神經網絡。我們可以認為這神經網絡被設置成在其最終輸出中把圖像放入

10

不同的倉來每字一

倉。但是來如果我們在做出“這是一‘4’”的最終決定之前來“攔截”神經網絡內部發(fā)生的事情呢要我們可能會想到來在神經網絡中來有一些字將圖像描述為“大部分是4來但有一點是2”或類似的情況。而我們的想法是挑選出這樣的

字作為嵌入的元素。所以這里有一概念。我們不是直接試圖描述“什么圖像在什么其他圖像附近”來而是考慮一定義明確的任務(在這種情況下是字識別)來我們可以獲得明確的[練據(jù)——然后利用這樣一事實來即在做這

任務時來神經網絡隱含地要做出相當于“接近度決定”的決定。因此來我們不需要明確地談論“圖像的接近性”來而只是談論一圖像代表什么

字的具體問題來然后我們“把它留給神經網絡”

來隱含地決定這意味著什么“圖像的接近性”。那么來這對

字識別網絡來說是如何更詳細地工作的呢要我們可以認為這

網絡是由11連續(xù)的層組成的來我們可以用圖標來概括它(激活函顯示為獨立的層)就在開始時來我們向第一層輸入實際的圖像來用像素值的二維陣列表示。在最后一層來我們得到了一由10值組成的組來我們可以認為這表示網絡對圖像對應于0到9的每字的

“確定程度”。輸入圖像(于寫的

4)來最后一層的神經元的值就是就換話說來神經網絡此時已經“非常確定”這圖像是

4來為了實際得到輸出“4”來我們只需挑選出

值最大的神經元的位置。但是來如果我們再往前一步呢要網絡中的最后一操作是一

所謂的softmax來它試圖

“強制確定”。但在這之前來神經元的值是就代表“4”

的神經元仍然有最高的值。但在其他神經元的

值中也有信息。我們可以期望這字列表在某種意義上可以用來描述圖像的“本質”來從而提供我們可以用作嵌入的東西。因此來例如來這里的每一4都有一

稍微不同的

“簽名”(或

“特征嵌入”)

——

都與

8

的非常不同就在這里來我們基本上是用10

字來描述我們的圖像特征。但通常情況下來使用比這更多的字會更好。例如來在我們的字識別網絡中來我們可以通過挖掘前一層得到一500字的陣列。而這可能是一

合理的

組來作為

“圖像嵌入”使用。如果我們想對于寫字的

“圖像空間”進行明確的可視化來我們需要“降低維度”來有效地將我們得到的500

維向量投射到來例如來三維空間就我們剛剛談到為圖像創(chuàng)建一

特征(從而嵌入)來有效地基于識別圖像的相似性來確定(根據(jù)我們的[練集)它們是否對應于同一于寫字。如果我們有一[練集來比如說來確定每張圖片屬于5000種常見類型的物體(貓?狗?椅子……

)來我們就可以更普遍地對圖片做同樣的事情。通過這種方式來我們可以制作一圖像嵌入來它被我們對常見物體的識別所“在定”來但然后根據(jù)神經網絡的行為

“圍繞它進行概括”。關鍵是來只要這種行為與我們人類感知和解釋圖像的方式相一致來這將最終成為一“對我們來說是正確的”的嵌入來并在實踐中做“類似人類判斷”的任務時有用。好吧來那么我們如何遵循同樣的方法來尋找單詞的嵌入呢要關鍵是要從一

我們可以隨時進行[練的關于單詞的任務開始。而標準的任務是“單詞預測”。假設我們得到了“thecat”?;谝淮笮偷奈谋菊Z料庫(比如說來網絡上的文本內容)來可能“填空”的不同單詞的概率是多少要或者說來給定“黑_”來不同的“側翼詞”

的概率是多少要我們如何為神經網絡設置這問題要歸根結底來我們必須用字來表述一切。做到這一點的一方法就是為英語中5萬左右的常用詞中的每一分配一獨特的字。因此來例如來“the”可能是914來而“cat”(前面有一空格)可能是3542。(這些是GPT-2所使用的實際字。)所以對于“the_cat”問題來我們的輸入可能是{914,3542}。輸出應該是什么樣子的呢要好吧來它應該是一由50000左右的

字組成的列表來有效地給出了每可能的

“填充”單詞的概率。再一次來為了找到一嵌入來我們要在神經網絡“達到結論”之前“攔截”它的“內部”——然后撿起在那里出現(xiàn)的字列表來我們可以把它作是“每

詞的特征”。好吧來那么這些表征是什么樣子的呢要在過去的10

年里來已經有一系列不同的系統(tǒng)被開發(fā)出來(word2vec,GloVe,BERT,GPT,……)來每一都是基于不同的神經網絡方法。但最終來所有這些系統(tǒng)都是通過百到

字的列表來描述單詞的特征。在它們的原始形式中來這些“嵌入向量”

是相當無信息的。例如來這里是GPT-2產生的三

特定詞的原始嵌入向量就如果我們做一些事情來比如測量這些向量之間的距離來那么我們就可以發(fā)現(xiàn)像單詞的“接近性”

這樣的東西。稍后我們將更詳細地討論我們可能認為這種嵌入的“認知”意義。但現(xiàn)在主要的一點是來我們有一種方法可以有效地將單詞變成“神經網絡友好”的

字集合。但實際上來我們可以更進一步來不僅僅是用字的集合來描述單詞天我們還可以對單詞的序列來或者整文本塊進行描述。在ChatGPT中來它就是這樣處理事情的。它把目前得到的文本來生成一嵌入?量來表示它。然后來它的目標是找到接下來可能出現(xiàn)的不同詞匯的概率。它將其答案表示為一字列表來該列表基本上給出了50,000

左右的可能詞匯的概率。(嚴格地說來ChatGPT不處理單詞來而是處理“符號”(token)——

方便的語言單位來可能是整單詞來也可能只是

“pre”或“ing”或“ized”這樣的片段。使用符號使ChatGPT更容易處理罕見的?復合的和非英語的詞匯來有時來無論好壞來都可以發(fā)明新的詞匯。)—8

—ChatGPT

內部好了來我們終于準備好討論ChatGPT

內部的內容了。是的來最終來它是一巨大的神經網絡——目前是所謂的GPT-3網絡的一版本來有

1750

權重。在許多方面來這是一非常像我們討論過的其他神經網絡。但它是一特別為處理語言問題而設置的神經網絡。它最顯著的特征是一叫做“轉化器”

的神經網絡架構。在我們上面討論的第一神經網絡中來任何給定層的每神經元基本上都與前一層的每神經元相連(至少有一些權重)。但是來如果一人在處理具有特殊的?已知的結構的據(jù)時來這種全連接的網絡(大概)是過剩的。因此來例如來在處理圖像的早期階段來典型的做法是使用所謂的卷積神經網絡(“convnets”)來其中的神經元被有效地布置在一類似于圖像中的像素的網格上——

并且只與網格上附近的神經元相連。變換器的想法是為構成一段文本的標記序列做一些至少有點類似的事情。但是來轉化器并不只是在序列中定義一可以有連接的固定區(qū)域來而是引入了“注意”的概念——以及對序列的某些部分比其他部分更“注意”

的概念。也許有一天來僅僅啟動一通用的神經網絡并通過[練進行所有的定制是有意義的。但至少到現(xiàn)在為止來將事情“模塊化”

在實踐中似乎是至關重要的來就像變壓器那樣來可能也像我們的大腦那樣。好吧來那么ChatGPT(或者說來它所基于的GPT-3網絡)實際上是做什么的要回想一下來它的總體目標是以“合理”

的方式延續(xù)文本來基于它所

到的[練(包括從網絡上查的文本等)來所以在任何時候來它都有一定量的文本來它的目標是為下一要添加的標記提出適當?shù)倪x擇。它的操作分為三

基本階段就首先來它獲取與迄今為止的文本相對應的標記序列來并找到代表這些標記的嵌入(即一字陣列)。其次來它以“標準的神經網絡方式”對這一嵌入進行操作來值“通過”網絡中的連續(xù)層來產生一

新的嵌入(即一

新的字陣列)。然后來它從這組的最后一部分來生成一

大約50,000值的組來這些值變成了不同的可能的下一

標記的概率。(而且來是的來恰好使用的標記的量與英語中的常用詞的量相同來盡管只有大約3000標記是整單詞來其余的是片段。)關鍵的一點是來這

管道的每一部分都是由一

神經網絡實現(xiàn)的來其權重是由網絡的端到端[練決定的。換話說來實際上來除了整體架構之外來沒有任何東西是

“明確設計的”天所有東西都是從[練據(jù)中

“學習”的。然而來在架構的設置方式上有很多細節(jié)來反映了各種經驗和神經網絡的傳說。而且來盡管這肯定是進入了雜草叢中來但我認為談論其中的一些細節(jié)是有用的來尤其是為了了解建立像ChatGPT

這樣的東西所需要的東西。首先是嵌入模塊。下面是GPT-2的Wolfram

語言示意圖就輸入是一由n標記組成的向量(如上一節(jié)所述來由1到50,000

的整

表示)。這些標記中的每一都被(通過單層神經網絡)轉換成一

嵌入向量(GPT-2的長度為768來ChatGPT的GPT-3為12,288)。同時來還有一“二級路徑”來它將標記的(整)位置序列來并從這些整中創(chuàng)建另一

嵌入向量。最后來來自令牌值和令牌位置的嵌入向量被加在一起——

產生嵌入模塊的最終嵌入向量序列。為什么只是把令牌值和令牌位置的嵌入向量加在一起要我不認為這有什么特別的科學依據(jù)。只是各種不同的東西都被嘗試過來而這是一

似乎有效的方法。這也是神經網絡傳說的一部分來從某種意義上說來只要你的設置是“大致正確的”來通常就可以通過做充分的[練來確定細節(jié)來而不需要真正“在工程層面上理解”

神經網絡最終是如何配置它的。下面是嵌入模塊所做的工作來對字符串“hellohellohellohellohellobye

byebyebyebyebyebyebyebyebyebyebyebyebyebyebyebyebyebyebyebyebyebyebyebyebyebyebyebyebyebyebyebyebye

2”就每標記的嵌入向量的元素都顯示在面下方來在整

面上來我們首先

到的是“hello”的嵌入來然后是“bye”的嵌入。上面的第二組是位置嵌入——其起來有點隨機的結構只是“碰巧學到的”(在這種情況下是

GPT-2)。好了來在嵌入模塊之后來是轉化器的“主要事件”就一連串所謂的“注意塊”(GPT-2為12來ChatGPT的GPT-3為96

)。這一切都很復雜—— 讓人想起典型的難以理解的大型工程系統(tǒng)來或者來生物系統(tǒng)。但無論如何來這里是一單一的

“注意塊”的示意圖(對于GPT-2)就在每這樣的注意力塊中來有一系列的“注意力頭”(GPT-2有12

來ChatGPT的GPT-3有96)——每一都是獨立操作嵌入向量中的不同值塊的。(是的來我們不知道為什么分割嵌入向量是好主意來或者它的不同部分有什么“意義”天這只是“被發(fā)現(xiàn)可行”

的事情之一)。好吧來那么注意頭是做什么的要基本上來它們是一種在標記序列中“回顧”的方式(即在迄今為止產生的文本中)來并將過去的內容“打包”

成有助于尋找下一

標記的形式。在上面的第一節(jié)中來我們談到了使用2-gram概率來根據(jù)它們的直接前身來挑選單詞。變換器中的“注意”機制所做的是允許“注意”

甚至更早的詞——

因此有可能捕捉到來比如說來動詞可以代在子中出現(xiàn)在它們之前的許多詞的名詞的方式。在更詳細的層面上來注意力頭所做的是以一定的權重重新組合與不同標記相關的嵌入向量中的大塊。因此來例如來在第一注意力區(qū)塊中的

12

注意力頭(在

GPT-2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論