CDA數據分析師
本文章轉載公眾號:機器之心 作者:符堯、 何俊賢
本項目由上海交通大學,清華大學,愛丁堡大學共同完成。
本項目由上海交通大學,清華大學,愛丁堡大學共同完成。
ChatGPT 的出現,使中文社區意識到與國際領先水平的差距。近期,中文大模型研發如火如荼,但中文評價基準卻很少。
在 OpenAI GPT 系列 / Google PaLM 系列 / DeepMind Chinchilla 系列 / Anthropic Claude 系列的研發過程中,MMLU / MATH / BBH 這三個數據集發揮了至關重要的作用,因為它們比較全面地覆蓋了模型各個維度的能力。最值得注意的是 MMLU 這個數據集,它考慮了 57 個學科,從人文到社科到理工多個大類的綜合知識能力。DeepMind 的 Gopher 和 Chinchilla 這兩個模型甚至只看 MMLU 的分數,因此我們想要構造一個中文的,有足夠區分度的,多學科的基準榜單,來輔助開發者們研發中文大模型。
我們花了大概三個月的時間,構造了一個覆蓋人文,社科,理工,其他專業四個大方向,52 個學科(微積分,線代 …),從中學到大學研究生以及職業考試,一共 13948 道題目的中文知識和推理型測試集,我們管它叫 C-Eval,來幫助中文社區研發大模型。
這篇文章是把我們構造 C-Eval 的過程記下來,與開發者們分享我們的思考和我們視角下的研發重點。我們的最重要 目標是輔助模型開發,而不是打榜。一味地追求榜單排名高會帶來諸多不利後果,但如果能夠科學地使用 C-Eval 幫助模型疊代的話,則可以最大化地利用 C-Eval。因此我們 推薦從模型研發的視角來對待 C-Eval 數據集和榜單。
目錄
1 - 模型強弱的核心指標
首先,把一個模型調成一個對話機器人這件事情並不難,開源界已經有了類似於 Alpaca, Vicuna, RWKV 這樣的對話機器人,跟它們隨便聊聊感覺都還不錯;但要真正希望這些模型成為生產力,隨便聊聊是不夠的。所以構造評價基準的第一個問題是要找到區分度,弄明白什麼樣的能力才是區分模型強弱的核心指標。我們考慮 知識和 推理這兩項核心。
1.1 - 知識
為什麼說知識性的能力是核心能力?有以下幾點論點:
因此,知識型能力可以很好地衡量底座模型的潛力。
1.2 - 推理
推理能力是在知識的基礎上進一步上升的能力,它代表著模型是否能做很困難,很複雜的事情。一個模型要強,首先需要廣泛的知識,然後在知識的基礎上做推理。
推理很重要的論點是:
這裡我們還需要釐清推理和知識的關係:
2 - C-Eval 的目標
有了上述對於知識和推理的闡述,我們決定從知識型的任務出發,構造數據集測試模型的知識能力,相當於對標一下 MMLU 這個數據集;同時,我們也希望帶一點推理相關的內容,進一步衡量模型的高階能力,所以我們把 C-Eval 中需要強推理的學科(微積分,線性代數,機率 …)專門抽出來,命名為 C-Eval Hard 子集,用來衡量模型的推理能力,相當於對標一下 MATH 這個數據集。
在 C-Eval Hard 上面,模型首先需要有數學相關知識,然後需要有逐步解題的思路,然後需要在解題過程中調用 Wolfram Alpha/ Mathematica/ Matlab 進行數值和符號 / 微分和積分計算的能力,並把計算過程和結果以 Latex 的格式表示出來,這部分的題目非常難。
C-Eval 希望可以在整體上對標 MMLU (這個數據集被用於 GPT-3.5, GPT-4, PaLM, PaLM-2, Gopher, Chinchilla 的研發),希望在 Hard 的部分對標 MATH (這個數據集被用於 GPT-4, PaLM-2, Minerva, Galactica 的研發)。
這裡需要注意的是,我們的最重要目標是 輔助模型開發,而不是打榜。一味地追求榜單排名高會帶來諸多不利後果,這個我們馬上會闡述;但如果能夠科學地使用 C-Eval 幫助模型疊代的話,則會得到巨大收益。我們 推薦從模型研發地視角來對待 C-Eval 數據集和榜單。
2.1 - 目標是輔助模型開發
在實際研發的過程中,很多時候我們需要知道某種方案的好壞或者某種模型的好壞,這個時候我們需要一個數據集幫助我們測試。以下是兩個經典場景:
2.2 - 打榜不是目標
我們需要強調一下為什麼不應該以榜單排名作為目標:
因此,如果把 C-Eval 作為輔助開發的工具,那麼可以最大程度上的發揮它的積極作用;但是如果把它作為一個榜單排名,則存在極大的誤用 C-Eval 的風險,最終也大機率不會有很好的結果。
所以再一次,我們推薦從模型研發地視角來對待 C-Eval 數據集和榜單。
2.3 - 從開發者反饋中持續疊代
因為我們希望模型可以最大程度的支持開發者,所以我們選擇直接跟開發者交流,從開發者的反饋中持續學習疊代 — 這也讓我們學到了很多東西;就像大模型是 Reinforcement Learning from Human Feedback 一樣,C-Eval 的開發團隊是 Continue Learning from Developers』 Feedback.
具體來說,我們在研發的過程中,邀請了位元組跳動,商湯,深言等企業將 C-Eval 接入到他們自己的工作流中做測試,然後相互溝通測試過程中存在哪些比較有挑戰的點。這個過程讓我們學習到很多開始時沒想到的內容:
以上的這些問題都是我們在跟開發者的交互過程中,從開發者反饋里發現的。在現在 C-Eval 的公開版本的文檔和 github 代碼中,這些問題都有解決。
上面的這些過程也證明了,從模型研發的視角來對待 C-Eval 數據集和榜單,可以非常好地幫助大家開發中文大模型。
我們歡迎所有的開發者們給我們的 GitHub 提 issue 和 pull request,讓我們知道如何更好地幫助你,我們希望可以更好地幫助你 :)
3 - 如何保證質量
這個章節我們討論在製作的過程中,我們用了哪些方法來保證數據集的質量。這裡我們最重要的參考是 MMLU 和 MATH 這兩個數據集,因為 OpenAI, Google, DeepMind, Anthropic 這四個最重要的大模型團隊都重點參考了 MMLU 和 MATH,所以我們希望可以向這兩個數據集看齊。在我們初步的調研和一系列的討論之後,我們做了兩個重要的決策,一個是 從頭開始手工製做數據集,另一個是在此過程中重點 防止題目被爬蟲爬到訓練集裡。
3.1 - 手工製作
GPT 的開發過程的一個重要啟發是,人工智慧這行,有多少人工就有多少智能,這個在我們建立 C-Eval 的過程中也有很好地體現,具體來說,從題目來源看:
然後是處理題目:
左邊是同學自己做的,然後寫成了 Markdown - Latex 格式;右邊是渲染出來的效果
大家也能感受到為什麼題目很難,chain-of-thought prompt 很長,為什麼模型需要有能力做微積分的符號和數值計算
3.2 - 防止混入訓練集
為了評測的科學性,我們考慮了一系列機制來防止我們的題目被混入訓練集
當然,儘管我們做出了這些努力,但可能也會不可避免的發生某個網頁里能搜到題庫里的題目,但我們相信這種情況應該不多。且從我們已有的結果看,C-Eval 的題目還是有足夠區分度的,特別是 Hard 的部分。
4 - 提升排名的方法
接下來我們分析有哪些方法可以提升模型的排名。我們先把捷徑給大家列出來,包括使用不能商用的 LLaMA 和使用 GPT 產生的數據,以及這些方法的壞處;然後我們討論什麼是 困難但正確的路。
4.1 - 有哪些捷徑可以走?
以下是可以走的捷徑:
很多時候,看似是捷徑的道路,其實在暗中標好了價格。
4.2 - 困難但正確的路
最好的方法是自立自強,從頭研發。這件事情很難,需要時間,需要耐心,但這是正確的路。
具體來說,需要重點關注以下機構的論文
如果讀者在里經驗不足,那麼可以先不要看其他的地方的文章。先培養判斷力,再去讀其他地方的文章,這樣才能分清好壞。在學術上,要分清好壞,而不是不加判斷一味接受。
在研發的過程中,建議關注以下內容:
4.3 - 不著急
大模型就是一件花時間的事情,它是對人工智慧工業能力的全方位大考:
因此,不用著急打榜,不用明天就看結果,不用後天上線 — 慢慢來,一步一步來。很多時候,困難但正確的路,反而是最快的路。
5 - 結論
在這篇文章中,我們介紹了 C-Eval 的開發目標,過程,和重點考量的因素。我們的目標是幫助開發者更好地開發中文大模型,促進學術界和產業界科學地使用 C-Eval 幫助模型疊代。我們不著急看結果,因為大模型本身就是一件非常困難的事情。我們知道有哪些捷徑可以走,但也知道困難但正確的路反而是最快的路。我們希望這份工作可以促進中文大模型的研發生態,讓人們早一點體驗到這項技術帶來的便利。
附錄 1:C-Eval 包含的科目
附錄 2:項目成員的貢獻
註:文中所提論文可以在原文頁面找到相應網址。
原文連結:https://yaofu.notion.site/C-Eval-6b79edd91b454e3d8ea41c59ea2af873