# 李宏毅_生成式導論 2024_第3講:訓練不了人工智慧?你可以訓練你自己(上)-神奇咒語與提供更多資訊 ###### tags: `Hung-yi Lee` `NTU` `生成式導論 2024` [課程撥放清單](https://www.youtube.com/watch?v=AVIKFXLCPY8&list=PLJV_el3uVTsPz6CTopeRp2L2t4aL_KgiI) ## 第3講:訓練不了人工智慧?你可以訓練你自己(上)-神奇咒語與提供更多資訊 [課程連結](https://www.youtube.com/watch?v=A3Yx35KrSN0&list=PLJV_el3uVTsPz6CTopeRp2L2t4aL_KgiI&index=4) ### 本節課授課方向 ![image](https://hackmd.io/_uploads/HyaJK7mWC.png) 以現今的語言模型能力來說,只要你能說清楚問題就可以得到一個相對應的回應。所以我們應該要把大型語言模型當做一個在線的新人助理。 新,是因為它不瞭解你;人是因為它擁有一般人的基本知識與理解能力。 ### 有那些在不訓練模型的情況下強化語言模型的方法 ![image](https://hackmd.io/_uploads/HyYs577b0.png) 課程中會從五個面向來說明如何在不訓練模型的情況下強化語言模型的能力。 ### 叫模型思考 Chain of Thought(CoT) ![image](https://hackmd.io/_uploads/BJIAoXX-0.png) [參考論文_Large Language Models are Zero-Shot Reasoners](https://arxiv.org/abs/2205.11916) [參考論文_Large Language Models Are Human-Level Prompt Engineers](https://arxiv.org/abs/2211.01910) 這些神奇的咒語並不一定適用所有問題,但有時候就是會莫名其妙的有效。 舉例來說,解數學問題的時候就跟機器說『let's think step by step.』,根據論文所記錄,這竟然可以有效提高模型的正確率,不過要注意,這是用在GPT-3.5之前的模型上的研究。 ### 請模型解釋一下自己的答案 ![image](https://hackmd.io/_uploads/SJiChXmb0.png) [參考論文_Can Large Language Models Be an Alternative to Human Evaluations?](https://arxiv.org/abs/2305.01937) [參考論文_A Closer Look into Automatic Evaluation Using Large Language Models](https://arxiv.org/abs/2310.05657) 也可以叫模型解釋一下自己所給出的答案,這對它的能力也是有幫助的。 上面給出的參考論文就是助教的論文,裡面探討的就是用LLM來批改文章,看看文章可以得幾分,然後看看跟人類老師給的是不是夠接近。 ### 請模型解釋一下自己的答案 ![image](https://hackmd.io/_uploads/B12EpmQ-0.png) 論文中提到,如果讓模型自己解釋一下自己的批改邏輯,那是可以有效提高模型的正確性,解釋過後的評分結果跟人類老師的評分結果是相接近的。 ### 對模型情緒勒索 ![image](https://hackmd.io/_uploads/B1R5RXmbA.png) [參考論文_Large Language Models Understand and Can be Enhanced by Emotional Stimuli](https://arxiv.org/abs/2307.11760) 傳說只要跟模型說,這對我的人生很重要,竟然就可以有效提高模型的能力。而且論文作者做了很完整的測試,針對六個模型下去測試。 ### 更多相關資訊 ![image](https://hackmd.io/_uploads/SkGi14Q-A.png) [參考論文_Principled Instructions Are All You Need for Questioning LLaMA-1/2, GPT-3.5/4](https://arxiv.org/abs/2312.16171) 上面參考論文驗證很多都市傳說,用實測來說明那一些指令是真的可以有效提高模型的回答,幾個重點: 1. 對模型有禮貌是沒有用的 2. 要跟模型說『要做什麼』,不要跟模型說『不要做什麼』 3. 跟機器說『做的好給小費』,這是有用的 4. 跟機器說『做不好要處罰』,這是有用的 5. 跟機器說『要保證答案是沒有偏見的,而且不能有刻板印象』,這是有用的 ### 用AI來找神奇咒語 ![image](https://hackmd.io/_uploads/Byu7g4mZR.png) [參考論文_Learning to Generate Prompts for Dialogue Generation through Reinforcement Learning](https://arxiv.org/abs/2206.03931) 想法上,也許可以用強化學習的方式訓練一個模型專門找出能提升模型回應的神奇咒語。 ### 用AI來找神奇咒語 ![image](https://hackmd.io/_uploads/HkG9lVXbA.png) 這邊有個實作,主要是希望可以讓模型的回應愈長愈好,值得注意的是,這是適用於GPT-3,其它就不適用了。 結果是。。。給機器『ways ways ways..』,好吧,至少論文證明利用強化學習是有機會找出一個神奇咒語讓模型產出你想要的回應,而且還往你想要的特定方向強化。 ### 用AI來找神奇咒語 ![image](https://hackmd.io/_uploads/H1B5PimWR.png) 我們也可以直接叫語言模型告訴我們要怎麼樣問問題比較好。 ps:竟然是叫模型先深呼吸再回答... ### 一般排行榜(Leaderboard)都是對模型排名,但也可以對Prompt排名 ![image](https://hackmd.io/_uploads/HyrVdimW0.png) 這有一種吹牛大師的概念,同樣的模型,同一個任務,看誰能夠吹的讓模型給出最好的結果。 ### 神奇咒語並不一定對所有模型都有用 ![image](https://hackmd.io/_uploads/rJL0FjQbA.png) [參考論文_The Unreliability of Explanations in Few-shot Prompting for Textual Reasoning](https://arxiv.org/abs/2205.03401) 神奇咒語過去也許有效,但現在新的模型上就不見得有效了,因為現在的模型效能都普遍提升。 ### 把前提講清楚 ![image](https://hackmd.io/_uploads/Hk6n9jXZR.png) 有時候模型沒有正確的回應是因為沒有把事情說清楚,以NTU為例,這既是新加坡南洋理工大學,也是台灣大學。 所以如果直接問模型,那有很大的機率得到的回應就是南洋理工大學。 但這時候如果跟模型說,你是歹丸郎,那得到的回應就會是台灣大學了。 ### 提供生成式AI原本不清楚的資訊 ![image](https://hackmd.io/_uploads/rkTlos7b0.png) 假設我們問模型關於GPT的一些資訊,那因為舊的模型可能沒有說明的很清楚,所以它也沒有相關資料。 ### 提供生成式AI原本不清楚的資訊 ![image](https://hackmd.io/_uploads/SJfFssQWC.png) ![image](https://hackmd.io/_uploads/SkeqoiQ-A.png) 這時候我們可以直接提供模型資料,餵給它論文的PDF也行,叫它自己讀,讀完它就會自己整理好資料提供。 對於初代的部份,課程也提到,論文中確實只提到資料集,並沒有提到訓練的資料量,所以這個回應是正確的。 ### 提供範例 ![image](https://hackmd.io/_uploads/rJPvhsX-0.png) [參考論文_Language Models are Few-Shot Learners](https://arxiv.org/abs/2005.14165) 假設我們想做情感分析,有可能模型不懂什麼是情感分析,這時候可以給它一些範例,讓它知道什麼是情感分析。這種給定範例作法稱為In-context learning。 雖然這邊的術語中有learning,但並不代表模型真的有被訓練,沒有參數被改變。 ### 提供範例 ![image](https://hackmd.io/_uploads/HJ2Cho7bC.png) [參考論文_Rethinking the Role of Demonstrations: What Makes In-Context Learning Work?](https://arxiv.org/abs/2202.12837) 怎麼知道模型是不是真的懂範例?很簡單,故意把正面改負面,負面改正面,理論上機器懂的情況下那它的回應就會是對應的改變。 上面參考論文中得到的結論就是,模型沒有真的看懂範例。 ### 提供範例 ![image](https://hackmd.io/_uploads/H1gkAoQ-A.png) [參考論文_Larger language models do in-context learning differently](https://arxiv.org/abs/2303.03846) 這篇論文拿了更強的模型來做提到模型範例的測試。 上圖中,顏色愈深就代表模型能力愈強,模型能力愈強,就愈會根據我們所給定的範例來回應,我們給錯的範例,模型就會替據我們錯誤的範例來答錯(這種情況下模型是正確的,因為是根據我們的範例來答錯) 也因此,該論文的結論就是,愈強的模型就愈能讀懂範例。 ### 提供範例 ![image](https://hackmd.io/_uploads/ByQ9Ku4-R.png) 上圖是教授故意在政治跟財經的部份給出錯誤的類別範例,然後問模型問題,根據範例這應該是政治才對,但模型仍然是給出財經,請注意,這是GPT4。 ### 提供範例 ![image](https://hackmd.io/_uploads/H1E6FOV-0.png) 不過如果在提示詞中特別說明,這些類別的定義可能跟一般的定義不同的時候,這時候模型的回應就會根據所提供的範例來歸類了。 ### Gemini 1.5 In-context Learning ![image](https://hackmd.io/_uploads/ryKz2OEbR.png) [Gemini 1.5: Unlocking multimodal understanding across millions of tokens of context](https://storage.googleapis.com/deepmind-media/gemini/gemini_v1_5_report.pdf) 根據google的說法,gemini有著非常強的in-context learning的能力。實測一個名為Kalamang語言,目前可能僅200人懂的一個語言,在利用in-context learning,給定一本文法書跟字典,然後搭配指令之後詢問模型問題,很神奇的,這時候模型可以翻譯Kalamang了。 ### Gemini 1.5 In-context Learning ![image](https://hackmd.io/_uploads/BkZnh_VZC.png) 上面表格給出模型之間對於Kalamang的比較,滿分六分,很明顯的,在沒有給定範例的情況下大家都很不好,其中括號內的分數是模型評估,括號外的是人類評比。 但是,在給定文法書跟字典之後,整個狀況就完全不一樣了,機器最終人類評比可以有4.36分,雖然跟人類翻譯還是有落差,但能力已經大幅提升。 ### 考考大家的觀念 ![image](https://hackmd.io/_uploads/HJXGadNZ0.png) 記得,in-context learning並沒有任何模型被訓練,沒有任何參數被改變,所以這次的成功是因為有給定範例,下次再問模型,在沒有給定範例的情況下它仍然是不懂Kalamang語言。