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

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

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

PyTorch教程-15.2. 近似訓(xùn)練

jf_pJlTbmA9 ? 來源:PyTorch ? 作者:PyTorch ? 2023-06-05 15:44 ? 次閱讀

回憶一下我們?cè)?5.1 節(jié)中的討論。skip-gram模型的主要思想是使用softmax操作來計(jì)算生成上下文詞的條件概率wo基于給定的中心詞wc在(15.1.4)中,其對(duì)應(yīng)的對(duì)數(shù)損失由(15.1.7)的相反數(shù)給出 。

由于 softmax 操作的性質(zhì),因?yàn)樯舷挛脑~可能是字典中的任何人V, (15.1.7)的反面 包含與詞匯表的整個(gè)大小一樣多的項(xiàng)目總和。因此, (15.1.8)中 skip-gram 模型的梯度計(jì)算和(15.1.15)中連續(xù)詞袋模型的 梯度計(jì)算都包含求和。不幸的是,這種在大型詞典(通常有數(shù)十萬或數(shù)百萬個(gè)單詞)上求和的梯度的計(jì)算成本是巨大的!

為了降低上述計(jì)算復(fù)雜度,本節(jié)將介紹兩種近似訓(xùn)練方法:負(fù)采樣和分層softmax。由于skip-gram模型與連續(xù)詞袋模型的相似性,我們將僅以skip-gram模型為例來描述這兩種近似訓(xùn)練方法。

15.2.1。負(fù)采樣

負(fù)采樣修改了原來的目標(biāo)函數(shù)。給定中心詞的上下文窗口wc,任何(上下文)詞的事實(shí)wo來自這個(gè)上下文窗口被認(rèn)為是一個(gè)事件,其概率建模為

(15.2.1)P(D=1∣wc,wo)=σ(uo?vc),

在哪里σ使用 sigmoid 激活函數(shù)的定義:

(15.2.2)σ(x)=11+exp?(?x).

讓我們首先最大化文本序列中所有此類事件的聯(lián)合概率來訓(xùn)練詞嵌入。具體來說,給定長(zhǎng)度的文本序列T, 表示為w(t)時(shí)間步長(zhǎng)的單詞t并讓上下文窗口大小為m, 考慮最大化聯(lián)合概率

(15.2.3)∏t=1T∏?m≤j≤m,j≠0P(D=1∣w(t),w(t+j)).

然而,(15.2.3)只考慮那些涉及正例的事件。因此, 只有當(dāng)所有詞向量都等于無窮大時(shí),(15.2.3)中的聯(lián)合概率才最大化為 1。當(dāng)然,這樣的結(jié)果是沒有意義的。為了使目標(biāo)函數(shù)更有意義,負(fù)采樣添加了從預(yù)定義分布中采樣的負(fù)樣本。

表示為S上下文詞的事件wo來自中心詞的上下文窗口wc. 對(duì)于此次涉及的事件wo,來自預(yù)定義的分布P(w) 樣本K 不是來自這個(gè)上下文窗口的噪聲詞。表示為Nk干擾詞的事件wk (k=1,…,K) 不是來自上下文窗口 wc. 假設(shè)這些事件同時(shí)涉及正例和反例S,N1,…,NK是相互獨(dú)立的。負(fù)采樣將(15.2.3)中的聯(lián)合概率(僅涉及正例)重寫為

(15.2.4)∏t=1T∏?m≤j≤m,j≠0P(w(t+j)∣w(t)),

其中條件概率是通過事件來近似的 S,N1,…,NK:

(15.2.5)P(w(t+j)∣w(t))=P(D=1∣w(t),w(t+j))∏k=1,wk~P(w)KP(D=0∣w(t),wk).

表示為it和hk一個(gè)詞的索引 w(t)在時(shí)間步t文本序列和噪聲詞wk, 分別。關(guān)于 (15.2.5)中條件概率的對(duì)數(shù)損失是

(15.2.6)?log?P(w(t+j)∣w(t))=?log?P(D=1∣w(t),w(t+j))?∑k=1,wk~P(w)Klog?P(D=0∣w(t),wk)=?logσ(uit+j?vit)?∑k=1,wk~P(w)Klog?(1?σ(uhk?vit))=?logσ(uit+j?vit)?∑k=1,wk~P(w)Klog?σ(?uhk?vit).

我們可以看到現(xiàn)在每個(gè)訓(xùn)練步驟的梯度計(jì)算成本與字典大小無關(guān),而是線性取決于K. 設(shè)置超參數(shù)時(shí)K對(duì)于較小的值,負(fù)采樣的每個(gè)訓(xùn)練步驟的梯度計(jì)算成本較小。

15.2.2。分層 Softmax

作為一種替代的近似訓(xùn)練方法,hierarchical softmax 使用二叉樹,一種 如圖 15.2.1所示的數(shù)據(jù)結(jié)構(gòu),其中樹的每個(gè)葉節(jié)點(diǎn)代表字典中的一個(gè)詞V.

poYBAGR9PFyAQIa3AACXN8iJ_1k913.svg

圖 15.2.1用于近似訓(xùn)練的分層 softmax,其中樹的每個(gè)葉節(jié)點(diǎn)代表字典中的一個(gè)詞。

表示為L(zhǎng)(w)從根節(jié)點(diǎn)到表示單詞的葉節(jié)點(diǎn)的路徑上的節(jié)點(diǎn)數(shù)(包括兩端)w在二叉樹中。讓n(w,j)成為jth該路徑上的節(jié)點(diǎn),其上下文詞向量為 un(w,j). 例如,L(w3)=4在 圖 15.2.1中。分層 softmax 將(15.1.4)中的條件概率近似為

(15.2.7)P(wo∣wc)=∏j=1L(wo)?1σ([[n(wo,j+1)=leftChild(n(wo,j))]]?un(wo,j)?vc),

哪里的功能σ在(15.2.2)中定義,并且 leftChild(n)是節(jié)點(diǎn)的左子節(jié)點(diǎn)n: 如果 x是真的,[[x]]=1; 否則 [[x]]=?1.

為了說明,讓我們計(jì)算生成單詞的條件概率w3給定的詞wc在圖 15.2.1中。這需要詞向量之間的點(diǎn)積vc 的wc以及從根到路徑(圖15.2.1中粗體路徑)上的非葉節(jié)點(diǎn)向量w3,向左、向右、然后向左遍歷:

(15.2.8)P(w3∣wc)=σ(un(w3,1)?vc)?σ(?un(w3,2)?vc)?σ(un(w3,3)?vc).

自從σ(x)+σ(?x)=1,它認(rèn)為生成字典中所有單詞的條件概率 V基于任何詞wc總結(jié)為一個(gè):

(15.2.9)∑w∈VP(w∣wc)=1.

幸運(yùn)的是,因?yàn)長(zhǎng)(wo)?1順序是 O(log2|V|)由于二叉樹結(jié)構(gòu),當(dāng)字典大小時(shí)V是巨大的,與不使用近似訓(xùn)練相比,使用分層 softmax 的每個(gè)訓(xùn)練步驟的計(jì)算成本顯著降低。

15.2.3。概括

負(fù)采樣通過考慮涉及正例和負(fù)例的相互獨(dú)立的事件來構(gòu)建損失函數(shù)。訓(xùn)練的計(jì)算成本線性依賴于每一步的噪聲詞數(shù)量。

Hierarchical softmax利用二叉樹中從根節(jié)點(diǎn)到葉節(jié)點(diǎn)的路徑構(gòu)造損失函數(shù)。訓(xùn)練的計(jì)算成本取決于每一步字典大小的對(duì)數(shù)。

15.2.4。練習(xí)

我們?nèi)绾卧谪?fù)采樣中對(duì)噪聲詞進(jìn)行采樣?

驗(yàn)證(15.2.9)成立。

如何分別使用負(fù)采樣和分層 softmax 來訓(xùn)練連續(xù)詞袋模型?

Discussions

聲明:本文內(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)投訴
  • pytorch
    +關(guān)注

    關(guān)注

    2

    文章

    794

    瀏覽量

    13010
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    請(qǐng)問電腦端Pytorch訓(xùn)練的模型如何轉(zhuǎn)化為能在ESP32S3平臺(tái)運(yùn)行的模型?

    由題目, 電腦端Pytorch訓(xùn)練的模型如何轉(zhuǎn)化為能在ESP32S3平臺(tái)運(yùn)行的模型? 如何把這個(gè)Pytorch模型燒錄到ESP32S3上去?
    發(fā)表于 06-27 06:06

    Pytorch模型訓(xùn)練實(shí)用PDF教程【中文】

    ?模型部分?還是優(yōu)化器?只有這樣不斷的通過可視化診斷你的模型,不斷的對(duì)癥下藥,才能訓(xùn)練出一個(gè)較滿意的模型。本教程內(nèi)容及結(jié)構(gòu):本教程內(nèi)容主要為在 PyTorch訓(xùn)練一個(gè)模型所可能涉及到的方法及函數(shù),并且
    發(fā)表于 12-21 09:18

    PyTorch10的基礎(chǔ)教程

    PyTorch 10 基礎(chǔ)教程(4):訓(xùn)練分類器
    發(fā)表于 06-05 17:42

    怎樣使用PyTorch Hub去加載YOLOv5模型

    PyTorch Hub 加載預(yù)訓(xùn)練的 YOLOv5s 模型,model并傳遞圖像進(jìn)行推理。'yolov5s'是最輕最快的 YOLOv5 型號(hào)。有關(guān)所有可用模型的詳細(xì)信息,請(qǐng)參閱自述文件。詳細(xì)示例此示例
    發(fā)表于 07-22 16:02

    PyTorch 1.6即將原生支持自動(dòng)混合精度訓(xùn)練

    即將在 PyTorch 1.6上發(fā)布的 torch.cuda.amp 混合精度訓(xùn)練模塊實(shí)現(xiàn)了它的承諾,只需增加幾行新代碼就可以提高大型模型訓(xùn)練50-60% 的速度。
    的頭像 發(fā)表于 07-14 16:06 ?3083次閱讀
    <b class='flag-5'>PyTorch</b> 1.6即將原生支持自動(dòng)混合精度<b class='flag-5'>訓(xùn)練</b>

    pytorch實(shí)現(xiàn)斷電繼續(xù)訓(xùn)練時(shí)需要注意的要點(diǎn)

    本文整理了pytorch實(shí)現(xiàn)斷電繼續(xù)訓(xùn)練時(shí)需要注意的要點(diǎn),附有代碼詳解。
    的頭像 發(fā)表于 08-22 09:50 ?1302次閱讀

    PyTorch教程11.9之使用Transformer進(jìn)行大規(guī)模預(yù)訓(xùn)練

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程11.9之使用Transformer進(jìn)行大規(guī)模預(yù)訓(xùn)練.pdf》資料免費(fèi)下載
    發(fā)表于 06-05 15:07 ?0次下載
    <b class='flag-5'>PyTorch</b>教程11.9之使用Transformer進(jìn)行大規(guī)模預(yù)<b class='flag-5'>訓(xùn)練</b>

    PyTorch教程13.5之在多個(gè)GPU上進(jìn)行訓(xùn)練

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程13.5之在多個(gè)GPU上進(jìn)行訓(xùn)練.pdf》資料免費(fèi)下載
    發(fā)表于 06-05 14:18 ?0次下載
    <b class='flag-5'>PyTorch</b>教程13.5之在多個(gè)GPU上進(jìn)行<b class='flag-5'>訓(xùn)練</b>

    PyTorch教程之15.2近似訓(xùn)練

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程之15.2近似訓(xùn)練.pdf》資料免費(fèi)下載
    發(fā)表于 06-05 11:07 ?1次下載
    <b class='flag-5'>PyTorch</b>教程之<b class='flag-5'>15.2</b><b class='flag-5'>近似</b><b class='flag-5'>訓(xùn)練</b>

    PyTorch教程15.4之預(yù)訓(xùn)練word2vec

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程15.4之預(yù)訓(xùn)練word2vec.pdf》資料免費(fèi)下載
    發(fā)表于 06-05 10:58 ?0次下載
    <b class='flag-5'>PyTorch</b>教程15.4之預(yù)<b class='flag-5'>訓(xùn)練</b>word2vec

    PyTorch教程15.9之預(yù)訓(xùn)練BERT的數(shù)據(jù)集

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程15.9之預(yù)訓(xùn)練BERT的數(shù)據(jù)集.pdf》資料免費(fèi)下載
    發(fā)表于 06-05 11:06 ?0次下載
    <b class='flag-5'>PyTorch</b>教程15.9之預(yù)<b class='flag-5'>訓(xùn)練</b>BERT的數(shù)據(jù)集

    PyTorch教程15.10之預(yù)訓(xùn)練BERT

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程15.10之預(yù)訓(xùn)練BERT.pdf》資料免費(fèi)下載
    發(fā)表于 06-05 10:53 ?0次下載
    <b class='flag-5'>PyTorch</b>教程15.10之預(yù)<b class='flag-5'>訓(xùn)練</b>BERT

    PyTorch如何訓(xùn)練自己的數(shù)據(jù)集

    PyTorch是一個(gè)廣泛使用的深度學(xué)習(xí)框架,它以其靈活性、易用性和強(qiáng)大的動(dòng)態(tài)圖特性而聞名。在訓(xùn)練深度學(xué)習(xí)模型時(shí),數(shù)據(jù)集是不可或缺的組成部分。然而,很多時(shí)候,我們可能需要使用自己的數(shù)據(jù)集而不是現(xiàn)成
    的頭像 發(fā)表于 07-02 14:09 ?541次閱讀

    解讀PyTorch模型訓(xùn)練過程

    PyTorch作為一個(gè)開源的機(jī)器學(xué)習(xí)庫(kù),以其動(dòng)態(tài)計(jì)算圖、易于使用的API和強(qiáng)大的靈活性,在深度學(xué)習(xí)領(lǐng)域得到了廣泛的應(yīng)用。本文將深入解讀PyTorch模型訓(xùn)練的全過程,包括數(shù)據(jù)準(zhǔn)備、模型構(gòu)建、訓(xùn)
    的頭像 發(fā)表于 07-03 16:07 ?543次閱讀

    pytorch如何訓(xùn)練自己的數(shù)據(jù)

    本文將詳細(xì)介紹如何使用PyTorch框架來訓(xùn)練自己的數(shù)據(jù)。我們將從數(shù)據(jù)準(zhǔn)備、模型構(gòu)建、訓(xùn)練過程、評(píng)估和測(cè)試等方面進(jìn)行講解。 環(huán)境搭建 首先,我們需要安裝PyTorch。可以通過訪問
    的頭像 發(fā)表于 07-11 10:04 ?271次閱讀