Last Updated on 2024-10-05 by Clay
今年以來,我因為工作的緣故,嘗試了自己跳下來進行資料的標註;這一標註之下,這才切身體會到的了訓練資料對於 AI 模型的影響有多麼徹底。
我的目標是讓我的 AI 模型能夠應對客戶詢問的問題,並根據檢索系統給出的相關文件進行回答 —— 沒錯,基本上就是走正常 RAG 流程的 RAG-based LLM。但是由於 AI 所需要負責的問答任務牽涉的資料非常多、也存在著很多不同的場景,所以讓 AI 模型回答出正確的答案並不如想像中容易。
而隨著我從毫無訓練資料開始,逐漸標註了 100、1,000 到現在總共有 10,000 筆資料... 我經歷了模型從
- 『自以為正確的幻覺解答』
- 『開始往比較不容易出錯的僵硬解釋性回答』
- 『靈活到有時候解釋檢索資料比我直覺上的理解還要正確』
等三個階段的進步。
在模型漸漸取得這些能力的進步途中,雖然我有嘗試 SFT、DPO、SimPO、ORPO、KTO... 等等不同方式的訓練,但我自認並沒有『灌注知識』到模型的權重內部。不過,模型終究是漸漸掌握了『正確解釋文件』以及『中文理解』等相關能力(因為大部分預訓練好的模型都在英文上表現比較好、也可以說英文才是他們的母語)。
有趣的是,不管我選擇 Mistral、Llama、Gemma 哪種架構,不管我使用 SFT、DPO、SimPO、ORPO、KTO 哪種訓練方式,只要使用我挑選過後的資料進行訓練,最後模型都會收斂在我實際測試會認為『表現尚可』的階段。
所以,在我這一年中所訓練模型,體認到最最重要的果然還是『訓練資料』(Training Data)。俗話說 "garbage In, garbage out" 真的一點都沒說錯,模型在訓練過程中,其實就是把相似場景的應對方式,壓縮儲存在類神經網路的權重值當中。
這讓我聯想到兩件事情:
在我剛入職時,我當時的主管喜歡提『AI 模型具備一定程度的舉一反三能力,比 rule-based 的設計來得更靈活』來說明為什麼我們的解決方案要使用到 AI;這可能是一個說服客戶的說法,但我現在回想的話,我認為就算 AI 模型能夠應對一定程度的『相似場景』,但『舉一反三』的能力恐怕並不高。
曾經有位朋友在碩班期間在研究 Zero-Shot Learning,那時他做的研究挑戰主要是,讓模型學習具有 A 特徵的 X 領域任務、再學習具有 B 特徵的 Y 領域任務,然後到『具有 A+B 特徵的 Z 領域任務』,然後希望模型可以在 Z 領域任務中表現良好。
這其實應該很符合我們對 AI 『舉一反三』能力的想像;不過我那位朋友在碩班兩年期間吃了許多苦頭,因為這個任務其實並不好做,因為直覺上來說要完成這件事、讓 AI 模型真的『理解』背後的規則,是需要一定程度的訓練資料和訓練資源的,就像 OpenAI 對於大型語言模型的『湧現』(Emergence)解釋相似。
Google DeepMind 也曾經提出一篇研究,是讓小量級的模型在小任務上理解程度到 100% 正確,其中前期驗證損失還是會經過非常嚴重的震盪,需要有足夠好的泛化措施和訓練時間才能完成 100%。
我不得不回過頭來思考:究竟人類是如何『學習』事物的呢?人類究竟是在哪方面超越了 AI 這一步,才能因應現實世界這麼繁雜的生活規模呢?這個問題,恐怕古往今來的許多研究者都不斷地反覆思索吧!
話說回來,人類真的有超越 AI 嗎?我們所建構的知識體系與日常生活,難道不正是我們的『訓練資料』嗎?並且在日常生活中,有許多事情都會給予我們『損失』(也是一種反饋 feedback)。
比方說我們幼年期因為跌倒,感覺到疼痛,為了不再受傷,逐漸摸索出自己操控身體的方式。
比方說我們學習時,通過與老師、同學們的討論,逐漸意識到自己的知識理解哪裡有誤、哪裡需要改正。
我們每時每刻,都在接收著龐大的資訊與反饋。
現在的模型還很被動,只學習幾種常見的模態,比方說文字、比方說圖像,並且 —— 需要人類來驅動。我的意思是,現在的模型沒辦法自己決定自己需要去做什麼事情,而是等待『輸入』(Input),給予『輸出』(Output)。
為了能夠讓 AI 模型靈活應對各種處理流程,這一年來所謂的代理(Agent)才會這麼紅,我是這樣認為的。(備註:所謂的 Agent,即是泛指把多個不同的 AI 模型、或是接著不同 Prompt 指令的 AI 模型湊在一起,處理資料流,這是一種讓 AI 模型自己產生不同輸入讓 AI 模型能夠處理更加複雜的任務的方式。)
就這幾點來看,我認為我們要迎接大家想像中的 AGI(通用人工智慧)還有一小段距離。但當然,與人類的歷史相比,此刻的我們已經無限接近於這個時刻了,每當看到新的 AI 技術論文發表我其實就會很興奮,因為就算只有一點點,這世界也在確實地朝那一天邁進。
有一種可能是,我們需要讓 AI 能夠在沙盒的世界中,模擬各種操作身體的各種方式,等到累積足夠的訓練資料後,再遷移到真正的物理世界讓他操作機器人身體。這方面的研究者非常多,大家都很期待哪一天這個方法足夠完美到讓 AI 可以在物理世界服務人類。
另一種可能是,我們需要讓 AI 模型一直維持在『思考』的狀態、同時,AI 模型還可以自己主動提出想要做的事情,而非只是被動等待人類的指令輸入。
這方面的訓練資料非常難取得,因為我們通常無法紀錄自己完整的心智活動。
除了資料外,我們的能源消耗、硬體的設計都還充斥各種挑戰,遠非軟體、資訊工程的部份就位時便可完成。
似乎越扯越遠了呢,不過我覺得這是一個很值得留念的筆記。因為我接下來恐怕還會投身在 AI 領域的研究非常多年吧!過幾年後,當我再次看到自己的這篇筆記,那時的我究竟會怎麼想呢?