CHAT-GPT 初體驗
Chat-GPT 以問答的方式呈現給用戶,如何使用 Chat-GPT,實際上轉換為另一個問題:如何有效地提問。
編寫程序
難度為『困難』,通過率僅 30.9% 的動態規劃題:
很穩,代碼還有註釋。
嘗試通過率最低的一道題 Fancy Sequence:
僅通過了 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》中開源了 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》,提出了一種半監督學習方法,通過『預訓練+微調』的方式讓模型通過大量無標註數據學習『基本常識』,從而緩解人工標註數據有限的問題。
- 12 層單向 Transformer《上圖左側》,每層 12 個注意力頭。不同任務《右側》的微調方式不同。
- 預訓練過程,根據前 n 個單詞預測下一個可能的單詞。
- 微調過程,有監督任務《給定數據集》和無監督任務同時進行。
GPT-2
2019 年,OpenAI 發表了論文《Language Models are Unsupervised Multitask Learners》,也就是 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》,即 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 進一步改進實現,本質上也是上下文模型,用戶給出文本的一部分內容,該模型會嘗試補充其餘部分。Instruct-GPT 的主要的區別如下:
- 通過人為標註和強化學習的方法提升模型輸出結果的真實性、無害性和有用性,進一步理解用戶的意圖。
訓練模型分為三步:
社區現狀
- 逆向工程 Chat-GPT API。通過逆向工程,作者得到了 Chat-GPT 的 API 調用接口,這樣,開發者就可以在任何地方調用 Chat-GPT:acheong08/ChatGPT
- 如何使用 Chat-GPT。通過特定輸入,讓 Chat-GPT 完成不同類型的工作,例如,模擬 Linux 終端:f/awesome-chatgpt-prompts
- 桌面端應用:lencx/ChatGPT《圖源該項目主頁》
- 通過 wechaty《微信機器人》,在微信中接入 Chat-GPT:fuergaosi233/wechat-chatgpt
- 瀏覽器插件:wong2/chatgpt-google-extension
和直接在 Chat-GPT 網頁提問相比,對內容進行了精簡。個人認為,這才是 Chat-GPT 和搜索引擎結合的最終方案,因為 Chat-GPT 給出的結果隻能作為參考,通過 Edge 瀏覽器壟斷的方式可能行不通。
- 使用 Chat-GPT Review 代碼:anc95/ChatGPT-CodeReview
最初源自這個項目:sturdy-dev/codereview.gpt,隻是在 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