在之前介紹 ChatGPT 的文章中,我有提到 ChatGPT 有記憶和學習能力,也有不錯的語義理解和分析能力。今天我就想試試測試 ChatGPT 的零樣本學習(Zero-shot Learning)能力。
零樣本學習是一種用於解決由於訓練數據不足而難以進行傳統監督學習(supervised learning)的情況。在傳統的監督學習中,機器學習模型需要接收足夠數量的標記樣本來訓練,以便能夠在未見過的數據上做出準確的預測。但是,在某些情況下,可能沒有足夠的標記數據可用於訓練模型。這就是 zero-shot learning 可以派上用場的地方。
在 zero-shot learning 中,模型在沒有看到任何與測試數據相同的標記樣本的情況下,通過理解數據的特徵和屬性來進行分類或預測。我這次挑選一個最近身邊不約而同有好幾位朋友都被困擾的問題來做測試:因收到太多CV、求職者回答問題的文章而需要花很多時間閲讀來篩選。我們就來把篩選文章的工作分給 ChatGPT 代勞吧!
零樣本學習(Zero-shot Learning)將求職者的文章按照職位匹配程度排序
我對求職者提出的題目是:“爲什麽我想做數據工程師?”
我這裏有5篇文章,分別來自5個求職者A至E,我先給 ChatGPT 設定好角色(HR主管),讓 ChatGPT 記住每篇文章,並分析他們的回答,然後逐一輸入輸入文章,最後讓 ChatGPT 代入 HR 主管的身份去按照文章優劣去排序,並讓他解釋爲什麽有這樣的排序。以下是 ChatGPT 的結果:
首先,ChatGPT 表示能理解我提出的角色設定,我每次輸入一篇文章,他會嘗試消化文章内容,做小總結,並做初步的判斷候選人是否適合這個工作。求職者 C 的文章有點不正經,ChatGPT 會指出文章“包含了一些不專業、不現實的内容”,也識別出作者對職業不認真,所以不適合這個職位。更指出面試時不應該這樣回答,大概這個也是人類 HR 會給的評語!
到輸入完 求職者D 的文章之後,ChatGPT 又嘗試把之前四篇的内容總結,提取幫助比較的重點,我看過還是挺準確的,ChatGPT 的短期記憶力貌似還不錯,至少還能記住前面的文章!
求職者 E 的文章是比較負面的,不是真心對數據工程師的工作有興趣,ChatGPT 也能準確地識別負面的成分出來,這裏也表現了 ChatGPT 做情緒分析(Sentiment Analysis)的能力。情緒分析在商業世界有很重要(很值錢)的應用,在我之後的文章會重點介紹。
最後,我讓 ChatGPT 用表格的形式表達他認爲的排序,並解釋爲什麽有這樣的排序。得出的結果是:A > D > B > C > E。不知道這個排序跟你心目中是否一致呢?我覺得他的分析還是合理,肯定的是 C 和 E 都不適合這個工作。 你可以仔細看看 ChatGPT 是否合理。
我再嘗試改一下字眼,並加多一個問題:考慮的因素是什麽,得出以下結果:
次序沒有改變,ChatGPT 說他考慮的因素包括:對職業的認識和了解程度、興趣和動機、實踐經驗和技能、學習能力和發展潛力等。這些應該都是合理的,值得留意的是,我其實並沒有告訴他需要考慮的因素,也沒有告訴他怎樣的文章才算好,而是他自己代入了 HR 主管的身份去思考有哪些因素值得作爲準則來考慮! 我不確定 ChatGPT 背後訓練這個語言模型的時候有沒有特別為 HR 的任務做專門的訓練,我個人覺得是沒有的,但他居然可以在沒有額外的指導下,代入 HR 的身份並做出很合理的分析結果和報告,太神奇了吧…
這個實驗其實就是大型語言模型(LLM)的 零樣本學習 Zero-shot 例子。爲什麽是 Zero-shot?因爲我們沒有額外給 ChatGPT 一些樣本來告訴他什麽是好文章,而只是給他沒有見過的測試樣本,他就能作出比較、分析和排序,我連好文章的準則都沒有説明清楚,他就靠自己之前從海量數據預先學習好的知識來理解我給的任務。
研究 LLM 就像捉了個活的外星人,然後嘗試用語言溝通來測試他的智力,差在還未拿去解剖..
其實 Zero-shot 也是最近研究 LLM 領域很火爆的方向,像東京大學和 Googe Research 研究員發表的文章(NeurIPS 2022):“Large Language Models are Zero-Shot Reasoners”(https://arxiv.org/abs/2205.11916),發現只要一句簡單的“咒語”,就能讓 LLM 正確回答邏輯推理的問題,包括算術、符號推理等。這句無敵的”咒語“就是”Let’s think step by step“,即是指示 LLM 要一步步思考,真的就是這麽簡單!?真的假的?不信的話請自己找那個論文來讀!
這個論文帶出一個很有趣的研究方向,就是只要稍微設計一下那個 prompt,就能導出 LLM 的神奇推理能力,LLM 似乎還有很多隱藏能力有待發掘!
Chain-of-Thought (CoT)
上面從論文截取出來的圖,那個方法的名字叫”Zero-shot-CoT”,什麽是 CoT 呢?CoT 全寫是 Chain-of-Thought,是一種近期出現的寫 prompt 技巧,簡單來説就是通過設計 prompt 來引導 LLM 去一步步思考的方法,其實我上面 HR 分析文章的實驗也是一種 CoT,因爲我讓他先分析每篇文章,然後才讓他排序,而不是直接一開始就讓他排序。分析的過程,其實就結合了記憶和提取重點,也讓我們人類用戶知道他是怎麽思考,如果他的分析有問題我們也可以及時發現。
這個特性在AI裏面很重要,近期 AI 技術主要用到的深度學習 Deep Learning,所用到的神經網絡 Neural Networks 一直有個爲人詬病的弱點,就像黑盒子 Blackbox,很難理解他的分析邏輯,缺乏可理解性 Interpretability。可理解性在很多應用都很重要,舉個例子,假如一個 AI 系統分析出你的兒子有 90% 概率有某種絕症,建議你兒子做一個高風險的手術,但系統沒法告訴你爲什麽它認爲你兒子有絕症,而且還有 10% 概率是誤判,那你應該要相信這個系統嗎?
有了 LLM,現在 AI 可以用人的語言説出他的分析準則,這樣可理解性就大大提高,可信度也提高了。
後續玩法…
你可能會問,現在只有5個候選人,那麽如果加入更多候選人,ChatGPT 是否還能做出比較和分析呢?另外,ChatGPT 的回應其實每次都可以不一樣,假如多跑幾次、多問幾次,出來的結果有差異,那怎麽辦呢? 哈哈,這些問題我先賣個關子,下一篇我再回答~
參考文獻
[1] Kojima, Takeshi, et al. “Large language models are zero-shot reasoners.” arXiv preprint arXiv:2205.11916 (2022).
[2] Wei, Jason, et al. “Chain of thought prompting elicits reasoning in large language models.” arXiv preprint arXiv:2201.11903 (2022).
[3] Liu, Pengfei, et al. “Pre-train, prompt, and predict: A systematic survey of prompting methods in natural language processing.” ACM Computing Surveys 55.9 (2023): 1-35.