溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

數(shù)據(jù)不足時(shí)該怎么做深度學(xué)習(xí)NLP

發(fā)布時(shí)間:2021-12-21 15:36:13 來(lái)源:億速云 閱讀:260 作者:柒染 欄目:云計(jì)算

數(shù)據(jù)不足時(shí)該怎么做深度學(xué)習(xí)NLP,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

作為數(shù)據(jù)科學(xué)家,你最重要的技能之一應(yīng)該是為你的問(wèn)題選擇正確的建模技術(shù)和算法。幾個(gè)月前,我試圖解決文本分類問(wèn)題,即分類哪些新聞文章與我的客戶相關(guān)。

我只有幾千個(gè)標(biāo)記的例子,所以我開(kāi)始使用簡(jiǎn)單的經(jīng)典機(jī)器學(xué)習(xí)建模方法,如TF-IDF上的Logistic回歸,但這個(gè)模型通常適用于長(zhǎng)文檔的文本分類。

在發(fā)現(xiàn)了我的模型錯(cuò)誤之后,我發(fā)現(xiàn)僅僅是理解詞對(duì)于這個(gè)任務(wù)是不夠的,我需要一個(gè)模型,它將使用對(duì)文檔的更深層次的語(yǔ)義理解。

深度學(xué)習(xí)模型在復(fù)雜任務(wù)上有非常好的表現(xiàn),這些任務(wù)通常需要深入理解翻譯、問(wèn)答、摘要、自然語(yǔ)言推理等文本。所以這似乎是一種很好的方法,但深度學(xué)習(xí)通常需要數(shù)十萬(wàn)甚至數(shù)百萬(wàn)的訓(xùn)練標(biāo)記的數(shù)據(jù)點(diǎn),幾千的數(shù)據(jù)量顯然是不夠的。

通常,大數(shù)據(jù)集進(jìn)行深度學(xué)習(xí)以避免過(guò)度擬合。深度神經(jīng)網(wǎng)絡(luò)具有許多參數(shù),因此通常如果它們沒(méi)有足夠的數(shù)據(jù),它們往往會(huì)記住訓(xùn)練集并且在測(cè)試集上表現(xiàn)不佳。為了避免沒(méi)有大數(shù)據(jù)出現(xiàn)這種現(xiàn)象,我們需要使用特殊技術(shù)。

則化

正則化方法是在機(jī)器學(xué)習(xí)模型內(nèi)部以不同方式使用的方法,以避免過(guò)度擬合,這個(gè)方法具有強(qiáng)大的理論背景并且可以以通用的方式解決大多數(shù)問(wèn)題。

L1和L2正則化

這個(gè)方法可能是最古老的,它在許多機(jī)器學(xué)習(xí)模型中使用多年。在這個(gè)方法中,我們將權(quán)重大小添加到我們?cè)噲D最小化的模型的損失函數(shù)中。這樣,模型將嘗試使權(quán)重變小,并且對(duì)模型沒(méi)有幫助的權(quán)重將顯著減小到零,并且不會(huì)影響模型。這樣,我們可以使用更少數(shù)量的權(quán)重來(lái)模擬訓(xùn)練集。有關(guān)更多說(shuō)明,你可以閱讀這篇文章。

數(shù)據(jù)不足時(shí)該怎么做深度學(xué)習(xí)NLPcdn.com/c0f84195cb47896e0350f775db6ca0e99ef29466.png">

Dropout

Dropout是另一種較新的正則化方法,訓(xùn)練期間神經(jīng)網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)(神經(jīng)元)都將被丟棄(權(quán)重將被設(shè)置為零),這種方式下,網(wǎng)絡(luò)不能依賴于特定的神經(jīng)元或神經(jīng)元的相互作用,必須學(xué)習(xí)網(wǎng)絡(luò)不同部分的每個(gè)模式。這使得模型專注于推廣到新數(shù)據(jù)的重要模式。

提早停止

提早停止是一種簡(jiǎn)單的正則化方法,只需監(jiān)控驗(yàn)證集性能,如果你發(fā)現(xiàn)驗(yàn)證性能不斷提高,請(qǐng)停止訓(xùn)練。這種方法在沒(méi)有大數(shù)據(jù)的情況下非常重要,因?yàn)槟P屯?-10個(gè)時(shí)期之后甚至更早的時(shí)候開(kāi)始過(guò)度擬合。

數(shù)據(jù)不足時(shí)該怎么做深度學(xué)習(xí)NLP

參數(shù)數(shù)量少

如果你沒(méi)有大型數(shù)據(jù)集,則應(yīng)該非常小心設(shè)置每層中的參數(shù)和神經(jīng)元數(shù)量。此外,像卷積層這樣的特殊圖層比完全連接的圖層具有更少的參數(shù),因此在它們適合你的問(wèn)題時(shí)使用它們非常有用。

數(shù)據(jù)增強(qiáng)

數(shù)據(jù)增強(qiáng)是一種通過(guò)以標(biāo)簽不變的方式更改訓(xùn)練數(shù)據(jù)來(lái)創(chuàng)建更多訓(xùn)練數(shù)據(jù)的方法。在計(jì)算機(jī)視覺(jué)中,許多圖像變換用于增強(qiáng)數(shù)據(jù)集,如翻轉(zhuǎn)、裁剪、縮放、旋轉(zhuǎn)等。

數(shù)據(jù)不足時(shí)該怎么做深度學(xué)習(xí)NLP

這些轉(zhuǎn)換對(duì)于圖像數(shù)據(jù)很有用,但不適用于文本,例如翻轉(zhuǎn)像“狗愛(ài)我”這樣的句子不是一個(gè)有效的句子,使用它會(huì)使模型學(xué)習(xí)垃圾。以下是一些文本數(shù)據(jù)增強(qiáng)方法:

同義詞替換

在這種方法中,我們用他們的同義詞替換我們文本中的隨機(jī)單詞,例如,我們將句子“我非常喜歡這部電影”更改為“我非常愛(ài)這部電影”,它仍具有相同的含義,可能相同標(biāo)簽。這種方法對(duì)我來(lái)說(shuō)不起作用,因?yàn)橥x詞具有非常相似的單詞向量,因此模型將兩個(gè)句子看作幾乎相同的句子而不是擴(kuò)充。

方向翻譯

在這種方法中,我們采用我們的文本,將其翻譯成具有機(jī)器翻譯的中間語(yǔ)言,然后將其翻譯成其他語(yǔ)言。該方法在Kaggle毒性評(píng)論挑戰(zhàn)中成功使用。例如,如果我們將“我非常喜歡這部電影”翻譯成俄語(yǔ),我們會(huì)得到“Мнеоченьнравитсяэтотфильм”,當(dāng)我們翻譯成英文時(shí),我們得到“I really like this movie”。反向翻譯方法為我們提供了同義詞替換,就像第一種方法一樣,但它也可以添加或刪除單詞并解釋句子,同時(shí)保留相同的含義。

文件裁剪

新聞文章很長(zhǎng),在查看數(shù)據(jù)時(shí),有時(shí)不需要所有文章來(lái)分類文檔。這讓我想到將文章裁剪為幾個(gè)子文檔作為數(shù)據(jù)擴(kuò)充,這樣我將獲得更多的數(shù)據(jù)。首先,我嘗試從文檔中抽取幾個(gè)句子并創(chuàng)建10個(gè)新文檔。這就創(chuàng)建了沒(méi)有句子之間邏輯關(guān)系的文檔,但我得到了一個(gè)糟糕的分類器。我的第二次嘗試是將每篇文章分成5個(gè)連續(xù)句子。這種方法運(yùn)行得非常好,給了我很好的性能提升。

生成對(duì)抗性網(wǎng)絡(luò)

GAN是數(shù)據(jù)科學(xué)中最令人興奮的最新進(jìn)展之一,它們通常用作圖像創(chuàng)建的生成模型。這篇博客文章解釋了如何使用GAN進(jìn)行圖像數(shù)據(jù)的數(shù)據(jù)增強(qiáng),但它也可能用于文本。

遷移學(xué)習(xí)

遷移學(xué)習(xí)是指使用來(lái)自網(wǎng)絡(luò)的權(quán)重,這些網(wǎng)絡(luò)是針對(duì)你的問(wèn)題通過(guò)另一個(gè)問(wèn)題(通常是大數(shù)據(jù)集)進(jìn)行訓(xùn)練的。遷移學(xué)習(xí)有時(shí)被用作某些層的權(quán)重初始化,有時(shí)也被用作我們不再訓(xùn)練的特征提取器。在計(jì)算機(jī)視覺(jué)中,從預(yù)先訓(xùn)練的Imagenet模型開(kāi)始是解決問(wèn)題的一種非常常見(jiàn)的做法,但是NLP沒(méi)有像Imagenet那樣可以用于遷移學(xué)習(xí)的非常大的數(shù)據(jù)集。

數(shù)據(jù)不足時(shí)該怎么做深度學(xué)習(xí)NLP

預(yù)先訓(xùn)練的詞向量

NLP深度學(xué)習(xí)架構(gòu)通常以嵌入層開(kāi)始,該嵌入層將一個(gè)熱編碼字轉(zhuǎn)換為數(shù)字矢量表示。我們可以從頭開(kāi)始訓(xùn)練嵌入層,但我們也可以使用預(yù)訓(xùn)練的單詞向量,如Word2Vec,F(xiàn)astText或Glove,這些詞向量使用無(wú)監(jiān)督學(xué)習(xí)方法訓(xùn)練大量數(shù)據(jù)或訓(xùn)練我們域中的數(shù)據(jù)。預(yù)訓(xùn)練的詞向量非常有效,因?yàn)樗鼈優(yōu)榛诖罅繑?shù)據(jù)的單詞提供模型上下文,并減少模型的參數(shù)數(shù)量,從而顯著降低過(guò)度擬合的可能性。你可以在此處閱讀有關(guān)詞嵌入的更多信息。

數(shù)據(jù)不足時(shí)該怎么做深度學(xué)習(xí)NLP

預(yù)先訓(xùn)練的句子向量

我們可以將模型的輸入從單詞更改為句子,這樣我們可以使用較少的模型,其中參數(shù)數(shù)量較少,仍然具有足夠的表達(dá)能力。為了做到這一點(diǎn),我們可以使用預(yù)先訓(xùn)練好的句子編碼器,如Facebook的InferSent或谷歌的通用句子編碼器。我們還可以使用跳過(guò)思維向量或語(yǔ)言模型等方法訓(xùn)練未標(biāo)記數(shù)據(jù)的句子編碼器。你可以從我之前的博文中了解有關(guān)無(wú)監(jiān)督句子向量的更多信息。

預(yù)先訓(xùn)練的語(yǔ)言模型

最近的論文如ULMFIT、Open-AI變換器和BERT通過(guò)在非常大的語(yǔ)料庫(kù)中預(yù)訓(xùn)練語(yǔ)言模型,為許多NLP任務(wù)獲得了驚人的結(jié)果。語(yǔ)言模型是使用前面的單詞預(yù)測(cè)句子中的下一個(gè)單詞的任務(wù)。對(duì)我來(lái)說(shuō),這種預(yù)訓(xùn)練并沒(méi)有真正幫助獲得更好的結(jié)果,但文章已經(jīng)展示了一些方法來(lái)幫助我更好地微調(diào),我還沒(méi)有嘗試過(guò)。這是一個(gè)關(guān)于預(yù)訓(xùn)練語(yǔ)言模型的好博客。

無(wú)人監(jiān)督或自我監(jiān)督學(xué)習(xí)的預(yù)訓(xùn)練

如果我們有一個(gè)來(lái)自未標(biāo)記數(shù)據(jù)的大型數(shù)據(jù)集,我們可以使用無(wú)監(jiān)督的方法,如自動(dòng)編碼器或掩碼語(yǔ)言模型,僅使用文本本身預(yù)訓(xùn)我們的模型。對(duì)我來(lái)說(shuō)更好的另一個(gè)選擇是使用自我監(jiān)督。自我監(jiān)督模型是在沒(méi)有人類注釋的情況下自動(dòng)提取標(biāo)簽的模型。一個(gè)很好的例子是Deepmoji項(xiàng)目,在Deepmoji中,作者訓(xùn)練了一個(gè)模型,用于從推文中預(yù)測(cè)表情符號(hào),在表情符號(hào)預(yù)測(cè)中獲得良好結(jié)果之后,他們使用他們的網(wǎng)絡(luò)預(yù)先訓(xùn)練了一個(gè)獲得最新結(jié)果的高音揚(yáng)聲器情緒分析模型。表情符號(hào)預(yù)測(cè)和情緒分析顯然非常相關(guān),因此它作為預(yù)訓(xùn)練任務(wù)表現(xiàn)得非常好。新聞數(shù)據(jù)的自我監(jiān)督任務(wù)可以預(yù)測(cè)標(biāo)題、報(bào)紙、評(píng)論數(shù)量、轉(zhuǎn)推的數(shù)量等等。自我監(jiān)督可以是一種非常好的預(yù)訓(xùn)方法,但通常很難分辨出哪個(gè)代理標(biāo)簽將與你的真實(shí)標(biāo)簽相關(guān)聯(lián)。

特征工程

我知道深度學(xué)習(xí)“殺死”了特征工程,這樣做有點(diǎn)過(guò)時(shí)了。但是,當(dāng)你沒(méi)有大數(shù)據(jù)集時(shí),讓網(wǎng)絡(luò)通過(guò)特征工程學(xué)習(xí)復(fù)雜模式可以大大提高性能。例如,在我對(duì)新聞文章的分類中,作者、報(bào)紙、評(píng)論、標(biāo)簽和更多功能的數(shù)量可以幫助預(yù)測(cè)我們的標(biāo)簽。

多模式架構(gòu)

我們可以使用多模式架構(gòu)將文檔級(jí)特征組合到我們的模型中。在multimodal中,我們構(gòu)建了兩個(gè)不同的網(wǎng)絡(luò),一個(gè)用于文本、一個(gè)用于特征,合并它們的輸出層并添加更多層。這些模型很難訓(xùn)練,因?yàn)檫@些特征通常比文本具有更強(qiáng)的信號(hào),因此網(wǎng)絡(luò)主要學(xué)習(xí)特征效果。這是關(guān)于多模式網(wǎng)絡(luò)的偉大的Keras教程。這種方法使我的性能表現(xiàn)提高了不到1%。

數(shù)據(jù)不足時(shí)該怎么做深度學(xué)習(xí)NLP

字級(jí)(word level)特征

另一種類型的特征工程是詞級(jí)特征,如詞性標(biāo)注、語(yǔ)義角色標(biāo)記、實(shí)體提取等。我們可以將一個(gè)熱編碼表示或詞級(jí)特征的嵌入與詞的嵌入相結(jié)合,并將其用作模型的輸入。我們也可以在這個(gè)方法中使用其他單詞特征,例如在情感分析任務(wù)中我們可以采用情感字典并為嵌入添加另一個(gè)維度,其中1表示我們?cè)谧值渲械膯卧~,0表示其他單詞,這樣模型可以很容易地學(xué)習(xí)它需要關(guān)注的一些詞。在我的任務(wù)中,我添加了某些重要實(shí)體的維度,這給了我一個(gè)很好的性能提升。

預(yù)處理作為特征工程

最后一種特征工程方法是以一種模型更容易學(xué)習(xí)的方式預(yù)處理輸入文本。一個(gè)例子是特殊的“阻止”,如果體育對(duì)我們的標(biāo)簽不重要,我們可以改變足球,棒球和網(wǎng)球這個(gè)詞運(yùn)動(dòng),這將有助于網(wǎng)絡(luò)了解體育之間的差異并不重要,可以減少數(shù)量網(wǎng)絡(luò)中的參數(shù)。另一個(gè)例子是使用自動(dòng)摘要,正如我之前所說(shuō)的,神經(jīng)網(wǎng)絡(luò)在長(zhǎng)文本上表現(xiàn)不佳,因此我們可以在文本上運(yùn)行自動(dòng)匯總算法,如“文本排名”,并僅向網(wǎng)絡(luò)提供重要句子。

看完上述內(nèi)容,你們掌握數(shù)據(jù)不足時(shí)該怎么做深度學(xué)習(xí)NLP的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

nlp
AI