0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

自然語言常用的自回歸解碼方法

深度學(xué)習(xí)自然語言處理 ? 來源:金琴(知乎) ? 2024-03-28 10:51 ? 次閱讀

本文為大家分享自然語言生成中的解碼方法,主要包括兩部分:自回歸生成中常用的解碼方法,以及適用于大模型推理加速的speculative decoding方法。

1.自回歸生成中常用的解碼方法

在生成文本序列時(shí),由于全局搜索整個(gè)序列所需的計(jì)算成本極高,我們通常使用自回歸生成(autoregressive generation),即逐個(gè)生成token,如下圖所示。目前最常用的解碼方法(即選擇token的方法)包括:貪心搜索、波束搜索、top-k采樣和top-p采樣。此外,本文也會(huì)介紹通過改變概率分布來控制生成效果的temperature和repetition penalty。

45db4678-ec57-11ee-a297-92fbcf53809c.jpg

貪心搜索(Greedy Search)

在每個(gè)時(shí)間步,我們會(huì)基于已生成的文本來計(jì)算詞表中各詞語的概率分布,最直接的方法就是選擇概率最大的詞。

45e4ba3c-ec57-11ee-a297-92fbcf53809c.jpg

貪心搜索的生成速度很快,短序列看起來效果也還可以,但很快就會(huì)出現(xiàn)語言不流暢、重復(fù)、缺乏多樣性等問題。其主要問題是可能會(huì)忽略那些低概率詞后可能出現(xiàn)的高概率詞。比如在下圖示例中,整體概率更高的序列“The dog has”就被漏掉了。

45eba0f4-ec57-11ee-a297-92fbcf53809c.jpg

波束搜索 (Beam search)

為了解決上述問題,人們引入了波束搜索的方式。也就是在每一步中,都保留概率最高的k個(gè)序列,如下圖所示。

45f5a2f2-ec57-11ee-a297-92fbcf53809c.jpg

在選擇beam size時(shí),較小的值會(huì)使解碼速度更快,但生成的結(jié)果可能會(huì)出現(xiàn)與貪心搜索類似的問題。較大的值可以緩解這些問題,但計(jì)算成本會(huì)增加。而且對(duì)于對(duì)話生成等開放領(lǐng)域任務(wù),較大的beam size還可能會(huì)傾向于生成更通用的回復(fù)。

45fee4de-ec57-11ee-a297-92fbcf53809c.jpg

總的來說,beam search在機(jī)器翻譯、文章摘要等任務(wù)中效果較好。但是,由于它仍然是基于最大概率的方法,所以不適用于需要多樣性和創(chuàng)造力的開放域任務(wù)。

Top-K采樣 (Top-K sampling)

為了使生成的文本更具創(chuàng)新性和多樣性,人們?cè)谶x擇token的策略中引入了一定的隨機(jī)性,也就是從一部分詞中進(jìn)行隨機(jī)采樣。最基礎(chǔ)的方法就是top-k采樣,即選擇概率最高的k個(gè)詞,基于這些詞的概率分布進(jìn)行采樣。

在選擇k值時(shí),較大的值會(huì)使生成的內(nèi)容更具多樣性,但可能會(huì)生成不合理的內(nèi)容;較小的值則使生成的內(nèi)容多樣性較低,但質(zhì)量更有保證。我們可以根據(jù)任務(wù)的不同選擇合適的k值。

由于top-k采樣的k值是固定的,不同的概率分布可能會(huì)帶來不同的問題。如圖所示,當(dāng)概率分布較平坦時(shí)(上半圖),top-k采樣可能會(huì)剔除許多概率相近的合理詞語;而當(dāng)概率分布較陡峭時(shí)(下半圖),可能會(huì)保留一些概率很低的不合理詞語。因此,我們可以考慮動(dòng)態(tài)調(diào)整k值,也就是實(shí)施top-p采樣。

460c4994-ec57-11ee-a297-92fbcf53809c.jpg

Top-P采樣 (Top-p sampling)

如上文所述,top-p采樣的思路是根據(jù)具體的概率分布情況來調(diào)整k值的選擇。具體地,從累積概率超過某個(gè)閾值 p 的k個(gè)詞中進(jìn)行隨機(jī)采樣?;诖?,以上討論的兩種問題都能得到解決。

461962e6-ec57-11ee-a297-92fbcf53809c.jpg

Temperature

除了改變選詞策略,我們還可以通過調(diào)整概率分布來改變生成效果,一個(gè)常用的思路是在概率分布的Softmax函數(shù)中引入Temperature參數(shù)(下圖公式中的τ)。

4627645e-ec57-11ee-a297-92fbcf53809c.jpg

Temperature的取值一般在0-1之間,值越大,概率分布越平緩,生成的序列更具多樣性,適合于需要?jiǎng)?chuàng)造性的任務(wù);值越小,概率分布越陡峭,生成的序列更穩(wěn)定,適合于需要準(zhǔn)確度的任務(wù)。

462eb66e-ec57-11ee-a297-92fbcf53809c.jpg

Repetition Penalty

在文本生成中,重復(fù)性高是一個(gè)常見問題。一個(gè)常用的解決方法是降低已生成詞的概率,即在Softmax函數(shù)中對(duì)已生成的詞額外除以一個(gè)θ。一般來說,該值取1.1或者1.2即可。

463a3d90-ec57-11ee-a297-92fbcf53809c.png

2.Speculative Decoding方法

在大模型的時(shí)代,隨著模型參數(shù)量增加,生成token所需的訪存時(shí)間大大增加,傳統(tǒng)的串行式的自回歸生成方法不再適用。為了提高大模型的推理速度,近年來,許多研究開始關(guān)注speculative decoding,一種Draft-then-Verify的解碼方法。如下圖所示,在Draft階段,先用更高效的方式生成長(zhǎng)度為k的序列;然后在Verify階段,將該序列輸入大模型,一次性驗(yàn)證這k個(gè)token是否合理,并修改不合理的token。

4643e796-ec57-11ee-a297-92fbcf53809c.jpg

該方法的動(dòng)機(jī)主要源于兩點(diǎn):(1)序列中的許多簡(jiǎn)單詞可以用更有效、更簡(jiǎn)單的方法生成。例如,在以下序列"Geoffrey Hinton did his PhD at the University of Edinburgh."中,"of"很容易判斷,我們完全可以使用1B的模型來代替100B的模型;(2)傳統(tǒng)自回歸生成的推理過程主要受限于訪存速度,即生成每個(gè)token時(shí)都需要等待LLM的參數(shù)讀寫。使用draft-then-verify的思路,雖然目標(biāo)大模型的計(jì)算量沒變,但是內(nèi)存訪問時(shí)間大大降低了。

46593c40-ec57-11ee-a297-92fbcf53809c.jpg

為了更清晰地展示speculative decoding的過程,我們以下圖為例。在每一步,Draft階段會(huì)生成5個(gè)token,綠色的是目標(biāo)模型確認(rèn)的token,紅色是目標(biāo)模型第一個(gè)拒絕的token,藍(lán)色是經(jīng)過修正的token(注意,第一個(gè)被拒絕的token之后的所有token都將被丟棄)。比如第一步,Draft階段生成了5個(gè)token,目標(biāo)模型接受輸入 "[START] Japan ’ s benchmark bond",計(jì)算每個(gè)token位置對(duì)應(yīng)的概率分布,然后拒絕了 "bond",并基于概率分布采樣,將其改為 "n"。

46630036-ec57-11ee-a297-92fbcf53809c.jpg

可以發(fā)現(xiàn),在Speculative Decoding中有三部分具體策略:(1)Draft策略,例如使用更小的、與目標(biāo)模型分布接近的模型進(jìn)行自回歸生成;(2)Verify策略,例如判斷候選詞是否是目標(biāo)模型中概率最大的詞;(3)Correct策略,例如使用greedy decoding或者contrastive decoding。近期關(guān)于speculative decoding的綜述 [3] 中對(duì)不同的方法進(jìn)行了詳細(xì)的總結(jié)。

466fe9ea-ec57-11ee-a297-92fbcf53809c.jpg

467d4d38-ec57-11ee-a297-92fbcf53809c.jpg

總結(jié)

本文總結(jié)了最常用的自回歸解碼方法。進(jìn)行自回歸文本生成時(shí),大家可以根據(jù)各方法的原理調(diào)整參數(shù)。此外,本文介紹了一種提升解碼效率 (efficiency) 的方法,即speculative decoding方法。除此之外,還可以從提升解碼質(zhì)量(quality)、可控性 (controllability)、多樣性 (diversity)、可信度 (faithfulness) 等方面繼續(xù)進(jìn)行相關(guān)研究探索。

審核編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 自然語言
    +關(guān)注

    關(guān)注

    1

    文章

    279

    瀏覽量

    13295
  • 大模型
    +關(guān)注

    關(guān)注

    2

    文章

    2136

    瀏覽量

    1985

原文標(biāo)題:自然語言生成中的解碼方法匯總

文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    python自然語言

    最近,python自然語言是越來越火了,那么什么是自然語言自然語言(Natural Language )廣納了眾多技術(shù),對(duì)自然或人類語言進(jìn)
    發(fā)表于 05-02 13:50

    自然語言處理怎么最快入門?

    可自己去了解),這里主要推薦一下常用到(Java)的幾個(gè)分詞工具:(1)、HanLP 是一個(gè)中文自然語言處理的基礎(chǔ)包,它囊括了包含分詞在內(nèi)的幾乎所有的自然語言處理涉及的基礎(chǔ)操作,同時(shí)工具包來說,分為
    發(fā)表于 11-28 10:02

    【推薦體驗(yàn)】騰訊云自然語言處理

    `相信大家對(duì)NLP自然語言處理的技術(shù)都不陌生,它是計(jì)算機(jī)科學(xué)領(lǐng)域和AI領(lǐng)域中的一個(gè)分支,它與計(jì)算機(jī)和人類之間使用自然語言進(jìn)行交互密切相關(guān),而NLP的最終目標(biāo)是使計(jì)算機(jī)能夠像人類一樣理解語言。目前
    發(fā)表于 10-09 15:28

    自然語言處理的分詞方法

    自然語言處理——75 自動(dòng)分詞基本算法
    發(fā)表于 03-19 11:46

    自然語言處理的語言模型

    自然語言處理——53 語言模型(數(shù)據(jù)平滑)
    發(fā)表于 04-16 11:11

    自然語言處理的詞性標(biāo)注方法

    自然語言處理——78 詞性標(biāo)注方法
    發(fā)表于 04-21 11:38

    自然語言處理——總結(jié)、習(xí)題

    自然語言處理——79 總結(jié)、習(xí)題
    發(fā)表于 06-19 11:22

    什么是自然語言處理

    什么是自然語言處理?自然語言處理任務(wù)有哪些?自然語言處理的方法是什么?
    發(fā)表于 09-08 06:51

    深度視頻自然語言描述方法

    針對(duì)計(jì)算機(jī)對(duì)視頻進(jìn)行自動(dòng)標(biāo)注和描述準(zhǔn)確率不高的問題,提出一種基于多特征融合的深度視頻自然語言描述的方法。該方法提取視頻幀序列的空間特征、運(yùn)動(dòng)特征、視頻特征,進(jìn)行特征的融合,使用融合的特征訓(xùn)練基于長(zhǎng)短
    發(fā)表于 12-04 14:07 ?1次下載
    深度視頻<b class='flag-5'>自然語言</b>描述<b class='flag-5'>方法</b>

    自然語言處理常用模型解析

    自然語言處理常用模型使用方法一、N元模型二、馬爾可夫模型以及隱馬爾可夫模型及目前常用自然語言處理開源項(xiàng)目/開發(fā)包有哪些?
    發(fā)表于 12-28 15:42 ?5740次閱讀
    <b class='flag-5'>自然語言</b>處理<b class='flag-5'>常用</b>模型解析

    什么是自然語言處理_自然語言處理常用方法舉例說明

    自然語言處理是計(jì)算機(jī)科學(xué)領(lǐng)域與人工智能領(lǐng)域中的一個(gè)重要方向。它研究能實(shí)現(xiàn)人與計(jì)算機(jī)之間用自然語言進(jìn)行有效通信的各種理論和方法。自然語言處理是一門融
    發(fā)表于 12-28 16:56 ?1.8w次閱讀
    什么是<b class='flag-5'>自然語言</b>處理_<b class='flag-5'>自然語言</b>處理<b class='flag-5'>常用</b><b class='flag-5'>方法</b>舉例說明

    自然語言處理怎么最快入門_自然語言處理知識(shí)了解

    自然語言處理就是實(shí)現(xiàn)人機(jī)間自然語言通信,實(shí)現(xiàn)自然語言理解和自然語言生成是十分困難的,造成困難的根本原因是自然語言文本和對(duì)話的各個(gè)層次上廣泛存
    發(fā)表于 12-28 17:10 ?5255次閱讀

    自然語言處理方法和應(yīng)用

    2018CCAI大會(huì)邀請(qǐng)到國(guó)內(nèi)NLP領(lǐng)域頂尖學(xué)者,蘇州大學(xué)特聘教授,計(jì)算機(jī)學(xué)院副院長(zhǎng),人類語言技術(shù)研究所所長(zhǎng)、國(guó)家杰出青年科學(xué)基金獲得者的張民教授將以《自然語言處理方法和應(yīng)用》為題做專題講座。
    的頭像 發(fā)表于 06-25 15:44 ?5435次閱讀

    自然語言處理的ELMO使用

    word embedding 是現(xiàn)在自然語言處理中最常用的 word representation 的方法常用的word embedding 是word2vec的
    的頭像 發(fā)表于 05-02 14:32 ?3235次閱讀
    <b class='flag-5'>自然語言</b>處理的ELMO使用

    自然語言處理的概念和應(yīng)用 自然語言處理屬于人工智能嗎

      自然語言處理(Natural Language Processing)是一種人工智能技術(shù),它是研究自然語言與計(jì)算機(jī)之間的交互和通信的一門學(xué)科。自然語言處理旨在研究機(jī)器如何理解人類語言
    發(fā)表于 08-23 17:31 ?1139次閱讀