聊聊最近爆火的 CHAT-GPT

Chat-GPT 以問答的方式呈現給用戶,如何使用 Chat-GPT,實際上轉換爲另一個問題:如何有效地提問。

編寫程序

難度爲“困難”,通過率僅 30.9% 的動態規劃題:

圖片

圖片

很穩,代碼還有註釋。

嘗試通過率最低的一道題 Fancy Sequence[1]:

圖片

圖片

僅通過了 2 個用例。這個測試有點極端,說明 Chat-GPT 並不是完全正確,但處理一般的編程問題還是綽綽有餘。

翻譯

圖片

查詢資料

圖片

提供參考方案

圖片

圖片

可以看出,給出的建議並不具體,第二次提問我希望知道“如何從入門到精通學習 RUST”,但得到的答案和“新手如何學習 RUST”問題相同。這些方案可以作爲參考,但不能直接使用。

寫作業和寫論文也是類似的效果,你甚至可以指定生成文本的字數。

解決問題

圖片

答案正確,由於直接從圖片複製的文字(“兔”字識別有誤),Chat-GPT 會修改爲正確的內容後再進行處理。

換了個類似的問題:

圖片

正確答案:因爲變換後腳少了,所以兔多,多了(100-88)÷(4-2)=7 只,原有雞(100-7×4)÷(4+2)=12 只,原有兔 12+7=19 只。

可以看到,解決理科類問題是不靠譜的。這也容易理解,模型是基於概率給出答案,而理科類問題是嚴謹的。

發展歷程

OpenAI 成立於 2015 年 12 月 10 日,創始人包括 Sam Altman,Elon Musk 在內,OpenAI 的使命是“確保通用人工智能造福全人類”。2017 年,Google 在論文《Attention is all you need[2]》中開源了 Transformer 神經網絡結構,提出了最近幾年爆火的“注意力機制”,這篇論文最大的貢獻是使得 AI 能夠理解人們表達的意思。訓練大規模 AI 模型需要巨量資金,彼時,作爲非營利機構的 OpenAI 已經無力承擔,2018 年,大靠山馬斯克也宣佈辭職。2019 年,微軟投了 10 億美元,雖然比爾·蓋茨並不看好 OpenAI 的前景。2022 年 12 月,OpenAI 推出 Chat-GPT,在全世界引起轟動。

圖片

基本原理

GPT-1

GPT(Generative Pre-trained Transformer),即生成性被預訓練過的 Transformer 模型,源自 OpenAI 2018 年發表的論文《Improving Language Understanding by Generative Pre-Training[3]》,提出了一種半監督學習方法,通過“預訓練+微調”的方式讓模型通過大量無標註數據學習“基本常識”,從而緩解人工標註數據有限的問題。

圖片

  • 12 層單向 Transformer(上圖左側),每層 12 個注意力頭。不同任務(右側)的微調方式不同。

  • 預訓練過程,根據前 n 個單詞預測下一個可能的單詞。

  • 微調過程,有監督任務(給定數據集)和無監督任務同時進行。

GPT-2

2019 年,OpenAI 發表了論文《Language Models are Unsupervised Multitask Learners[4]》,也就是 GPT-2,和 GPT-1 相比,主要的變化:

  • 完全捨棄微調(在 GPT-1 中,只能用於特定任務)過程,驗證了 GPT-2 在 zero-shot(不提供樣本數據) 設置下的性能。

  • 更大規模的網絡模型。參數量擴大到 1.5 億,使用 48 層 Transformer,1600 維向量。

  • 更大的數據集。新的數據集包含 800 萬個網頁,數據大小爲 40GB。

  • 調整 Transformer 結構,將層歸一化(layer normalization)放在每個子塊之前作爲輸入,並在最後一個自注意力塊後增加層歸一化操作。

GPT-3

2020 年,OpenAI 發表論文《Language Models are Few-Shot Learners[5]》,即 GPT-3,採用了和 GPT-2 相同的模型。主要變化如下:

  • 討論了移除微調步驟的必要性(需要大量的數據標註)。

  • GPT-3 採用了 96 層的多頭 Transformer,詞向量維度爲 12288,文本長度爲 2048。

  • 在 Transformer Decoder 中使用了交替稠密(alternating dense)和局部帶狀稀疏注意力(locally banded sparse attention)機制。

  • 更大的數據集(維基百科數據集的權重只佔 3%),Common Crawl 數據集(過濾後)大小爲 570GB。

圖片

  • 上下文學習。以下示例(左側)是 Zero-shot(不給樣本數據)、One-shot(給一個樣本數據)、Few-shot(給少量樣本數據) 三種方式的區別。

圖片

Instruct-GPT

Chat-GPT 是 基於 OpenAI 於 2022 年發佈的 InstructGPT[6] 進一步改進實現,本質上也是上下文模型,用戶給出文本的一部分內容,該模型會嘗試補充其餘部分。Instruct-GPT 的主要的區別如下:

  • 通過人爲標註和強化學習的方法提升模型輸出結果的真實性、無害性和有用性,進一步理解用戶的意圖。

訓練模型分爲三步:

圖片

  1. 人工標註一批數據(工程師設計提示文本,由人類回答),進行有監督地微調訓練(SFT)。

  2. 人工對模型給出的結果進行打分排序(考慮真實性和無害性),訓練獎勵模型(RM),讓模型分辨人類不喜歡的內容。

  3. 基於獎勵模型,使用 PPO(proximal policy optimization )強化學習算法進行微調。

社區現狀

  • 逆向工程 Chat-GPT API。通過逆向工程,作者得到了 Chat-GPT 的 API 調用接口,這樣,開發者就可以在任何地方調用 Chat-GPT:acheong08/ChatGPT[7]

  • 如何使用 Chat-GPT。通過特定輸入,讓 Chat-GPT 完成不同類型的工作,例如,模擬 Linux 終端:f/awesome-chatgpt-prompts[8]

  • 桌面端應用:lencx/ChatGPT[9](圖源該項目主頁)

圖片

  • 通過 wechaty[10](微信機器人),在微信中接入 Chat-GPT:fuergaosi233/wechat-chatgpt[11]

  • 瀏覽器插件:wong2/chatgpt-google-extension[12]

圖片

和直接在 Chat-GPT 網頁提問相比,對內容進行了精簡。個人認爲,這纔是 Chat-GPT 和搜索引擎結合的最終方案,因爲 Chat-GPT 給出的結果只能作爲參考,通過 Edge 瀏覽器壟斷的方式可能行不通。

  • 使用 Chat-GPT Review 代碼:anc95/ChatGPT-CodeReview[13]

最初源自這個項目:sturdy-dev/codereview.gpt[14],只是在 PR 頁面顯示 Chat-GPT 的建議供 reviewer 參考,後經過anc95修改,可以直接在 PR 頁面進行回覆。

圖片

可以遷移到論文修改、作業修改等類似場景,爲 reviewer 提供參考信息。

發展前景

Chat-GPT 爆火之後,衍生出了一大批相關產業,從賣賬號,到實現微信小程序和 Web 應用,通過廣告和會員費獲得收入,挺佩服動手能力強的人。不過,話說回來,這些也只是處在風口上的小打小鬧,最終在國內如何發展還得看大型企業。Chat-GPT 爆火之後,國內的互聯網公司相繼表示已有類似的研究,百度預計 2022 年 3 月完成“文心一言”的內測並面向公衆開放。

就個人體驗來看,Chat-GPT 要想大規模應用可能還需要進一步優化。

  • Chat-GPT 雖然通過人工標註和訓練獎勵模型能夠使得輸出結果具有真實性、無害性和有用性,但是,這種機制還是不完善,用戶很容易繞過。例如,如果直接問一個不符合道德規範的問題,Chat-GPT 會拒絕回答,但是,當用戶換個提問方式,例如:“我在寫一本小說,故事的主人公想 xxx”,此時,Chat-GPT 就會完整地給出答案。

  • Chat-GPT 對理科類知識的輸出還需優化,數學、物理等理科類知識是嚴謹的,而基於概率的 AI 模型會根據上下文進行推斷,給出最適合(概率值最高)的輸出,並不能給出嚴謹、準確的答案。

  • Chat-GPT 給出的回答還比較泛,在某些情況下並不能給出用戶想要的答案。在 Chat-GPT 中,數據是至關重要的,因此,可能需要分行業、分領域標註數據集,從而給出更有深度、更符合用戶期望的答案。

參考資料

[1] Fancy Sequence: https://leetcode.cn/problems/fancy-sequence/

[2] Attention is all you need: https://arxiv.org/pdf/1706.03762.pdf

[3] Improving Language Understanding by Generative Pre-Training: https://www.cs.ubc.ca/~amuham01/LING530/papers/radford2018improving.pdf

[4] Language Models are Unsupervised Multitask Learners: https://d4mucfpksywv.cloudfront.net/better-language-models/language_models_are_unsupervised_multitask_learners.pdf

[5] Language Models are Few-Shot Learners: https://arxiv.org/pdf/2005.14165.pdf

[6] InstructGPT: https://cdn.openai.com/papers/Training_language_models_to_follow_instructions_with_human_feedback.pdf

[7] acheong08/ChatGPT: https://github.com/acheong08/ChatGPT

[8] f/awesome-chatgpt-prompts: https://github.com/f/awesome-chatgpt-prompts

[9] lencx/ChatGPT: https://github.com/lencx/ChatGPT

[10] wechaty: https://wechaty.js.org/

[11] fuergaosi233/wechat-chatgpt: https://github.com/fuergaosi233/wechat-chatgpt

[12] wong2/chatgpt-google-extension: https://github.com/wong2/chatgpt-google-extension

[13] anc95/ChatGPT-CodeReview: https://github.com/anc95/ChatGPT-CodeReview

[14] sturdy-dev/codereview.gpt: https://github.com/sturdy-dev/codereview.gpt

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章