日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

层次分解位置编码,让BERT可以处理超长文本

發(fā)布時間:2024/10/8 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 层次分解位置编码,让BERT可以处理超长文本 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?PaperWeekly 原創(chuàng) ·?作者|蘇劍林

單位|追一科技

研究方向|NLP、神經(jīng)網(wǎng)絡(luò)

大家都知道,目前的主流的 BERT 模型最多能處理 512 個 token 的文本。導(dǎo)致這一瓶頸的根本原因是 BERT 使用了從隨機初始化訓(xùn)練出來的絕對位置編碼,一般的最大位置設(shè)為了 512,因此頂多只能處理 512 個 token,多出來的部分就沒有位置編碼可用了。當(dāng)然,還有一個重要的原因是 Attention的 復(fù)雜度,導(dǎo)致長序列時顯存用量大大增加,一般顯卡也 finetune 不了。

本文主要面向前一個原因,即假設(shè)有足夠多的顯存前提下,如何簡單修改當(dāng)前最大長度為 512 的 BERT 模型,使得它可以直接處理更長的文本,主要思路是層次分解已經(jīng)訓(xùn)練好的絕對位置編碼,使得它可以延拓到更長的位置。

位置編碼

BERT 使用的是訓(xùn)練出來的絕對位置編碼,這種編碼方式簡單直接,效果也很不錯,但是由于每個位置向量都是模型自己訓(xùn)練出來的,我們無法推斷其余位置的編碼向量,因此有了長度限制。

解決這個問題的一個主流思路是換成相對位置編碼,這是個可行的辦法,華為的 NEZHA [1] 模型便是一個換成了相對位置編碼的 BERT 模型。相對位置編碼一般會對位置差做個截斷,使得要處理的相對位置都在一個有限的范圍內(nèi),因此相對位置編碼可以不受限于序列長度。

但相對位置編碼也不是完美的解決方案,首先像 NEZHA 那樣的相對位置編碼會增加計算量(如果是 T5 那種倒是不會),其次是線性 Attention 則沒法用相對位置編碼,也就是不夠通用。

讀者可能會想起 Attention is All You Need 不是提出了一種用 表示的 Sinusoidal 絕對位置編碼嗎?直接用那種不就不限制長度了?理論上是這樣,但問題是目前沒有用 Sinusoidal 位置編碼的模型開放呀,難道我們還要自己從零訓(xùn)練一個?這顯然不大現(xiàn)實呀。

層次分解

所以,在有限資源的情況下,最理想的方案還是想辦法延拓訓(xùn)練好的 BERT 的位置編碼,而不用重新訓(xùn)練模型。下面給出筆者構(gòu)思的一種層次分解方案。

▲ 位置編碼的層次分解示意圖

具體來說,假設(shè)已經(jīng)訓(xùn)練好的絕對位置編碼向量為 ,我們希望能在此基礎(chǔ)上構(gòu)造一套新的編碼向量 ,其中 。為此,我們設(shè):

其中 且 是一個超參數(shù), 是該套位置編碼的“基底”。這樣的表示意義很清晰,就是將位置 層次地表示為 ,然后 i, j 對應(yīng)的位置編碼分別為 和,而最終 的編碼向量則是兩者的疊加。不難理解,要求 是為了區(qū)分 (i, j) 和 (j, i) 兩種不同的情況。

我們希望在不超過 n 時,位置向量保持跟原來的一樣,這樣就能與已經(jīng)訓(xùn)練好的模型兼容。換句話說,我們希望 ,這樣就能幫助我們把各個 給確定下來了:

這樣一來,我們的參數(shù)還是 ,但我們可以表示出 個位置的編碼,并且前 n 個位置編碼跟原來模型是相容的。

自我分析

事實上,讀懂了之后,讀者就會發(fā)現(xiàn)其實這個分解幾乎沒什么技術(shù)含量,就是一個純粹的拍腦袋的結(jié)果而已。

至于為什么會覺得這樣做有效?一是由于層次分解的可解釋性很強,因此可以預(yù)估我們的結(jié)果具有一定外推能力,至少對于大于 n 的位置是一個不錯的初始化;二則是下一節(jié)的實驗驗證了,畢竟實驗是證明 trick 有效的唯一標(biāo)準(zhǔn)。

本質(zhì)上來說,我們做的事情很簡單,就是構(gòu)建一種位置編碼的延拓方案,它跟原來的前 n 個編碼相容,然后還能外推到更多的位置,剩下的就交給模型來適應(yīng)了。這類做法肯定有無窮無盡的,筆者只是選擇了其中自認(rèn)為解釋性比較強的一種,提供一種可能性,并不是最優(yōu)的方案,也不是保證有效的方案。

此外,討論一下 的選取問題,筆者默認(rèn)的選擇是 。理論上來說, 且 都成立,但是從實際情況出發(fā),還是建議選擇 的數(shù)值。

因為我們很少機會碰到上萬長度的序列,對于個人顯卡來說,能處理到 2048 已經(jīng)很壕了,如果 n=512,那么這就意味著 i = 1, 2, 3, 4 而 ,如果 的話,那么從分解式(1)看 就會占主導(dǎo),因為位置編碼之間差異變小,模型不容易把各個位置區(qū)分開來,會導(dǎo)致收斂變慢;如果 ,那么占主導(dǎo)的是 ,位置編碼的區(qū)分度更好,模型收斂更快一些。

實踐測試

綜上所述,我們可以幾乎無成本地延拓 BERT 的絕對位置編碼,使得它最大長度可以達到 萬!這絕對能滿足我們的需求了吧?該改動已經(jīng)內(nèi)置在 bert4kera>=0.9.5 中,用戶只需要在 build_transformer_model 中傳入?yún)?shù) hierarchical_position=True 即可啟用,True 也可以換為 0~1 之間的浮點數(shù),代表上述 的值,為 True 時則默認(rèn) 。

至于效果,筆者首先測了 MLM 任務(wù),直接將最大長度設(shè)為 1536,然后加載訓(xùn)練好的 RoBERTa 權(quán)重,發(fā)現(xiàn) MLM 的準(zhǔn)確率大概是 38% 左右(如果截斷到 512,那么大概是 55% 左右),經(jīng)過 finetune 其準(zhǔn)確率可以很快(2000 步左右)恢復(fù)到 55% 以上。

這個結(jié)果表明這樣延拓出來的位置編碼在 MLM 任務(wù)上是行之有效的。如果有空余算力的話,在做其他任務(wù)之前先在 MLM 下繼續(xù)預(yù)訓(xùn)練一會應(yīng)該是比較好的。

然后測了兩個長文本分類問題,分別將長度設(shè)為 512 和 1024,其他參數(shù)不變進行 finetune(直接 finetune,沒有 MLM 繼續(xù)預(yù)訓(xùn)練),其中一個數(shù)據(jù)集的結(jié)果沒有什么明顯變化;另一個數(shù)據(jù)集在驗證集上 1024 的比 512 的要高 0.5% 左右。

這再次表明本文所提的層次分解位置編碼是能起作用的。所以,大家如果有足夠顯存的顯卡,那就盡管一試吧,反正在 bert4keras 下就是多一行代碼的事情,有提升就是賺到了,沒提升也沒浪費多少精力。

最后提供一個 finetune 階段最大長度與最大 batch_size 的參照表(RoBERTa Base 版,24G 的 TITAN RTX):

文章小結(jié)

本文分享了筆者構(gòu)思的一種基于層次分解的位置編碼延拓方案,通過這個延拓,BERT理論上最多可以處理多達 26 萬長度的文本,只要顯存管夠,就沒有 BERT 處理不了的長文本。

所以,你準(zhǔn)備好顯存了嗎?

參考文獻

[1] https://github.com/huawei-noah/Pretrained-Language-Model/tree/master/NEZHA-TensorFlow

[2] https://github.com/bojone/bert4keras

更多閱讀

#投 稿?通 道#

?讓你的論文被更多人看到?

如何才能讓更多的優(yōu)質(zhì)內(nèi)容以更短路徑到達讀者群體,縮短讀者尋找優(yōu)質(zhì)內(nèi)容的成本呢?答案就是:你不認(rèn)識的人。

總有一些你不認(rèn)識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學(xué)者和學(xué)術(shù)靈感相互碰撞,迸發(fā)出更多的可能性。?

PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優(yōu)質(zhì)內(nèi)容,可以是最新論文解讀,也可以是學(xué)習(xí)心得技術(shù)干貨。我們的目的只有一個,讓知識真正流動起來。

?????來稿標(biāo)準(zhǔn):

? 稿件確系個人原創(chuàng)作品,來稿需注明作者個人信息(姓名+學(xué)校/工作單位+學(xué)歷/職位+研究方向)?

? 如果文章并非首發(fā),請在投稿時提醒并附上所有已發(fā)布鏈接?

? PaperWeekly 默認(rèn)每篇文章都是首發(fā),均會添加“原創(chuàng)”標(biāo)志

?????投稿郵箱:

? 投稿郵箱:hr@paperweekly.site?

? 所有文章配圖,請單獨在附件中發(fā)送?

? 請留下即時聯(lián)系方式(微信或手機),以便我們在編輯發(fā)布時和作者溝通

????

現(xiàn)在,在「知乎」也能找到我們了

進入知乎首頁搜索「PaperWeekly」

點擊「關(guān)注」訂閱我們的專欄吧

關(guān)于PaperWeekly

PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學(xué)術(shù)平臺。如果你研究或從事 AI 領(lǐng)域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。

總結(jié)

以上是生活随笔為你收集整理的层次分解位置编码,让BERT可以处理超长文本的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。