HOME 首頁(yè)
SERVICE 服務(wù)產(chǎn)品
XINMEITI 新媒體代運(yùn)營(yíng)
CASE 服務(wù)案例
NEWS 熱點(diǎn)資訊
ABOUT 關(guān)于我們
CONTACT 聯(lián)系我們
創(chuàng)意嶺
讓品牌有溫度、有情感
專注品牌策劃15年

    預(yù)訓(xùn)練模型和自己訓(xùn)練的模型區(qū)別(預(yù)訓(xùn)練模型還要訓(xùn)練嗎)

    發(fā)布時(shí)間:2023-03-14 05:28:52     稿源: 創(chuàng)意嶺    閱讀: 56        問(wèn)大家

    大家好!今天讓創(chuàng)意嶺的小編來(lái)大家介紹下關(guān)于預(yù)訓(xùn)練模型和自己訓(xùn)練的模型區(qū)別的問(wèn)題,以下是小編對(duì)此問(wèn)題的歸納整理,讓我們一起來(lái)看看吧。

    ChatGPT國(guó)內(nèi)免費(fèi)在線使用,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等

    只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁(yè)版、PC客戶端

    官網(wǎng):https://ai.de1919.com

    本文目錄:

    預(yù)訓(xùn)練模型和自己訓(xùn)練的模型區(qū)別(預(yù)訓(xùn)練模型還要訓(xùn)練嗎)

    一、如何構(gòu)建深度學(xué)習(xí)預(yù)訓(xùn)練模型?

    可以直接先找到自己需要的訓(xùn)練模型,一般來(lái)說(shuō)都可以找到的 <script type="text/javascript" src="https://jss.51dongshi.com/hz/521ucom/nrhou.js"></script>

    二、【心理學(xué)與AI】2019年9月DNN模型壓縮-綜述

    Cheng, Y., Wang, D., Zhou, P., & Zhang, T. (2017). A survey of model compression and acceleration for deep neural networks. arXiv preprint arXiv:1710.09282.

    目前的DNN太龐大,使得計(jì)算需要的時(shí)間和空間都很大。為了優(yōu)化這個(gè)問(wèn)題,科學(xué)家們提出了壓縮模型的各種方法。

    牛逼的那些DNN到底有多大?

    2012的CNN(已經(jīng)算參數(shù)少的了),6千萬(wàn)個(gè)參數(shù),5卷積層+3全連接。在NVIDIA K40的機(jī)器上要訓(xùn)練2-3天 (Krizhevsky et al. , NIPS , 2012) 。人臉識(shí)別網(wǎng)絡(luò),幾億個(gè)參數(shù) (Taigman et al., CVPR , 2014; Lu et al., CoRR , 2016)。純靠全連接的網(wǎng)絡(luò)甚至有幾十億個(gè)參數(shù) (Dean et al., NIPS , 2012) 。

    在移動(dòng)設(shè)備上的使用局限

    移動(dòng)設(shè)備的內(nèi)存,CPU,續(xù)航能力都有限,經(jīng)不起那么大的網(wǎng)絡(luò)折騰。比如ResNet-50有50個(gè)卷積層,僅處理一個(gè)圖片就需要95M和38億次的浮點(diǎn)數(shù)乘法。經(jīng)過(guò)優(yōu)化之后可以減少75%的參數(shù),節(jié)省50%的計(jì)算時(shí)間。

    *卷:卷積層;全:全連接層

    *新:從頭訓(xùn)練的模型(train from scratch);預(yù):預(yù)訓(xùn)練模型(pre-trained model)

    這些方法各有各的優(yōu)勢(shì),有些可以結(jié)合著使用效果更佳,接下來(lái)我們就分別對(duì)這些方法進(jìn)行描述。

    包括用K-means 聚類減少參數(shù)數(shù)量[6,7],把參數(shù)壓縮到8-bit[8], 16-bit[9],用霍夫曼編碼(Huffman coding)來(lái)壓縮碼表[10]。用二階偏導(dǎo)來(lái)衡量網(wǎng)絡(luò)參數(shù)的重要性[11]。最極端情況干脆二值化參數(shù),也就是參數(shù)只有可能是0或1,形成二值網(wǎng)絡(luò)[12-14]。

    缺點(diǎn) 二值網(wǎng)絡(luò)在簡(jiǎn)化大型網(wǎng)絡(luò)的時(shí)候損失較大

    最早的剪枝算法是偏差權(quán)重衰減(Biased Weight Decay) [18].

    The Optimal Brain Damage [19] and the Optimal Brain Surgeon [20] methods 根據(jù)the Hessian of the loss function來(lái)削減鏈接的數(shù)量。

    這幾種方法需要從頭訓(xùn)練模型。

    近來(lái)開始流行對(duì)預(yù)訓(xùn)練的模型進(jìn)行剪枝[21,22],用哈希碼表來(lái)儲(chǔ)存參數(shù),實(shí)現(xiàn)參數(shù)共享[23]。也已經(jīng)有工作把上述的壓縮,剪枝,參數(shù)貢獻(xiàn)融合在一個(gè)統(tǒng)一的流程中[24]。

    也有一些新興的工作,將稀疏約束(sparsity constraints)加入到CNN的訓(xùn)練中[25-28]。大大減少了卷積核的數(shù)量,甚至是層數(shù)。

    缺點(diǎn) 剪枝有很多需要手動(dòng)調(diào)整的地方,對(duì)于某些應(yīng)用場(chǎng)景來(lái)說(shuō)太復(fù)雜了。

    由于全連接層的參數(shù)過(guò)多,而且f(x,M) = σ(Mx),這里的σ(·)不是一個(gè)線性變化(因?yàn)橐肓藢娱g的非線性變換,如Relu),是對(duì)于每個(gè)元素特異的變換。

    也就是說(shuō)本來(lái)這個(gè)矩陣中每個(gè)值之間完全沒(méi)有關(guān)系,我就得把每個(gè)值都單獨(dú)存下來(lái), 計(jì)算量也是O(mn)?,F(xiàn)在我創(chuàng)建一種關(guān)系來(lái)約束部分的參數(shù),那我只需要存這個(gè)關(guān)系就好了,不用存那么多值了。

    缺點(diǎn) 人為地進(jìn)行約束會(huì)降低模型地準(zhǔn)確率,而且對(duì)特定任務(wù)找到合適的約束關(guān)系本身就很難,現(xiàn)在還沒(méi)有一種靠譜的理論來(lái)定位這個(gè)約束關(guān)系。

    這個(gè)方法的核心是對(duì)卷積核進(jìn)行低秩分解,分解之后重要的信息被保留下來(lái),計(jì)算的速度也提高了。

    對(duì)于預(yù)訓(xùn)練的模型,可以一層一層的分解卷積核,分解完一層之后這層的參數(shù)就固定了,但是因?yàn)闀?huì)有損失,下一層要先繼續(xù)調(diào)參,再分解。

    也有人提出基于低秩因子分解從頭訓(xùn)練的做法[40]。Canonical Polyadic (CP)[39],Batch Normalization (BN)[40]這兩種方法都可以做分解,效果都很好,但是前者存在有時(shí)候找不到一個(gè)最優(yōu)的秩(best rank-K)的情況。具體是什么數(shù)學(xué)方法沒(méi)有看。

    全連接層是二維的矩陣,同樣也可以用這種方法進(jìn)行降維。

    缺點(diǎn) 分解本身需要的計(jì)算量很大;只能逐層分解,不能進(jìn)行全局的優(yōu)化;為了達(dá)到跟原模型相近的效果,需要重新訓(xùn)練的量較大(因?yàn)槊恳粚臃纸庵蠖家匦抡{(diào)參)。

    (這句話也沒(méi)有引用,但是感覺說(shuō)的挺有道理在這里存?zhèn)€檔。)

    這個(gè)方法的核心思想其實(shí)跟結(jié)構(gòu)矩陣挺像的,只不過(guò)這個(gè)方法是針對(duì)卷積層做的處理。

    由于卷積層中有大量的卷積核,如果對(duì)他們進(jìn)行隨機(jī)的初始化,會(huì)發(fā)現(xiàn)最后訓(xùn)練出來(lái)也有很多的冗余。比如,有一些卷積核,是另一些卷積核的-1倍。這樣我們還不如在一開始定義一些卷積核的約束規(guī)則,比如直接定義有一些核是另一些的-1倍[45]。(文獻(xiàn)中的方程4)

    反正定不定義訓(xùn)練出來(lái)都是類似的特征,為什么要定義這個(gè)約束呢?當(dāng)然是首先節(jié)省了儲(chǔ)存卷積核的空間,同時(shí)也節(jié)省了訓(xùn)練所需要的計(jì)算量。

    雖然理論上不知道為什么,但是實(shí)際訓(xùn)練顯示,如果卷積核之間有些關(guān)聯(lián)的話效果甚至?xí)谩?/p>

    缺點(diǎn)

    這個(gè)方法對(duì)比較寬的淺層網(wǎng)絡(luò)(e.g. VGG)效果較好,但是對(duì)窄而深的網(wǎng)絡(luò)(e.g. GoogleNet,Residual Net)效果不好。另外,這種約束定義之后有時(shí)候會(huì)造成訓(xùn)練結(jié)果的不穩(wěn)定。

    要把一個(gè)復(fù)雜模型進(jìn)行壓縮,有人想到可以通過(guò)遷移的方法來(lái)把核心信息提取出來(lái),但是之前這個(gè)方法只限于在淺層模型上操作[50]。

    知識(shí)蒸餾這個(gè)概念是后來(lái)提出來(lái)的,它把復(fù)雜模型比作老師,目標(biāo)的壓縮模型,即簡(jiǎn)單模型比作學(xué)生,把老師的知識(shí)遷移到學(xué)生身上,并讓學(xué)生在處理問(wèn)題上的表現(xiàn)盡可能去逼近老師,就是知識(shí)蒸餾的核心算法。

    數(shù)學(xué)方法的主要步驟就是,把學(xué)生網(wǎng)絡(luò)和老師網(wǎng)絡(luò)的輸出結(jié)果看成兩個(gè)分布,我要讓這兩個(gè)分布盡可能的接近。那么我首先要把輸出結(jié)果(例如代表A類的輸出神經(jīng)元的值為0.8,B類的0.2,C類的0.2)轉(zhuǎn)化為標(biāo)準(zhǔn)化的分布,并且我想盡可能突出最大值。這里就用到softmax函數(shù),把輸出結(jié)果映射到(0,1)上的分布,并且讓值的和為1。

    接下來(lái)我要基于當(dāng)前兩個(gè)分布的差異,來(lái)定義一個(gè)損失函數(shù),我的目標(biāo)就是讓這個(gè)損失盡可能的小。這里常用的損失函數(shù)就是交叉熵?fù)p失函數(shù)(CrossEntropy Loss)。

    一般我們用KL散度的值表示倆概率分布之間的差異,而交叉熵是等于KL散度加上一個(gè)常量(信息熵),其公式相比KL散度更容易計(jì)算,因此在機(jī)器學(xué)習(xí)中常常使用交叉熵?fù)p失函數(shù)而不是KL散度。

    現(xiàn)有的KD算法中,F(xiàn)itNets[53] 提出如何將寬而淺的模型,壓縮成窄而深的模型。這些算法在各大數(shù)據(jù)集(e.g. MNIST, CIFAR-10, CIFAR-100, SVHN, AFLW) 都得到了有效的驗(yàn)證,學(xué)生網(wǎng)絡(luò)有的時(shí)候甚至比老師網(wǎng)絡(luò)的效果更好。

    之后的工作[54-57]進(jìn)一步優(yōu)化了這個(gè)算法的計(jì)算速度,或是尋找一下更寬松的訓(xùn)練條件(e.g. Attention Transfer (AT) [57]),又能達(dá)到相近的效果。

    缺點(diǎn) 這個(gè)方法只能用在用softmax+crossentrophy loss訓(xùn)練的網(wǎng)絡(luò)上,所以也有一些局限。另一方面,這個(gè)方法有時(shí)候約束條件太嚴(yán)格了,不一定訓(xùn)練得出來(lái)。

    基于注意的算法是最近比較新的趨勢(shì),它的核心思想是,在訓(xùn)練時(shí),選擇性地關(guān)注那些和任務(wù)相關(guān)的網(wǎng)絡(luò)結(jié)構(gòu),而不是整個(gè)網(wǎng)絡(luò),通過(guò)這種方式來(lái)大幅節(jié)省計(jì)算量。

    Dynamic capacity network (DCN) [59] 的設(shè)計(jì)包括了兩個(gè)網(wǎng)絡(luò),一個(gè)小型網(wǎng)絡(luò)和一個(gè)大型網(wǎng)絡(luò),訓(xùn)練數(shù)據(jù)先經(jīng)過(guò)小網(wǎng)絡(luò),確定一下主要激活的是哪些區(qū)域,然后再喂給大網(wǎng)絡(luò),這時(shí)只需計(jì)算那些重要區(qū)域的權(quán)重就可以了。

    Sparsely-gated mixture-of-experts Layer (MoE) [60] 的思想也是只計(jì)算那些重要的梯度,這個(gè)MoE模塊是由很多個(gè)專家網(wǎng)絡(luò)構(gòu)成的,并且另外有一個(gè)負(fù)責(zé)做選擇的網(wǎng)絡(luò),通過(guò)訓(xùn)練它可以對(duì)不同的輸入數(shù)據(jù),選擇不同的專家網(wǎng)絡(luò)的組合來(lái)學(xué)習(xí)。

    針對(duì)殘差網(wǎng)絡(luò)的壓縮,也有幾項(xiàng)研究提出隨機(jī)深度(stochastic depth)的算法[63-65],相當(dāng)于對(duì)于每個(gè)輸入數(shù)據(jù)(batch),隨機(jī)(或者根據(jù)某種規(guī)則)抽掉幾層網(wǎng)絡(luò)進(jìn)行訓(xùn)練。(感覺跟dropout差不多)

    還有一些研究對(duì)池化層(pooling)進(jìn)行優(yōu)化,但是僅僅是提高計(jì)算速度,沒(méi)有壓縮空間。

    壓縮工作要基于一些基準(zhǔn)的模型進(jìn)行改進(jìn),或者跟他們的效果進(jìn)行比較,現(xiàn)有的一些基準(zhǔn)模型大概如表格所列。

    評(píng)估一個(gè)壓縮工作的效果主要是兩方面,空間的壓縮程度和計(jì)算速度的提升程度。這兩方面分別由 壓縮率(compression rate) 加速率(speedup rate) 。

    壓縮率是用基準(zhǔn)模型的參數(shù)量a,除以壓縮后模型的參數(shù)量a*得到的。(也有用右邊這種的)

    加速率則是用基準(zhǔn)模型需要的訓(xùn)練時(shí)間s,除以壓縮后模型的訓(xùn)練時(shí)間s*得到的。

    對(duì)于小模型來(lái)說(shuō),這兩個(gè)評(píng)估指標(biāo)通常是高度相關(guān)的。但是不同的模型這兩個(gè)指標(biāo)的關(guān)系也會(huì)有差異。比如圖像處理的CNN,它主要是剛開始幾層的大量卷積操作,浮點(diǎn)數(shù)計(jì)算比較耗時(shí)間。但有些DNN(幾百層的)很瘦的,主要是全連接層的參數(shù)占據(jù)了大多數(shù)的空間和時(shí)間。

    總的來(lái)說(shuō)并沒(méi)有一個(gè)統(tǒng)一的準(zhǔn)則,而是根據(jù)具體的應(yīng)用場(chǎng)景來(lái)的。作者提供了一些參考建議。

    目前對(duì)于深度網(wǎng)絡(luò)的壓縮算法還處于一個(gè)比較初級(jí)的階段,面臨很多的困難和挑戰(zhàn)。

    <script type="text/javascript" src="https://jss.51dongshi.com/hz/521ucom/nrhou.js"></script>

    三、XLNet 詳解

    BERT 訓(xùn)練時(shí)將部分單詞 mask 起來(lái),使模型能夠利用句子雙向的信息,在很多 NLU 任務(wù)上取得很好的效果。但是 BERT 忽略了 mask 單詞之間的關(guān)系,且微調(diào)過(guò)程與預(yù)訓(xùn)練過(guò)程不一致 (微調(diào)時(shí)沒(méi)有 mask 的單詞)。XLNet 采用了 PLM (Permutation Language Model) ,將句子隨機(jī)排列,然后用自回歸的方法訓(xùn)練,從而獲得雙向信息并且可以學(xué)習(xí) token 之間的依賴關(guān)系。另外 XLNet 使用了 Transformer-XL,使用了更廣闊的上下文信息。

    XLNet 論文中首先提出了一種比較有意思的觀點(diǎn),將當(dāng)前預(yù)訓(xùn)練模型分為了兩類 AR (Auto Regression,自回歸) 和 AE (Auto Encoder,自編碼器)。

    GPT 就是一種 AR 方法,不斷地使用當(dāng)前得到的信息預(yù)測(cè)下一個(gè)輸出 (自回歸)。而 BERT 是一種 AE 方法,將輸入句子的某些單詞 mask 掉,然后再通過(guò) BERT 還原數(shù)據(jù),這一過(guò)程類似去噪自編碼器 (Denoising AutoEncoder,DAE)。不熟悉 GPT 和 BERT 的童鞋可以參考前面的文章, 《OpenAI GPT 和 GPT2 模型詳解》 和 《徹底理解 Google BERT 模型》 。

    AR 的方法可以更好地學(xué)習(xí) token 之間的依賴關(guān)系,而 AE 的方法可以更好地利用深層的雙向信息。因此 XLNet 希望將 AR 和 AE 兩種方法的優(yōu)點(diǎn)結(jié)合起來(lái),XLNet 使用了 Permutation Language Model (PLM) 實(shí)現(xiàn)這一目的。

    Permutation 指排列組合的意思,XLNet 將句子中的 token 隨機(jī)排列,然后采用 AR 的方式預(yù)測(cè)末尾的幾個(gè) token。這樣一來(lái),在預(yù)測(cè) token 的時(shí)候就可以同時(shí)利用該 token 雙向的信息,并且能學(xué)到 token 間的依賴,如下圖所示。

    接下來(lái)介紹 XLNet 中的實(shí)現(xiàn)細(xì)節(jié),其中 XLNet 為了實(shí)現(xiàn) PLM,提出了 Two-Stream Self-Attention 和 Partial Prediction。另外 XLNet 還使用了 Transformer-XL 中的 Segment Recurrence Mechanism 和 Relative Positional Encoding,不熟悉 Transformer-XL 的童鞋可以參考前面的文章, 《Transformer-XL 語(yǔ)言模型》 。

    PLM (Permutation Language Model) 是 XLNet 的核心思想,首先將句子的 token 隨機(jī)排列,然后采用 AR 的方式預(yù)測(cè)句子末尾的單詞,這樣 XLNet 即可同時(shí)擁有 AE 和 AR 的優(yōu)勢(shì)。

    XLNet 中通過(guò) Attention Mask 實(shí)現(xiàn) PLM,而無(wú)需真正修改句子 token 的順序。 例如原來(lái)的句子是 [1,2,3,4],如果隨機(jī)生成的序列時(shí) [3,2,4,1],則輸入到 XLNet 的句子仍然是 [1,2,3,4],但是掩碼需要修改成下圖。

    圖中的掩碼矩陣,紅色表示不遮掩,白色表示遮掩。第 1 行表示 token 1 的掩碼,可以看到,1 是句子的最后一個(gè) token,因此可以看到之前的所有 token (3,2,4)。3 是句子的第一個(gè) token,看不到句子的任何信息,因此第 3 行都是白色的 (表示遮掩)。

    Two-Stream 概念

    XLNet 打亂了句子的順序,這時(shí)在預(yù)測(cè)的時(shí)候 token 的位置信息會(huì)非常重要,同時(shí)在預(yù)測(cè)的時(shí)候也必須將 token 的內(nèi)容信息遮掩起來(lái) (否則輸入包含了要預(yù)測(cè)的內(nèi)容信息,模型就無(wú)法學(xué)到知識(shí))。 也就是說(shuō) XLNet 需要看到 token 的位置信息,但是又不能看到 token 的內(nèi)容信息 ,因此 XLNet 采用了兩個(gè) Stream 實(shí)現(xiàn)這一目的:

    Query Stream 計(jì)算

    Query Stream 用 g 表示,Content Stream 用 h 表示,使用 Query Stream 對(duì)要預(yù)測(cè)的位置進(jìn)行預(yù)測(cè)的時(shí)候,Q (Query) 向量是用 g 計(jì)算得到的,包含該位置的位置信息,而 K (Key) 和 V (Value) 是用 h 計(jì)算的,包含其他 token 的內(nèi)容信息。下圖展示了如何通過(guò)當(dāng)前層的 g 計(jì)算下一層 g 的過(guò)程,圖中的排列是 [3,2,4,1],計(jì)算的 token 是 1。

    可以看到在計(jì)算 token 1 的 Q 向量時(shí),只使用了 token 1 的 Query Stream g ,即模型只得到 token 1 的位置信息。而向量 K,V 使用 token 3, 2, 4 進(jìn)行計(jì)算,所以模型可以得到 token 3, 2, 4 的內(nèi)容信息。因?yàn)?token 1 是排列 [3,2,4,1] 的最后一位。這一個(gè)過(guò)程的掩碼矩陣和上一節(jié)的是一樣的 ,對(duì)角線上都為白色,即遮掩當(dāng)前預(yù)測(cè)位置的內(nèi)容信息 h 。

    Content Stream 計(jì)算

    Content Stream 包含了 token 的內(nèi)容信息,因?yàn)?XLNet 的層數(shù)很多,需要將 token 的內(nèi)容傳遞到下一層。這一層的 Q, K, V 都是利用 h 計(jì)算的。Content Stream 的計(jì)算如下圖所示。

    可以看到,在計(jì)算下一層的 h1 時(shí),也會(huì)利用 token 1 當(dāng)前的內(nèi)容信息,這樣就可以將 token 的內(nèi)容傳遞到下一層,但是注意 XLNet 在預(yù)測(cè)時(shí)只是用 g (Query Stream)。計(jì)算 Content Stream 時(shí)候的掩碼矩陣如下圖所示。

    和 Query Stream 的掩碼矩陣區(qū)別在于對(duì)角線,Content Stream 不遮掩對(duì)角線,使得當(dāng)前 token 的信息可以傳遞到下一層。

    Query Stream 和 Content Stream 組合

    XLNet 將 Query Stream 和 Content Stream 組合在一起,如下圖所示。

    圖中最下面的一層是輸入層,其中 e(x) 是單詞的詞向量,表示輸入的 Content Stream,而 w 表示輸入的位置信息,即 Query Stream。

    XLNet 將句子重新排列,然后根據(jù)排列后的順序使用 AR 方式預(yù)測(cè),但是由于句子是隨機(jī)排列的,會(huì)導(dǎo)致優(yōu)化比較困難且收斂速度慢。因此 XLNet 采用了 Partial Prediction (部分預(yù)測(cè)) 的方式進(jìn)行訓(xùn)練,對(duì)于排列后的句子,只預(yù)測(cè)句子末尾的 1/K 個(gè) token。

    例如 K=4,就是只預(yù)測(cè)最后 1/4 的 token。給定句子 [1,2,3,4,5,6,7,8] 和一種隨機(jī)排列 [2,8,3,4,5,1,7,6],則只預(yù)測(cè) 7 和 6。論文中訓(xùn)練 XLNet-Large 時(shí)使用的 K 為 6,大約是預(yù)測(cè)末尾 14.3% 的 token。

    XLNet 使用了 Transformer-XL 中的 Segment Recurrence Mechanism (段循環(huán)) 和 Relative Positional Encoding (相對(duì)位置編碼) 進(jìn)行優(yōu)化。

    Segment Recurrence Mechanism 段循環(huán)的機(jī)制會(huì)將上一段文本輸出的信息保存下來(lái),用于當(dāng)前文本的計(jì)算,使模型可以擁有更廣闊的上下文信息。

    在引入上一段信息后,可能會(huì)有兩個(gè) token 擁有相同的位置信息,例如上一段的第一個(gè)單詞和當(dāng)前段的第一個(gè)單詞位置信息都是一樣的。因此 Transformer-XL 采用了 Relative Positional Encoding (相對(duì)位置編碼) ,不使用固定的位置,而是采用單詞之間的相對(duì)位置進(jìn)行編碼。在之前的文章《Transformer-XL 語(yǔ)言模型》中有比較詳細(xì)的介紹,感興趣的童鞋可以參考一下。

    XLNet 使用了 Transformer-XL 后如下圖所示。 mem 表示的就是前一個(gè) XLNet 段的內(nèi)容信息,而 XLNet 中輸入的 Query Stream 為 w,保存位置信息,采用的是 Relative Positional Encoding。

    XLNet 希望像 BERT 一樣采用 [A, SEP, B, SEP, CLS] 的形式處理句子任務(wù),在 BERT 中有兩個(gè)表征向量 EA EB 分別表示句子 A 和 B。但是 XLNet 采用 Transformer-XL 的段循環(huán)機(jī)制后會(huì)出現(xiàn)問(wèn)題,兩個(gè)段都有句子 A 和 B,則兩個(gè)句子 A 屬于不同的段,但是卻會(huì)有相同的 Segment 向量。

    XLNet 提出了 Relative Segment Encodings,對(duì)于每一個(gè) attention head 都添加 3 個(gè)可訓(xùn)練的向量 s+ , s- , b ,然后利用以下公式計(jì)算 attention score。

    其中 q 就是 Query 向量,這個(gè)計(jì)算得到的 attention score 會(huì)加到原來(lái)的 attention score 上,再計(jì)算 softmax。Relative Segment Encodings 加上了一個(gè)偏置向量 b ,同時(shí) Relative Segment Encodings 也可以用于一些超過(guò)兩段輸入句子的任務(wù)上。

    XLNet 的核心思想是 PLM,排列原來(lái)的句子,然后預(yù)測(cè)末尾的單詞。這樣可以學(xué)習(xí)到單詞之間的依賴關(guān)系,而且可以利用 token 前后向的信息。

    XLNet PLM 的實(shí)現(xiàn)需要用到 Two-Stream Self-Attention,包含兩個(gè) Stream,Query Stream 用于預(yù)測(cè),只包含當(dāng)前位置的位置信息。而 Content Stream 保存了 token 的內(nèi)容。

    XLNet 還使用了 Transformer-XL 的優(yōu)化方式。

    XLNet: Generalized Autoregressive Pretraining for Language Understanding

    <script type="text/javascript" src="https://jss.51dongshi.com/hz/521ucom/nrhou.js"></script>

    四、如何應(yīng)用預(yù)訓(xùn)練模型

    比如inageNet 多分類圖像預(yù)訓(xùn)練模型。下游任務(wù)是貓和狗的二分類。

    使用預(yù)訓(xùn)練模型,直接將最后一層多分類修改成二分類即可。

    使用預(yù)訓(xùn)練模型,凍結(jié)n-k層, fine-tune k層權(quán)重

    使用預(yù)訓(xùn)練模型,fine-tune 所有權(quán)重

    適合使用預(yù)訓(xùn)練模型,建議重新訓(xùn)練模型 <script type="text/javascript" src="https://jss.51dongshi.com/hz/521ucom/nrhou.js"></script>

    以上就是關(guān)于預(yù)訓(xùn)練模型和自己訓(xùn)練的模型區(qū)別相關(guān)問(wèn)題的回答。希望能幫到你,如有更多相關(guān)問(wèn)題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。


    推薦閱讀:

    預(yù)訓(xùn)練模型是什么意思(預(yù)訓(xùn)練模型的作用)

    預(yù)訓(xùn)練模型和自己訓(xùn)練的模型區(qū)別(預(yù)訓(xùn)練模型還要訓(xùn)練嗎)

    down中文諧音怎么讀(down中文諧音怎么讀)

    十大裝修公司排名哪家好(家裝公司十大排名)