相信你或多或少對 GPT 有一定的了解,但我賭你沒聽說過 bGPT。bGPT 的意思是 byte GPT,即字節 GPT。這是一種專門設計用于處理二進制數據和模拟數字世界的深度學習模型。簡單概括,bGPT 突破了傳統語言模型的局限,能夠直接理解和操作二進制數據,拓展了深度學習在原生二進制數據領域的應用邊界。
bGPT 的成果來自于微軟亞洲研究院、清華大學以及中央音樂學院的共同開發,等會你就知道這裏爲什麽會有中央音樂學院了,希望你還沒有忘記五線譜。
從運行邏輯來看,bGPT 反而很像是在解數學題
在矽星人 Pro 的文章《揭秘 Sora:用大語言模型的方法理解視頻,實現了對物理世界的 " 湧現 "》中提到,大語言模型有一個核心功能是通過代碼将多種文本形式進行了統一。正是這種數據結構上的相同,才讓大語言模型實現 " 思考 ",進而生成各種各樣的内容。但是文字的數據結構和音頻、圖像、符号、CPU 狀态數據等等完全不相同,所以想要隻使用一個大模型就完成對所有類型數據結構的學習,并不容易。
不過我們每一個使用電子産品的人都清楚,無論是何種類型的數據,它是由 " 字節 " 組成的。因此,研究團隊提出了一個想法,是否能用字節來代替傳統的 token,使得大模型可以把所有類型的數據放在一起進行訓練推理。bGPT 的技術原理是基于深度學習中的序列建模思想,通過訓練模型對連續的字節序列進行預測,以理解并生成符合特定上下文的二進制數據。
bGPT 可以處理不同類型的聲音文件
如果說 transformer 模型的核心機制是自注意力,那麽 bGPT 的核心機制就是 " 猜 "。通過深度學習訓練,學會根據當前字節序列預測接下來可能出現的字節,從而對數字世界的内在規律進行建模。即采用 " 下一個字節預測 " 的方式來模拟數字世界的各種活動。
就像大語言模型的預處理環節一樣,bGPT 也有預處理,而且邏輯上和大語言模型是一緻的,也是将不同類型的數據(音頻和圖像)标準化爲适合模型輸入的格式。比如音頻就會被轉換爲統一的 WAV 格式,設定采樣率爲 8kHz,單聲道,8 位深度,并裁剪至一秒長度;而圖像數據則被設置爲 32 × 32 像素、RGB 顔色模式、24 位深度的 BMP 格式。
接下來模型使用最終解碼層的補丁級特征,通過平均池化操作提取全局特征以供分類任務使用。這一步的作用是提取特征,爲下一步的生成式建模做準備。爲了凸顯 bGPT 和市面上流傳的文字、圖像、視頻大模型不同,研究團隊特地選擇了音樂作爲模型生成的内容。
論文所選取的樂譜
論文使用了兩種文件類型來做演示,第一種是 ABC 記譜法,第二種是 MIDI。ABC 記譜法是一種簡潔的人工編寫的文本格式,用來描述音樂曲目,而 MIDI 是一種二進制格式,記錄的是音樂演奏的具體表現細節。更直白一點,ABC 記譜法就是我們人類看的操作手冊,MIDI 則是機器用模拟環境來還原這份操作手冊。
bGPT 首先将成對的 ABC 記譜法文件和對應的 MIDI 文件合并成連續的字節序列,并用特殊的分割符标識兩個文件之間的界限。接着,模型運用生成式建模的方法來學習這些字節序列的規律,從而實現了雙向轉換。也就是說,bGPT 可以将基于文本的 ABC 記譜法樂譜轉換爲 MIDI 二進制表演信号,以及将 MIDI 文件還原回 ABC 記譜法文本格式。
在實際效果上,bGPT 在完成這項任務時展現了非常高的精确度。研究團隊在論文中寫到,在将 ABC 記譜法轉換爲 MIDI 格式時,錯誤率低至每字節僅 0.0011 比特。盡管轉換過程中可能會遇到一些挑戰,比如 MIDI 轉回 ABC 時,由于 MIDI 不支持重複符号,導緻 ABC 樂譜在視覺上顯得比原始版本更爲冗長,裝飾音符也可能因 MIDI 的表現方式而在轉換回 ABC 時無法完全精确對應,但總體上 bGPT 成功地模拟了這個數據轉換的過程,證明了它在模拟和處理數字世界中不同數據格式間轉換的能力。
此外,爲了評估 bGPT 在模拟數字過程方面的性能,研究人員還創建了一個 CPU 狀态數據集,通過 Python 腳本模拟 CPU 的操作,讓 bGPT 學習和預測 CPU 執行不同指令時的狀态變化,結果顯示 bGPT 在此類硬件行爲模拟上的準确性超過 99.99%,進一步驗證了其在模拟數字世界複雜過程的有效性和潛力。
所謂 CPU 狀态集,是一個專爲評估和訓練 bGPT 模型而構建的合成數據集,它模拟了 CPU 在執行一系列機器指令後内部寄存器狀态的變化情況。此數據集中每個實例都包含了 1KB 大小的内存塊,其中包含一定數量的機器指令,随後是一系列 16 字節的 CPU 寄存器狀态序列,反映了每次執行指令後 CPU 的最新狀态。寄存器主要包括了程序計數器、累加器、指令寄存器、通用寄存器。
那麽換句話說,這 CPU 狀态集,其實就是想讓 bGPT 來模仿 CPU 的物理運行邏輯。研究團隊之所以選擇這種類型的數據結構,就是爲了和傳統大模型進行區分。人家玩的就是時髦,玩的就是另類。
損失函數和周期的關系圖
讓我們看這兩張圖,上面的是 ABC 記譜法 /MIDI 所對應的數據轉換任務,下面就是 CPU 狀态建模任務。Loss 代表損失函數(loss function),Epoch 代表完整周期。随着 epoch 數的增加,模型會不斷更新權重參數,以期在後續的 Epoch 中達到更低的損失水平。結果證明,模型預測輸出越來越接近實際标簽,拟合程度越來越好,預測能力越來越強。
數據轉換任務使用 IrishMAN 數據集進行驗證,不是我吹牛,這個數據集一般研究大模型的都不一定認識。它是一個包含了 20 多萬首愛爾蘭樂譜的 ABC 記譜法數據集。其中 99%(214122 首曲子)用于訓練,1%(2162 首曲子)用于驗證。爲了确保格式的統一,所有曲調都被轉換爲 XML,然後使用腳本轉換回 ABC 記譜法,并且包含自然語言的字段(例如,标題和歌詞)被删除。
IrishMAN 數據集
bGPT 是非常有創意的,因爲字節是最基本的信息存儲單位,而且雖然人類用肉眼可能沒辦法理解 0 和 1,但是不同類型的文件,它所對應的字節是截然不同的。咱們就拿音樂來說,它的字節是音頻數據、編碼格式、元數據。音頻數據是聲音振幅和頻率随時間的變化,編碼格式是表示方法(MP3、WAV 等),元數據是這段聲音的信息(歌曲名稱、表演者、所屬專輯等)。
因此這些字節是有規律可循的,它具備明顯的特征,隻不過人類識别不了罷了。借由當下火熱的大模型技術,對這種格式的數據結構進行處理,最後成功實現。以這個邏輯來發展,是有可能發展出性能更強大的模型的。bGPT 爲這條道路開了個好頭。