主頁 >  其他 > 自然語言處理中預訓練模型一覽

自然語言處理中預訓練模型一覽

2020-09-15 06:38:14 其他

預訓練模型的梳理總結

摘要

本報告將從以下幾個方面梳理預訓練模型,陳述預訓練(特指nlp領域)的what和how,總結預訓練加微調模式的好處和弊端,通過時間線的方式梳理最近兩年來預訓練模型的發展脈絡,重點闡述幾個典型的預訓練模型的做法和創新點,

chap1:預訓練模型

預訓練模型一開始是在CV中流行起來的,在影像領域,由于有些任務可能面臨這資料量匱乏這一難題,直接在此任務上進行神經網路的訓練非常容易導致過擬合,因此人們通常是在一些大的影像資料集上進行通用神經網路的訓練,因為在神經網路中,越靠前邊的網路層學到的特征越抽象,對于不同的影像資料集來說,他們之間的一些抽象特征可能是相似或者相同的,因此,通過在大的資料集上進行預訓練,然后在根據特定的任務進行微調,能夠加速網路的訓練,緩解過資料量不足而帶來的過擬合問題,預訓練微調模式可以看成遷移學習的一種特定手段,

而在NLP方面,預訓練手段則發展的比較晚,但是預訓練的思想其實早就有了,比如最早的word2vec,其實就可以看成特殊的預訓練,只不過我們的下游任務直接把學得的詞向量拿來作為自己任務的初始化了,而不是進行某種方式的微調,我認為預訓練模型發展較晚的原因由以下幾個方面構成,

第一,NLP沒有像CV一樣的大型通用的資料集,由于自然語言的復雜性,很難定義合適的通用的監督型任務供預訓練模型進行學習,

第二,如上所述,沒有合適的標注資料集,那么進行監督學習就是不太的可能的了,大家都沒有意愿去摸索如何利用無監督資料的方法,

第三,在transformer之前,NLP最常用的特征提取模塊都是rnn-based,這類的特征提取模塊不太適合作為預訓練模型的backbone,原因是,他們都是回圈遞回結構,預訓練追求的在大規模資料上學習通用的語言特征,而rnn-based特征提取模塊作為backbone訓練時時間復雜度是非常高的,大多數研究人員和研究公司都不太愿意嘗試,

chap2:各類預訓練模型

2.1 語言模型

語言模型是指這樣的一個映射函式:

\[f:S->R \]

該映射可以建模一個句子的可能性,通常在機器翻譯中應用較多,機器翻譯中一般將其作為候選結果集的篩選器,

通常該函式是通過在給定預料上通過最大似然學得的,一般的,考慮單向的語言模型,通過鏈式法則以及最大化如下似然函式,來學習模型:

\[\theta = argmax\sum_{x\in Cor}logP_\theta(x) \\ = argmax \sum _{x \in Cor}\sum_{t} logP_\theta(x_t|x_{<t})\\=argmax\sum_{x\in Cor}\sum_{t=1}^Tlog\frac{exp(h_\theta(x_{1:t-1})^Te(x_t))}{\sum_{x^\prime}exp(h_\theta(x_{1:t-1})^Te(x^\prime))} \]

上述建模方法是預訓練模型中最常用的訓練手段,稱之為單向正向語言模型,與之相對的,下面是單向反向預訓練模型:

\[\theta = argmax \sum_{x \in Cor}logP_\theta(x) \\ = argmax \sum _{x \in Cor}\sum _tlogP _\theta(x_t|x_{>t}) \]

\(P_\theta\)一般用LSTM來建模,后來逐漸演變為Transformer模塊,因為Transformer包含多層的Self-Attention運算,而語言模型恰恰就需要提取這種序列內部互動特征,

基于語言模型的預訓練模型子18年以來層出不窮,儼然成了各大公司中的亂斗場,頻繁的重繪著以NLU為核心的各類NLP任務,下表就是我根據所看的論文總結出比較典型的預訓練模型的近兩年的發展脈絡,

模型名稱 特征提取 模塊 預訓練任務 語言 模型 特點
ELMO BiLSTM LM 單向拼接 首次真正的將預訓練的思想進行了實踐
GPT Transformer LM 單向 統一下游微調任務的形式,證明了transformer結構在預訓練任務中的有效性
BERT Transformer MLM,NSP 雙向 創新性的提出MSM任務,首次事先了雙向的語言模型
GPT2.0 Transformer LM 單向 在生成任務中取的良好的結果
MASS Transformer LM,MLM 單向,雙向 將序列任務引入到預訓練程序
UNILM Transformer LM,MLM,S2SLM 單向,雙向 靈活的運用mask矩陣,實作僅僅用Encoder來作序列任務
MTDNN Transformer MLM 雙向 在下游階段引入了多任務學習
Transformer-XL Transformer-XL
XLNET Transformer-XL Perm-LM 雙向 排列語言模型,雙注意流
ALBERT Transformer MLM 雙向 對BERT進行了針對性的模型壓縮,保留了盡可能大的性能同時精簡了模型
RoBERTa Transformer
DistillBERT Transformer 對BERT進行了模型蒸餾,從而達到模型壓縮的目的
表2.1 基于語言模型的預訓練模型發展脈絡
2.2 ELMo:Deep contextualized word representations

ELMo(Embeddings from Langauge Model)的思想非常簡單,通過雙向拼接的LSTM結構作為模型的特征提取表示模塊,然后使用LM作為預訓練第一個階段的任務,為了將下游不同的任務融合進去,論文在上層融合了不同的NLP任務,需要注意的是,作者在融合不同任務的時候,并沒有統一的使用最頂層的向量表示,而是針對不同的任務使用了不同層的向量表示,

elmo的優點在于初步解決了之前的詞向量表示中所不能解決的一詞多義的問題,因為每個詞向量表示都是根據其周圍的詞在句子中動態獲得的,

2.3 GPT:Improving Language Understandingby Generative Pre-Training

GPT是Open AI的作業,開創性的使用了Transformer來作為預訓練模型的特征提取模塊,在NLU相關的下游任務中取得了非常好的效果,模型也是十分簡潔的,預訓練部分使用單向的LM,微調階段也是十分簡潔,將一些非序列而任務融合到了一個框架中去,采用了分隔符標記拼接的方式來統一處理,

2.4 GPT2.0:Language Models are Unsupervised Multitask Learners

由于GPT2.0在GPT基礎上做的,除了使用了多任務以及超大預訓練資料集以及超大的模型之外,在思想上并沒有很大的創新,這里就不詳細展開了,

2.5 BERT: Pre-training of Deep Bidirectional Transformers for Lanuage Understanding

BERT這篇論文在組會上已經多次討論了,其中模型結構以及預訓練任務大家都早已非常熟悉,這里不再贅述,

這里稍微說下BERT用于預訓練中的MLM任務,以及為什么可以稱之為雙向的語言模型,理想情況下,我們都希望一個詞的語意特征表示是由其背景關系共同編碼決定的,顯然上面基于鏈式法則的單向語言模型是不能夠學習到雙向語意表示的,因為在預測\(x_t\)時,無論是正向的語言模型還是反向的語言模型,都只由該時刻一側的序列決定,所以模型自然不能將雙向的資訊編碼到中心詞中去,而BERT通過借鑒close-test這樣的任務思想,借助Self-Attention Mask,巧妙的解決了上述問題,BERT可以形式化最大如下似然函式:

\[\theta = argmax \sum_{x \in Cor}P_\theta(x|\overline x) \\ = argmax\sum _{x \in Cor}\sum _t m(t)\cdot P_\theta(x_t|\overline x)\\=\sum_{t=1}^Tm_tlog\frac{exp(H_\theta(\hat x)_t^Te(x_t))}{\sum _{x\prime}exp(H_\theta(\hat x)_t^Te(x^\prime))} \]

其中

\[m(t) = \begin{cases}1,x_t masked \\ 0,otherwise \end{cases} \]

\(H_\theta(x) = [H_\theta(x)_1,H_\theta(x)_2,,,,,H_\theta(x)_T]\),這里的\(H_\theta\)是Transformer結構的編碼器,

具體的\(\overline x\)是通過Transformer的Encoder部分來完成特征提取的,在預測當前單詞t時刻單詞時,通過Attention Mask保證\(x_t\)時刻的資訊不泄露,由于Self-Attention計算是對整個句子進行query操作,所以就把雙向的資訊編碼進去了,通過這樣的任務轉化,BERT就建模到了雙向的語意表示資訊,但是BERT也面臨著如下的為解決問題:

  • 如果在Transformer不加入Position Encoding這一操作,那么該特征提取模塊實際上就是One-Hot表示而已,不能建模句子內部的相對位置資訊,這也是為什么需要加入額外的位置嵌入資訊這一操作,
  • 可以看出在進行序列預測時,上述的建模實際上有默認被Mask掉的部分各自相互獨立,顯然這是不合理的,
  • 同時,在單步預測被mask掉位置的單詞時,將其他位置的mask資訊資訊也編碼了進來,這樣做有優點,也有弊端,優點是相當于人為的引進了噪聲,可以增強模型的魯棒性,缺點只能通過啟發式的方法設定MASK的數量占比,無法確定究竟引入多少的MASK是合適的,
  • MASS:Masked Sequence to Sequence Pre-training for Language Generation

要注意的是,包括BERT在內的預訓練模型大多都在一些NLU任務上表現優異,這些任務的基本都是一些序列分類任務,當然,也有很多人在一些序列標注任務上做過一些嘗試,但是像機器翻譯,文本摘要或者其他的序列生成任務,這些預訓練模型便顯的力不從心了,根本的原因是:這些模型都只是由一個Encoder結構組成,對于標注任務單獨一個Encoder還是可以解決的,但是像序列生成這樣的任務便無能為力了,

MASS就是為了解決這一問題而提出的預訓練模型,實際上MASS的思想很簡單,既然一個單獨的Encoder不能解決,那么再疊加一個Decoder作為解碼部分不就可以了,因此MASS在預訓練模型部分添加了Decoder結構,并將最優化目標設為如下形式:

\[\theta = argmaxL_\theta(\cal X)=\sum_{x\in \cal X}logP_\theta(x^{u:v}|x^{/u:v}) \\ =\sum_{x\in \cal X}\sum _{t=u}^vlogP_\theta(x_t^{u:v}|x_{<t}^{u:v},x^{/u:v}) \]

建模這樣的最大似然有兩個好處,一個是BERT時各Mask位置相互獨立這一假設消失了,另外一個就是不用再引入這么多Mask資訊了,

2.6 UniLM:Unified Language Model Pre-training

UniLM的巧妙之處在于將上面提到的三種語言模型都集成到了一個模型中去,而且僅僅用了Encoder結構,

預訓練采用了1/3的雙向語言模型,1/3的序列到序列語言模型、各占1/6的從左到右的以及從右到左的單向語言模型,同時也像BERT一樣集成了NSP任務,

具體的,UniLM采用了如下方式來統一的集成上述預訓練程序:

參考:

Improving Language Understandingby Generative Pre-Training

GPT:Improving Language Understandingby Generative Pre-Training

BERT:Pre-training of Deep Bidirectional Transformers for Lanuage Understanding

MASS:Masked Sequence to Sequence Pre-training for Language Generation

Unified Language Model Pre-training for Natural Language Understanding and Generation

XLNet: Generalized Autoregressive Pretrainingfor Language Understanding

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/43583.html

標籤:其他

上一篇:線性代數基礎知識的復習

下一篇:Scikit-Learn 原始碼研讀 (第二期)基類的實作細節

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more