夕小瑤科技說 分享
來源 | ybq@知乎
疊甲宣告:本文純瞎聊,單純分享一下我和 @真中合歡 ,以及大哥大姐,在茶餘飯後拌嘴的一些內容。文章不包含任何理論推導、實驗證明,大家當個樂子讀讀就好了。
我們聊的問題是:在知識掌握層面上,sft 後的模型為什麼不如 pretrain 模型效果好?或者說,為什麼 sft 後的模型在知識掌握上會有幻覺?
(各公司的 chat 模型,評估指標都會明顯差於 base 模型)
首先,我們從統計學的角度出發:sft 資料和 pretrain 資料的分佈差異太大,這種分佈的偏離導致模型產生幻覺。圍繞這個觀點有很多解決幻覺的工作:在 sft 階段引入 pretrain 資料,在 pretrain 階段引入 sft 資料,有篇論文叫 self-distillation fine-tuning,讓 pretrain 模型重寫 sft 資料來拉近資料分佈 …… 怎麼說呢,分佈差異這個觀點肯定是正確的,但還是稍微有些籠統了,具體差異在哪裡呢?為什麼有差異就會幻覺呢?還需要往深了再討論下。
接著,我們從煉丹的角度出發:在 sft 訓練的時候,訓練 epoch 多啊,學習率小啊,資料質量高啊,容易落入區域性最優啊,等等等等。但說來說去,感覺 sft 就是一個大號退火階段啊,可退火階段並沒有引入那麼多的幻覺呀。這個答案顯然不能服眾。
繼續往下,我開始從資料的角度出發,圍繞著“special_token,學習某種 pattern,sft 模型不再是傳統的語言模型了,續寫能力變成 QA 能力了”這幾個點分析,說的應該也是都有道理,但總感覺還是沒戳中關鍵點。
終於,真中合歡從哲學的角度出發,用兩個字終結了我們的這個話題 —— 捷徑!
對啊,這兩個字真的是太貼切了,幾乎涵蓋了上面我們討論的所有要點:
-
sft 在做什麼?在找一條捷徑,讓 pretrain 模型可以直接說出答案,而不是續寫一堆 token 後再總結出答案。
-
走捷徑並不是一個褒義詞,那麼代價是什麼呢?幻覺。
為什麼走捷徑會產生幻覺呢,我舉個例子:中國的首都是哪裡呢?
-
pretrain 模型:這個問題問得好…… 中國最早的首都是…… 中國現在的首都是…… -
sft 模型:北京。
pretrain 模型有沒有這個知識?一定有。pretrain 模型需要多少個 token 才能說出這個知識?不知道。運氣好的時候續寫一百個 token 就提到了北京,運氣不好的時候續寫一千個、一萬個都有可能。那麼問題來了,sft 模型走捷徑而拋棄的這一千個 token,到底有沒有資訊量呢?到底是不是推匯出中國的首都是北京的關鍵 cot 過程呢? 大機率是有資訊量的,一旦學會了這種走捷徑的方式,並且把這種捷徑泛化到其他知識上,模型的幻覺也就產生了。
這裡,一定不能總是用人思考的方式來揣摩機器思考的方式,我們認為“中國的首都是北京”是天經地義的幾個 token 就學會的知識,模型可能是從《北京的發展史》這一本幾萬 token 的書籍中才學到的這個知識。
然後我就猜測:把 prompt 餵給 pretrain 模型,先續寫 1W 個 token,再總結這 1W 個 token 得到 response,訓練和推理的時候都不省略這 1W 個 token,這種方式估計不會讓模型產生幻覺,因為模型根本沒學會走捷徑。
不太對啊,聊著聊著感覺我說的這個實驗就像是 o1 呀。我們真沒有奔著 o1 的方向去聊天,但話題確實是水到渠成般走向了 o1。此時,我必須感慨一句,幸好 o1 是 OpenAI 提出的,這要是國內提出的技術方案,肯定全是負面言論:“這不就是快慢思考嘛”,“cot 而已,誰做不了呢?”,“推理時間這麼長,有啥用?”……
o1 是一個大家都想到過但都不敢付諸實踐的技術路線,感謝 OpenAI 引領大家走向這條路線。
好,這次的閒聊就分享就到這裡。下次分享的閒聊話題可能會是:“o1 的 cot 過程一定需要是自然語言嗎?”,這個話題也有一個更接地氣的表達方式:“自己的草稿紙一定需要讓別人能看懂嗎?” —— 沒錯,這種炸裂級腦洞的話題,又是我們的真中合歡同學提出的。
來源:https://zhuanlan.zhihu.com/p/9649266595
