萬字長文解釋 ChatGPT 在做什么,以及為什么它能發(fā)揮作用?(1)
ChatGPT 是由 OpenAI 開發(fā)的頂尖 AI 模型,旨在基于人們輸入的內(nèi)容生成類似的人類語言,憑借其強大的語言理解和文本生成能力,一經(jīng)發(fā)布就引爆全球技術圈。Wolfram 語言之父 Stephen Wolfram 更是在博客發(fā)布萬字長文(上百張配圖)來解釋 ChatGPT 強大功能的背后。
本文借助 DeepL 對原文進行了編譯,感興趣的小伙伴也可以移步到原文:https://writings.stephenwolfram.com/2023/02/what-is-chatgpt-doing-and-why-does-it-work/
注:為保證閱讀效果,本文以作者第一人稱的形式進行發(fā)布。
作者 | Stephen Wolfram翻譯 | DeepL 工具 校對 | 李笑來
出品 | CSDN(ID:CSDNnews)
ChatGPT 能夠自動生成一些讀起來甚至表面上像人類寫的文字的東西,這很了不起,而且出乎意料。但它是如何做到的?為什么它能發(fā)揮作用?
我在這里的目的是大致介紹一下 ChatGPT 內(nèi)部的情況,然后探討一下為什么它能很好地生成我們認為是有意義的文本。我應該在一開始就說,我將把重點放在正在發(fā)生的事情的大畫面上,雖然我將提到一些工程細節(jié),但我不會深入研究它們。(我所說的實質(zhì)內(nèi)容也同樣適用于目前其他的 “大型語言模型” LLM 和 ChatGPT)。
首先要解釋的是,ChatGPT 從根本上說總是試圖對它目前得到的任何文本進行 “合理的延續(xù)”,這里的 “合理” 是指 “在看到人們在數(shù)十億個網(wǎng)頁上所寫的東西之后,人們可能會期望某人寫出什么”。
因此,假設我們已經(jīng)得到了 “人工智能最好的是它能去做 ……” 的文本(“The best thing about AI is its ability to”)。想象一下,掃描數(shù)十億頁的人類書寫的文本(例如在網(wǎng)絡上和數(shù)字化書籍中),并找到這個文本的所有實例 —— 然后看到什么詞在接下來的時間里出現(xiàn)了多少。ChatGPT 有效地做了類似的事情,除了(正如我將解釋的)它不看字面文本;它尋找在某種意義上 “意義相符” 的東西。但最終的結果是,它產(chǎn)生了一個可能出現(xiàn)在后面的詞的排序列表,以及 “概率”。
值得注意的是,當 ChatGPT 做一些事情,比如寫一篇文章時,它所做的基本上只是反復詢問 “鑒于到目前為止的文本,下一個詞應該是什么?” —— 而且每次都增加一個詞。(更準確地說,正如我將解釋的那樣,它在添加一個 “標記”,這可能只是一個詞的一部分,這就是為什么它有時可以 “編造新詞”)。
但是,好吧,在每一步,它得到一個帶有概率的單詞列表。但是,它究竟應該選擇哪一個來添加到它正在寫的文章(或其他什么)中呢?人們可能認為它應該是 “排名最高” 的詞(即被分配到最高 “概率” 的那個)。但是,這時就會有一點巫術開始悄悄出現(xiàn)。因為出于某種原因 —— 也許有一天我們會有一個科學式的理解 —— 如果我們總是挑選排名最高的詞,我們通常會得到一篇非常 “平淡” 的文章,似乎從來沒有 “顯示出任何創(chuàng)造力”(甚至有時一字不差地重復)。但是,如果有時(隨機的)我們挑選排名較低的詞,我們會得到一篇 “更有趣” 的文章。
這里有隨機性的事實意味著,如果我們多次使用同一個提示,我們很可能每次都得到不同的作文。而且,為了與巫術的想法保持一致,有一個特定的所謂 “溫度” 參數(shù)(temperature parameter),它決定了以什么樣的頻率使用排名較低的詞,而對于論文的生成,事實證明,0.8 的 “溫度” 似乎是最好的。(值得強調(diào)的是,這里沒有使用任何 “理論”;這只是一個在實踐中被發(fā)現(xiàn)可行的問題)。例如,“溫度” 的概念之所以存在,是因為恰好使用了統(tǒng)計物理學中熟悉的指數(shù)分布,但沒有 “物理” 聯(lián)系 —— 至少到目前為止我們?nèi)绱苏J為。)
在我們繼續(xù)之前,我應該解釋一下,為了論述的目的,我大多不會使用 ChatGPT 中的完整系統(tǒng);相反,我通常會使用更簡單的 GPT-2 系統(tǒng),它有一個很好的特點,即它足夠小,可以在標準的臺式電腦上運行。因此,對于我展示的所有內(nèi)容,我將能夠包括明確的沃爾弗拉姆語言(Wolfram Language)代碼,你可以立即在你的計算機上運行。(點擊這里的任何圖片都可以復制其背后的代碼 —— 譯者注:請查看文墨的 “原文鏈接”,在其中點擊圖片獲取代碼)。
稍后,我們將看看這個神經(jīng)網(wǎng)的內(nèi)部,并談談它是如何工作的。但現(xiàn)在我們可以把這個 “網(wǎng)絡模型” 作為一個黑匣子應用于我們迄今為止的文本,并要求按概率計算出該模型認為應該遵循的前五個詞:
這就把這個結果變成了一個明確的格式化的 “數(shù)據(jù)集”:
如果重復 “應用模型” —— 在每一步中加入概率最高的詞(在此代碼中被指定為模型的 “決定”),會發(fā)生什么:
如果再繼續(xù)下去會發(fā)生什么?在這種情況下(“零溫度”),很快就會出現(xiàn)相當混亂和重復的情況:
但是,如果不總是挑選 “頂級” 詞,而是有時隨機挑選 “非頂級” 詞(“隨機性” 對應 “溫度” 為 0.8)呢?人們又可以建立起文本:
而每次這樣做,都會有不同的隨機選擇,文本也會不同 —— 如這 5 個例子:
值得指出的是,即使在第一步,也有很多可能的 “下一個詞” 可供選擇(溫度為 0.8),盡管它們的概率下降得很快(是的,這個對數(shù)圖上的直線對應于 n-1 的 “冪律” 衰減,這是語言的一般統(tǒng)計的特點):
那么,如果繼續(xù)下去會發(fā)生什么?這里有一個隨機的例子。它比頂層詞(零溫度)的情況要好,但頂多還是有點奇怪:
這是用最簡單的 GPT-2 模型(來自 2019 年)做的。用較新和較大的 GPT-3 模型,結果更好。這里是用同樣的 “提示” 產(chǎn)生的頂部文字(零溫度),但用最大的 GPT-3 模型:
這是 “溫度為 0.8” 時的一個隨機例子:
好吧,ChatGPT 總是根據(jù)概率來選擇下一個詞。但是這些概率從何而來?讓我們從一個更簡單的問題開始。讓我們考慮一次生成一個字母(而不是單詞)的英語文本。我們怎樣才能算出每個字母的概率呢?
我們可以做的一個非常簡單的事情就是取一個英語文本的樣本,然后計算不同字母在其中出現(xiàn)的頻率。因此,舉例來說,這是計算維基百科上關于 “貓” 的文章中的字母:
而這對 “狗” 也有同樣的作用:
結果相似,但不一樣(“o” 在 “dogs” 文章中無疑更常見,因為畢竟它出現(xiàn)在 “dog” 這個詞本身)。盡管如此,如果我們采取足夠大的英語文本樣本,我們可以期待最終得到至少是相當一致的結果。
下面是我們得到的一個樣本,如果我們用這些概率生成一個字母序列:
我們可以通過添加空格將其分解為 “單詞”,就像它們是具有一定概率的字母一樣:
我們可以通過強迫 “字長” 的分布與英語中的分布相一致,在制造 “單詞” 方面做得稍微好一點:
我們在這里沒有碰巧得到任何 “實際的詞”,但結果看起來稍好一些。不過,要想更進一步,我們需要做的不僅僅是隨機地分別挑選每個字母。例如,我們知道,如果我們有一個 “q”,下一個字母基本上必須是 “u”。
這里有一個字母本身的概率圖:
這是一個顯示典型英語文本中成對字母(“2-grams”)概率的圖??赡艿牡谝粋€字母顯示在頁面上,第二個字母顯示在頁面下:
例如,我們在這里看到,除了 “u” 行,“q” 列是空白的(概率為零)。好了,現(xiàn)在我們不再是一次生成一個字母的 “單詞”,而是使用這些 “2-gram” 概率,一次看兩個字母來生成它們。下面是一個結果的樣本 —— 其中恰好包括一些 “實際的詞”:
有了足夠多的英語文本,我們不僅可以對單個字母或成對字母(2-grams)的概率進行很好的估計,而且還可以對較長的字母進行估計。如果我們用逐漸變長的 n-gram 概率生成 “隨機詞”,我們就會發(fā)現(xiàn)它們逐漸變得 “更現(xiàn)實”:
但現(xiàn)在讓我們假設 —— 或多或少像 ChatGPT 那樣 —— 我們處理的是整個單詞,而不是字母。英語中大約有 40,000 個合理的常用詞。通過查看大型英語文本語料庫(比如幾百萬本書,總共有幾千億個單詞),我們可以得到每個單詞的常見程度的估計。利用這一點,我們可以開始生成 “句子”,其中每個詞都是獨立隨機抽取的,其出現(xiàn)的概率與語料庫中的相同。下面是我們得到的一個樣本:
不足為奇的是,這是一派胡言。那么,我們?nèi)绾尾拍茏龅酶媚??就像對待字母一樣,我們可以開始考慮的不僅僅是單個詞的概率,還有成對的或更長的詞的 n-grams 的概率。在成對的情況下,以下是我們得到的 5 個例子,所有情況都是從 “貓” 這個詞開始的:
它變得稍微 “看起來很合理” 了。我們可以想象,如果我們能夠使用足夠長的 n-grams,我們基本上會 “得到一個 ChatGPT” —— 在這個意義上,我們會得到一些東西,以 “正確的總體論文概率” 生成論文長度的單詞序列。但問題是:沒有足夠的英文文本可以推導出這些概率。
在網(wǎng)絡的抓取中,可能有幾千億個單詞;在已經(jīng)數(shù)字化的書籍中,可能有另外幾千億個單詞。但是有了 4 萬個常用詞,即使是可能的 2-grams 的數(shù)量也已經(jīng)是 16 億了,可能的 3-grams 的數(shù)量是 60 萬億。所以我們沒有辦法從現(xiàn)有的文本中估計出所有這些的概率。而當我們達到 20 個字的 “文章片段” 時,可能性的數(shù)量比宇宙中的粒子數(shù)量還要多,所以從某種意義上說,它們永遠不可能全部被寫下來。
那么我們能做什么呢?最大的想法是建立一個模型,讓我們估計序列出現(xiàn)的概率 —— 即使我們在所看的文本語料庫中從未明確見過這些序列。而 ChatGPT 的核心正是一個所謂的 “大型語言模型”(LLM),它的建立可以很好地估計這些概率。
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。