西風 發自 凹非寺

量子位 | 公衆號 QbitAI

繼Windows Copilot發佈後,微軟Build大會熱度又被一場演講引爆。

前特斯拉AI總監Andrej Karpathy在演講中認爲思維樹(tree of thoughts)與AlphaGo的蒙特卡洛樹搜索(MCTS)有異曲同工之妙!

網友高呼:這是關於如何使用大語言模型和GPT-4模型的最詳盡有趣的指南!

此外Karpathy透露,由於訓練和數據的擴展,LLAMA 65B“明顯比GPT-3 175B更強大”,並介紹了大模型匿名競技場ChatBot Arena:

Claude得分介於ChatGPT 3.5和ChatGPT 4之間。

網友表示,Karpathy的演講一向很棒,而這次的內容也一如既往沒有令大家失望。

隨着演講而爆火的,還有推特網友根據演講整理的一份筆記,足足有31條,目前轉贊量已超過3000+:

所以,這段備受關注的演講,具體提到了哪些內容呢?

如何訓練GPT助手?

Karpathy這次的演講主要分爲兩個部分。

第一部分,他講了如何訓練一個“GPT助手”。

Karpathy主要講述了AI助手的四個訓練階段:

預訓練(pre-training)、監督微調(supervised fine tuning)、獎勵建模(reward modeling)和強化學習(reinforcement learning)。

每一個階段都需要一個數據集。

在預訓練階段,需要動用大量的計算資源,收集大量的數據集。在大量無監督的數據集上訓練出一個基礎模型。

Karpathy用了更多例子作補充:

接下來進入微調階段。

使用較小的有監督數據集,通過監督學習對這個基礎模型進行微調,就能創建一個能夠回答問題的助手模型。

他還展示了一些模型的進化過程,相信很多人之前已經看過上面這張“進化樹”的圖了。

Karpathy認爲目前最好的開源模型是Meta的LLaMA系列(因爲OpenAI沒有開源任何關於GPT-4的內容)。

在這裏需要明確指出的是,基礎模型不是助手模型。

雖然基礎模型可以回答問題,但它所給出的回答並不可靠,可用於回答問題的是助手模型。在基礎模型上進行訓練的助手模型,通過監督微調,在生成回覆和理解文本結構方面的表現將優於基礎模型。

在訓練語言模型時,強化學習是另一個關鍵的過程。

通過用人工標記的高質量的數據進行訓練,可以使用獎勵建模來創建一個損失函數,以改善其性能。然後,通過增加正向的標記,並降低負面標記的概率,來進行強化訓練。

而在具有創造性的任務中,利用人類的判斷力對於改進AI模型至關重要,加入人類的反饋可以更有效地訓練模型。

經過人類反饋的強化學習後,就可以得到一個RLHF模型了。

模型訓練好了,接下來就是如何有效利用這些模型解決問題了。

如何更好地使用模型?

在第二部分,Karpathy主要討論了提示策略、微調、快速發展的工具生態系統以及未來的擴展等問題。

Karpathy又給出了具體示例來說明:

當我們在寫文章時候,我們會進行很多的心理活動,需要考慮自己的表述是否正確。而對於GPT來說,這只是一個序列標記(a sequence of tokens)。

而提示(prompt)可以彌補這種認知差異。

Karpathy進一步解釋了思維鏈提示的工作方式。

對於推理問題,要想讓自然語言處理中Transformer的表現更好,需要讓它一步一步地處理信息,而不能直接拋給它一個非常複雜的問題。

如果你給它幾個例子,它會模仿這個例子的模版,最終生成的結果會更好。

模型只能按照它的序列來回答問題,如果它生成的內容是錯誤的,你可以進行提示,讓它重新生成。

如果你不要求它檢查,它自己是不會檢查的。

這就涉及到了System1和System2的問題。

諾貝爾經濟學獎得主丹尼爾卡尼曼在《思考快與慢》中提出,人的認知系統包含System1和System2兩個子系統。System1主要靠直覺,而System2是邏輯分析系統。

通俗來說,System1是一個快速自動生成的過程,而System2是經過深思熟慮的部分。

這在最近一篇挺火的論文“Tree of thought”(思維樹)中也有被提及。

深思熟慮指的是,不是簡單的給出問題的答案,而更像是與Python膠水代碼一起使用的prompt,將許多prompt串聯在一起。模型必須要維護多個提示,還必須要執行一些樹搜索算法,來找出要擴展的提示。

Karpathy認爲這種思路與AlphaGo非常相似:

AlphaGo在下圍棋時,需要考慮下一枚棋子下在哪裏。最初它是靠模仿人類來學習的。

但除此之外,它還進行了蒙特卡洛樹搜索,可以得到具有多種可能性的策略。它可以對多種可能的下法進行評估,僅保留那些較好的策略。我認爲這在某種程度上相當於AlphaGo。

對此,Karpathy還提到了AutoGPT:

我認爲目前它的效果還不是很好,我不建議大家進行實際應用。我只是認爲,隨着時間的推移,我們或許可以從它的發展思路中汲取靈感。

其次,還有一個小妙招是檢索增強生成(retrieval agumented generation)和有效提示。

窗口上下文的內容就是transformers在運行時的記憶(working memory),如果你可以將與任務相關的信息加入到上下文中,那麼它的表現就會非常好,因爲它可以立即訪問這些信息。

簡而言之,就是可以爲相關數據建立索引讓模型可以高效訪問。

如果Transformers也有可參考的主要文件,它的表現會更好。

最後,Karpathy簡單講了一下在大語言模型中的約束提示(Constraint prompting)和微調。

可以通過約束提示和微調來改進大語言模型。約束提示在大語言模型的輸出中強制執行模板,而微調則調整模型的權重以提高性能。

我建議在低風險的應用中使用大語言模型,始終將它們與人工監督相結合,將它們看作是靈感和建議的來源,考慮copilots而不是讓它們完全自主代理。

關於Andrej Karpathy

Andrej Karpathy博士畢業後的第一份工作,是在OpenAI研究計算機視覺。

後來OpenAI聯合創始人之一的馬斯克看上了Karpathy,把人挖到了特斯拉。但也因爲這件事,馬斯克和OpenAI徹底鬧翻,最後還被踢出局。在特斯拉,Karpathy是Autopilot、FSD等項目的負責人。

今年二月份,在離開特斯拉7個月後,Karpathy再次加入了OpenAI。

最近他發推特表示,目前對開源大語言模型生態系統的發展饒有興趣,有點像早期寒武紀爆發的跡象。

相關文章