自1997年5月由IBM開發的超級電腦深藍(Deep Blue)擊敗西洋棋世界冠軍卡斯帕羅夫(Garry Kimovich Kasparov),人們開始認知到「只要經過訓練,機器也可以像人類一樣思考」,更有人擔心「電腦最終會戰勝人類」。2022年11月OpenAI推出聊天生成預訓練轉換器ChatGPT(Chat Generative Pre-trained Transformer),號稱「可寫出相似真人的文章,並在許多知識領域給出詳細和清晰的回答」,證明了人工智慧(AI)也能勝任知識型工作。
ChatGPT 使用心法學習如何下「指示」
相信不少人都使用過ChatGPT,不管是寫報告、潤飾和校對文章、做翻譯、講笑話等等, 全都難不倒它。到底Chat GPT 能做什麼?台大電機系副教授李宏毅指出,ChatGPT劃時代的突破就是,過去的人工智慧都只有某些固定功能,比如「Google翻譯」的功用就是做翻譯,不會期待它做翻譯以外的事情(如聊天或做摘要);但ChatGPT的概念不一樣,它是一個通才系統,不是只有某幾個功能,而是什麼都會。
因此,使用ChatGPT時不能只給它一串文字,要有明確的「指示」(Prompt),告訴它「你想要它做什麼」,例如:請寫一篇有關ChatGPT的文章、幫演講下一個有趣的標題、將以下段落翻譯成英文……等等。而使用ChatGPT的心法是,「不要問ChatGPT能為你做什麼,要問你想要ChatGPT幫你做什麼」,只要下對指示,ChatGPT就有可能滿足你的需求。
那麼,ChatGPT的答案是如何生成的?在許多人的想像裡,ChatGPT可能在網站上搜尋相關資料,也可能是背後有個資料庫,根據資料庫內容做整理重組,然後輸出答案。「實際上,這不是ChatGPT運作的方式。」李宏毅指出,如果將ChatGPT的答案在網路上搜尋,會發現通常都不是網路上有的答案,甚至很多是ChatGPT自己杜撰出來的。
ChatGPT的運作模式可用一句話來概括,就是文字接龍。ChatGPT就像是數學函式(Function),輸入參數是一個句子,輸出則是透過機率分布取樣所產生的答案,舉例來說,輸入是「什麼是機器學習」,接下來要接哪一個字是比較合理?ChatGPT就開始做文字的機率分布,透過擲骰子過程,比如產生「機」字,然後再把「機」當作輸入,產生下一個字,如此不斷地反覆,直到出現「END」的符號,代表回答結束,ChatGPT就會輸出答案。因此,ChatGPT的答覆其實就是透過文字接龍所產生的,而且每次的答案都不會一樣。

從督導式到增強式學習 貼近人的需求
「ChatGPT不是從零開始,而是GPT微調之後的產物。」李宏毅指出,在ChatGPT之前,OpenAI就開發出一系列GPT模型,從2018年GPT 1(1.7億個參數、資料量1GB)、2019年GPT 2(15.42億個參數、40GB),到2020年GPT 3(1,750億個參數、580GB),但在所有測試任務上的平均正確率也不過50%上下而已,當時很多人甚至覺得OpenAI根本走錯方向,訓練了一個大而無當的模型,但OpenAI認為,GPT 3只是沒有展現它的能力,而究其原因是它不知道人類要的是什麼。
ChatGPT是怎麼誕生的呢?按照一般機器學習的做法,假設要做一個英翻中的翻譯軟體,需要準備成對的資料,也就是一個英文句子跟對應的中文翻譯,這種成對的資料準備上千、上億句,機器就有辦法自動找出一個函式,這種透過成對資料學習的方式叫做「督導式學習」。
同樣的概念套用到ChatGPT的話,只要提供成對的資料,它就可以自動跑出一個函式滿足你的需求,但如果只是憑藉人類的力量蒐集資料,ChatGPT的能力非常有限,甚至因為人類能夠提供的資料非常少,所以有可能答不出正確答案;所以ChatGPT背後有一個非常關鍵的技術,就是無痛製造大量成對的資料(主要是透過網路資料產生成對的資料來訓練模型),機器自己在網路上看大量資料學習的過程就叫做「自督導式學習」。而下一個階段就是「增強式學習」(Reinforcement Learning,RL),在督導式學習方面,人類要提供標準答案給機器做學習,增強式學習雖然也需要人類的介入,但不提供正確答案,只提供好或壞、喜歡或不喜歡,從而能蒐集到大量的回饋,更貼近人的需求。

提供額外資訊
讓ChatGPT 發揮最大效能
「ChatGPT已經聽得懂人類的指令,換人類來學習提出精準的需求。」李宏毅強調。什麼叫精準的需求?舉例來說,很多人會用ChatGPT來修改文章,指示為「請幫忙潤飾以下段落」,如果是英文文章,ChatGPT不僅會潤飾,也會幫忙修正文法錯誤;但如果只要修改文法錯誤,就要明確指示「修正以下段落的文法錯誤」。又如指示為「請幫忙擴寫以下段落」,並輸入一段英文文句,ChatGPT擴寫後的結果可能為中文,那是因為下指令時是用中文,所以它猜測你想要的是中文,如果想要的是英文,就要更明確地指示「請用英文擴寫以下段落」,甚或想要長一點的文章,只要明確指示「請用英文擴寫以下段落到300字以上」。
李宏毅進一步指出,在提出需求時,不同的指令,對於語言模型的能力會有很大的差異。舉例來說,想要ChatGPT做雞兔同籠的問題,當在提問的最後加上「不要列計算過程,直接給答案」時,正確率是0%;但如果換一個問法,「請詳細列出計算過程」,正確率則提升到80%。這並不是巧合,在一篇研究論文發現,如果直接給ChatGPT數學題目,不提供額外的指令,正確率為17.7%,但如果在題目後面加一些額外指令如「Let’s think」,正確率提升到57.5%,或者告訴它「Let’s think step by step」,正確率則進步到78.7%。
另外一個可以強化ChatGPT能力的方法,就是提供額外的資訊或範例。舉例來說,如果你要ChatGPT寫一篇1,000字的心得,內容為九份一日遊,即使它根本不知道你去了哪些地方,還是能掰出一篇心得;要如何讓ChatGPT寫出來的文章跟你實際上的行程是相對應的?就要告訴它你去了哪些地方,比如「早上去了黃金瀑布,下午到金瓜石黃金博物館,傍晚到九份老街吃小吃。請根據這些內容寫一篇1,000字的心得,內容為九份一日遊」,它就會根據你的行程來寫。甚至可以改變寫作風格,比如「用IG網紅的口吻,而且要用表情符號」,文章就會活潑很多,而且會加入一大堆表情符號。
以ChatGPT 為師 低資源復刻ChatGPT
ChatGPT幾乎無所不能,為什麼還要打造自己的ChatGPT呢?「主要是資料隱私的問題。」李宏毅提及,因為所有提供給ChatGPT的資料,OpenAI有權利將其作為訓練資料,以強化模型效能。
要如何復刻ChatGPT呢?首先要準備一個可微調的預訓練(Pre-trained)模型,目前有很多開源預訓練模型,例如Meta的LLaMA模型,是一種較小型的基礎模型,適合微調後用於多種任務。接下來以ChatGPT為師,把同樣問題去問ChatGPT,得到的答案就當作是自己模型的正確答案,這種用小模型模仿大模型的技術叫做「知識蒸餾」(Knowledge Distillation);甚至可以透過ChatGPT產生大量成業的資料,然後拿這些資料來訓練你自己的模型。
李宏毅強調,在這波生成式人工智慧浪潮下,ChatGPT的力量取決於它的使用者,對個人來說,找出專屬的「Prompt」,ChatGPT就是最得力的助理;對企業而言,善用ChatGPT,讓AI應用門檻大幅下降,可提升企業營運效能。