73年前,夏農已經給大模型發展埋下一顆種子

机器之心發表於2024-07-02
AI 考古,追溯到了祖師爺頭上。

當今 AI 領域爆火的大語言模型(LLM),其原理是夏農提出來的?

今天,普林斯頓大學教授承現峻(Sebastian Seung)丟擲了這樣一個觀點:1951 年,在貝爾實驗室(總部位於新澤西州 Murray Hill)工作的克勞德・夏農提出了預測下一個單詞的問題,這成為了當前大語言模型(LLM)的種子。

如今很多看似新潮前沿的概念,其實距離提出已經相隔了好幾十年,即使在電腦科學這樣的新興領域,例子也屢見不鮮。這個觀點以及提到的 Murray Hill 引起熱議,圖靈獎得主、Meta 首席科學家 LeCun 表示,新澤西州的 Murray Hill、Florham Park 和普林斯頓都「誕生」了很多有影響力的工作。

LeCun 又列舉了很多知名的研究成果:

  • Hopfield 網路(美國科學家 Hopfield 同時在貝爾實驗室和普林斯頓大學任職)。
  • ConvNets
  • Boosting/Adaboost
  • 非負矩陣分解
  • 支援向量機(SVM)和核機
  • 結構化預測
  • 計算學習理論 / VC 理論中的大量內容

圖片

那麼說在這其中,夏農給如今通向 AGI 的大模型起了個頭,是怎麼一回事呢?

討論中提到的 IT 祖師爺克勞德・夏農的論文是《Prediction and Entropy of Printed English》。

圖片

論文連結:https://www.princeton.edu/~wbialek/rome/refs/shannon_51.pdf

該研究於 1951 年 1 月發表在期刊《The Bell System Technical Journal》上,至今已被各路學者引用過超過 4000 次。

這篇論文中,夏農主要探討了如何估算語言的熵(entropy)和冗餘度(redundancy),並提出了一種新方法。

其中:

  • 語言的熵是衡量每個字母平均產生的資訊量的統計引數。如果語言被最有效地轉換成二進位制數字(0 或 1),熵表示每個字母平均需要的二進位制數字數量。
  • 冗餘度則衡量由於語言的統計結構(如字母頻率、特定字母的後續趨勢等)對文字施加的約束。

在定義了熵和冗餘之後,就可以考慮把這些概念應用一下了。夏農在他的論文中給出了兩種估計英語熵的方法。冗餘,或對英語文字施加的約束數量,導致其整體熵的下降。例如,規則「i before e except after c」,以及 q 必須始終跟 u 的事實是使英語更加冗餘的依賴關係。語法規則、詞性以及我們無法編造單詞的事實也使英語變得有冗餘。

英語中的冗餘有時實際上是有益的,因為否則人們如何辨別在嘈雜的房間裡說了什麼?冗餘允許人們在只有部分資訊傳來時推斷出所說的內容。例如,如果聽到「Turn phat mufic down!」,人們可以相當好地猜測說話者的意思。

計算英語熵的一種可能方法是使用 N-gram。

給定自然語言 L 的足夠長的字元序列 S,考察所有長度為 N 的子字串

圖片

定義 N-gram 熵(Entropy)FN 如下。

圖片

當已知前 N - 1 個字母時,我們可以統計計算出下一個字母的熵。隨著 N 的增加,熵接近 H,此即英語的熵。以下是夏農論文中計算出的值。FN 是當已知前 N - 1 個字母時與第 N 個字母相關的熵。計算 FN 統計資料的難度是 O (26^N),因為有那麼多 N 個字母的序列。請注意,F0 只是字母集的最大熵,其中每個字母都有相等的機率。

圖片

27 個字母的序列,空格也算作一個字母。幾乎總是可以從沒有空格的單詞序列中填充空格。因此空格基本上被視為是多餘的,如果考慮空格,會導致計算出的熵值較低。只有在沒有考慮統計資料的情況下,即 F0,新增空格後熵才會更高。這只是增加了另一個可能的符號,就意味著更多的不確定性。

夏農建議的另一種策略是計算與英語中每個單詞相關的熵,然後取加權平均值。夏農使用近似函式來估計超過 8000 個單詞的熵。他得到的每個單詞的熵值為 11.82 bit,由於平均每個單詞有 4.5 個字母,因此每個字母的熵為 2.62 bit。這在上表中以 Fword 給出。

我們已經討論瞭如何從熵計算冗餘度。當所有符號具有相同的可能性時,冗餘度最大,等於 - (log2 (1/26)) = 4.7 bit / 字母。因此,使用公式 1 - H/Hmax,我們可以估算英語的冗餘度。夏農最初估計這個值為 50%,這意味著英語中大約一半的字母是多餘的!

在同一篇文章的後面討論了一種相當巧妙的計算英語熵的方法。它結合了英語的更多特徵,例如統計方法無法明確解釋的思路和上下文。

接下來就是如今我們在 NLP 中經常會提起的概念了:假設人類可以根據他們對該語言的先前瞭解來猜測單詞或短語中的字母。夏農的巧妙想法是利用這種自然的冗餘度衡量標準…… 人類的思維。

他要求受試者逐個猜測短語中的字母。如果受試者猜對了,那麼他 / 她就繼續猜測下一個字母。如果不是,則告訴受試者下一個字母。在一個短語的 129 個字母中,69% 被猜對了。這意味著英語的冗餘度大約為 69%。假設我們只重現那些猜錯的字母,即 31%。那麼我們可以透過複製從頭開始猜測的受試者來恢復原始句子。受試者顯然可以正確猜出 69% 的符號,並且他 / 她擁有其餘的 31%,因此他 / 她可以僅使用大約 31% 的資訊重現原始文字。

實際上,受試者需要的資訊略多於 31%。他 / 她需要知道他 / 她會猜錯的字母在哪裡,因此實際上冗餘度可能會少一點。從理論上講,這是一個很好的例子,但實際上並非如此。句子和受試者的抽樣誤差會導致結果嚴重失真。儘管如此,這個例子有助於說明冗餘的一個實際例子,並闡明瞭如何編碼英語。無需建立英語的統計語法來計算其熵,人類天生就具有語法。

統計計算英語的冗餘有許多實際應用。ASCII 每個字元保留 8 個二進位制數字。然而,考慮到一些計算將英語的熵定為大約 1 位 / 字母,這是非常低效的。這意味著理論上存在一種壓縮方案,其壓縮效果是 ASCII 的 8 倍。現代計算機顯然擁有足夠大的記憶體,因此這種低效率並不重要,但 Huffman 壓縮和 Lempel-Ziv 壓縮演算法在儲存文字時可以節省大量空間。

通常,當人們說英語是冗餘的時,他們指的是大量同義詞使我們的詞典變得雜亂。資訊理論意義上的冗餘是衡量字母 / 符號在語言中使用效率的指標。英語是一種冗餘語言,這不一定是壞事。我們的語言既可以口語也可以書寫,除了效率之外,還帶來了許多問題。我們希望在嘈雜的房間裡也能被人聽懂,我們希望單詞的發音與含義相對應,我們希望能夠輕鬆地發音。資訊率只是英語分析的一小部分。

一個非常有趣的例子可以說明一種語言在統計上能有多好地描述,即英語的 n 階近似,這是夏農最著名的論文《A mathematical theory of communication》裡所提到的。如果一隻猴子知道英語中字母的 n-gram 頻率(其中 n 很大),它能寫出可信的英語文字嗎?此外,這隻猴子「懂」英語嗎?如果 N-gram 猴子在一扇門後面,而人類在另一扇門後面,第三方觀察者能分辨出哪個是猴子嗎?這個問題讓人想起了人工智慧圖靈測試,它沒有簡單的答案。

但如今的大模型原理,正是透過學習大量的文字資料,來預測下一個詞或下一段話的可能性,從而使計算機能夠更好地「理解」和生成人類語言。

圖片

AI 理解了嗎?不好說。但是能猜對嗎?看看如今的 ChatGPT,人們心中都已經有了答案。

這也不禁令人感嘆,夏農真的領先於他的時代。

圖片

參考內容:
https://x.com/SebastianSeung/status/1807395697718604225
https://news.ycombinator.com/item?id=35813991
https://cs.stanford.edu/people/eroberts/courses/soco/projects/1999-00/information-theory/entropy_of_english_9.html

相關文章