LLM面面觀之LLM復(fù)讀機問題及解決方案

1. 背景

關(guān)于LLM復(fù)讀機問題拄丰,本qiang~在網(wǎng)上搜刮了好幾天蝇棉,結(jié)果是大多數(shù)客觀整理的都有些支離破碎,不夠系統(tǒng)澜倦。

因此聚蝶,本qiang~打算做一個相對系統(tǒng)的整理,包括LLM復(fù)讀機產(chǎn)生的原因以及對應(yīng)的解決方案藻治。

2. LLM復(fù)讀機示例

示例1:短語級別的重復(fù)

User: 你喜歡北京么碘勉?

AI: 北京是中國的首都,有很多名勝古跡栋艳,如長城恰聘,故宮,天壇等吸占,我十分喜歡喜歡喜歡喜歡…..

示例2:句子級別的重復(fù)

User: 你喜歡北京么晴叨?

AI: 北京是中國的首都,有很多名勝古跡矾屯,如長城兼蕊,故宮,天壇等件蚕,我十分熱愛北京孙技,我十分熱愛北京,我十分熱愛北京排作,…..

3. LLM復(fù)讀機原因

本文主要參考了清華大學(xué)的論文《Learning

to Break the Loop: Analyzing and Mitigating Repetitions for Neural Text

Generation》牵啦,文中詳細(xì)介紹了LLM產(chǎn)生復(fù)讀的原因。論文的前提假設(shè)是LLM的解碼均為貪心解碼(greedy decoding)妄痪,即每次生成的token選擇詞表中概率最大的token哈雏。

結(jié)論如下:

(1) LLM趨向于提高重復(fù)先前句子的概率

特別地,即使僅出現(xiàn)一條句子級的上下文重復(fù)衫生,重復(fù)的概率在大多數(shù)情況下也會增加裳瘪。產(chǎn)生這種現(xiàn)象的原因可能是LLM對上下文非常有信心,當(dāng)先前的token共享同一個句子級的上下文時罪针,模型會學(xué)到一條捷徑彭羹,直接復(fù)制該token。

另一種解釋就是Inudction Head機制泪酱,即模型會傾向于從前面已經(jīng)預(yù)測word里面挑選最匹配的詞派殷。

舉個例子來說明下还最,示例1中的第二個’喜歡’共享了同句子中的’我十分喜歡’,因此模型直接會將’喜歡’拷貝至’我十分喜歡’毡惜,進而生成’我十分喜歡喜歡’

(2) 自我強化效應(yīng)(self-reinforcementeffect)

重復(fù)的概率幾乎隨著歷史重復(fù)次數(shù)的增加而單調(diào)增加憋活,最終,重復(fù)概率穩(wěn)定在某個上限值附近虱黄。

一旦生成的句子重復(fù)幾次,模型將會受困于因自我強化效應(yīng)引起的句子循環(huán)吮成。

下圖是論文中的圖橱乱,意思是隨著重復(fù)次數(shù)的增加,’general’一詞的概率幾乎單調(diào)增加粱甫,最終趨于穩(wěn)定泳叠。其中紅柱表示生成相同token的概率,藍(lán)色表示最大概率茶宵。


(3) 初始概率較高的句子通常具有較強的自我強化效應(yīng)危纫。

4. 如何解決

目前針對LLM重復(fù)生成的問題,主要有兩種策略乌庶,一種是基于訓(xùn)練思想种蝶,一種是基于解碼策略。

4.1 基于訓(xùn)練策略

整體思想就是通過構(gòu)造偽數(shù)據(jù)瞒大,即短語重復(fù)螃征、句子重復(fù)等偽數(shù)據(jù),如短語或句子重復(fù)N遍透敌,然后設(shè)計重復(fù)懲罰項來抑制大模型生成重復(fù)句子盯滚。

論文中提出了DITTO方法即采用了此策略,DITTO全稱為PseuDo RepetITion

PenalizaTiOn(不得不佩服算法名稱的設(shè)計精美~)酗电。

重復(fù)懲罰項通過設(shè)計損失函數(shù)來達(dá)成魄藕,其中λ是懲罰因子,論文中提到撵术,對于開放式生成背率,推薦取值為0.5,對于總結(jié)摘要類任務(wù)荷荤,取值為0.9性能更好退渗。


代碼分析:

DITTO損失函數(shù)計算的代碼塊位于https://github.com/Jxu-Thu/DITTO中”DITTO/fairseq/custom/repetetion_penalty_accum_loss.py”方法中,大體流程簡要分析如下:


# 構(gòu)造隨機重復(fù)的特征

sample, P, L, N, K = self.re_orgnize_sentence(sample)

# 基于構(gòu)造的重復(fù)特征進行預(yù)測

net_output = model(**sample['net_input'])


……….


## 計算損失函數(shù)

# 獲取重復(fù)的基線概率信息

gt_probs, mask, valid_tokens =? self.obtain_rep_baseline_prob(model.get_targets(sample, net_output),? target_probs.detach(), P, L, N, K)

# 損失函數(shù)公式套用

one_minus_probs = torch.clamp((1.0 - torch.abs((target_probs -? gt_probs*self.rep_reduce_gamma))), min=1e-20)

loss = -torch.log(one_minus_probs) * mask

loss = loss.sum()


此外蕴纳,基于訓(xùn)練的策略還有其他方式会油,如UL(unlikelihood

training)和SG(straight to gradient),論文鏈接可以參考第6小節(jié)古毛。

4.2 基于解碼策略

基于解碼策略包含諸多方法翻翩,如beam search, random search(topK, topP), 溫度, ngram等都许。

(1) 集束搜索(beamsearch)

針對貪心策略的改進,思想就是稍微放寬一些考察范圍嫂冻。即胶征,在每一個時間步,不再只保留當(dāng)前分?jǐn)?shù)最高的1個輸出(貪心策略)桨仿,而是保留num_beams個睛低,當(dāng)num_beams=1時,集束搜索就退化成了貪心搜索服傍。

(2) randomsearch(topK, topP)

topK即從概率最高的K個token中進行篩選钱雷,即允許其他高分tokens有機會被選中

topP將可能性之和不超過特定值的top tokens列入候選名單,topP通常設(shè)置較高的值吹零,目的是限制可能被采樣的低概率token的長尾

(3) 溫度T

較低的溫度意味著較少的隨機性罩抗,溫度為0將始終產(chǎn)生相同的輸出,較高的溫度意味著更多的隨機性灿椅,可以幫助模型給出更有創(chuàng)意的輸出套蒂。

基于解碼的策略墻裂建議直接查閱transformers框架中的實現(xiàn)方法,本qiang~切身體會茫蛹,閱讀源碼確實能愉悅身心~

5. 總結(jié)

一句話足矣~

本文主要展開解讀了LLM的復(fù)讀機問題操刀,并參考相關(guān)論文,給出基于訓(xùn)練策略和基于解碼策略的解決手段麻惶,相信客官們清楚該問題了馍刮。

靜待下一次的LLM知識點分享~

6. 參考

(1) DITTO:https://arxiv.org/pdf/2206.02369.pdf

(2) UL:https://arxiv.org/pdf/1908.04319v2.pdf

(3) SG:https://arxiv.org/pdf/2106.07207v1.pdf

(4) beam search:https://zhuanlan.zhihu.com/p/114669778

(5) random

search(topK, topP), 溫度: https://zhuanlan.zhihu.com/p/613428710

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市窃蹋,隨后出現(xiàn)的幾起案子卡啰,更是在濱河造成了極大的恐慌,老刑警劉巖警没,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件匈辱,死亡現(xiàn)場離奇詭異,居然都是意外死亡杀迹,警方通過查閱死者的電腦和手機亡脸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來树酪,“玉大人浅碾,你說我怎么就攤上這事⌒铮” “怎么了垂谢?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長疮茄。 經(jīng)常有香客問我滥朱,道長根暑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任徙邻,我火速辦了婚禮排嫌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘缰犁。我一直安慰自己淳地,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布帅容。 她就那樣靜靜地躺著薇芝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪丰嘉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天嚷缭,我揣著相機與錄音饮亏,去河邊找鬼。 笑死阅爽,一個胖子當(dāng)著我的面吹牛路幸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播付翁,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼简肴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了百侧?” 一聲冷哼從身側(cè)響起砰识,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎佣渴,沒想到半個月后辫狼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡辛润,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年膨处,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片砂竖。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡真椿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出乎澄,到底是詐尸還是另有隱情突硝,我是刑警寧澤,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布三圆,位于F島的核電站狞换,受9級特大地震影響避咆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜修噪,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一查库、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧黄琼,春花似錦樊销、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至撤师,卻和暖如春剂府,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背剃盾。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工腺占, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人痒谴。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓衰伯,卻偏偏與公主長得像,于是被迫代替她去往敵國和親积蔚。 傳聞我的和親對象是個殘疾皇子意鲸,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,647評論 2 354

推薦閱讀更多精彩內(nèi)容