CogLTX:將BERT應用於長文本

{"type":"doc","content":[{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"背景"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"自從谷歌的 BERT 預訓練模型橫空出世,預訓練 - 下游任務微調的方式便成了自然語言處理任務的靈丹妙藥。然而,複雜度高、顯存消耗大等問題一直困擾着 BERT 等預訓練模型的優化;由於 BERT 中 Transformer(多層自注意力)關於輸入文本長度 L 有的 O () 的時間空間複雜度,長文本消耗顯存陡然增加。想象一下,一位工程師興致勃勃地將數據在設計好的下游任務上微調,滿懷期待地盼望着結果的提升,卻因爲其中的一些長文本使得顯存溢出或超過位置嵌入(position embedding)最大長度,該是一件多麼沮喪的事情。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"解決這個問題最直接的方法是滑動窗口(sliding window)對每個 512(通常 BERT 位置嵌入的最大長度)字符的窗口分別預測,最終合併不同窗口的結果的方式隨着具體下游任務的不同略有差異,例如閱讀理解問答可以輸出各段中總評分最高的小段(span)作爲答案。然而,如果問題需要長程注意力,也就是兩個關鍵的句子分佈在段落中相距較遠位置的時候,這種方法的效果就會大打折扣,下圖就是一個例子。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/wechat\/images\/46\/465ebbf2fe9fe1c93e1f5d1209348844.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章