0
本文作者: AI研習(xí)社-譯站 | 2019-08-07 11:24 |
機(jī)器學(xué)習(xí)領(lǐng)域一個最令人著迷的任務(wù),就是訓(xùn)練機(jī)器理解人類交流能力的進(jìn)步。在機(jī)器學(xué)習(xí)領(lǐng)域,這一分支被稱為自然語言處理(Natural Language Processing)。
在我們深入研究之前,有必要了解一些基礎(chǔ)知識。
語言是什么?
計算機(jī)要處理任何概念,都必須以一種數(shù)學(xué)模型的形式表達(dá)這些概念。
自然語言處理,或簡稱為NLP,被廣泛地定義為通過軟件對自然語言(如語音和文本)的自動操作。
由于詞干提取是基于一組規(guī)則發(fā)生的,因此詞干返回的詞根可能并不總是英語單詞。 另一方面,詞形還原可以適當(dāng)?shù)販p少變形詞,確保詞根屬于英語。
將一門自然語言分解成n-gram是保持句子中出現(xiàn)的單詞數(shù)量的關(guān)鍵,而句子是自然語言處理中使用的傳統(tǒng)數(shù)學(xué)過程的主干。
TF-IDF是一種對詞匯進(jìn)行評分的方式,按照它對句子含義的影響的比例為單詞提供足夠的權(quán)重。得分是兩個獨(dú)立評分,詞頻(tf)和逆文件頻率(idf)的乘積。
詞頻(TF):詞頻表示詞語出現(xiàn)在一篇文章中的頻率。
獨(dú)熱編碼是另一種以數(shù)字形式表示詞語的方法。詞語向量的長度等于詞匯表的長度,每一個句子用一個矩陣來表示,行數(shù)等于詞匯表的長度,列數(shù)等于句子中詞語的數(shù)量。詞匯表中的詞語出現(xiàn)在句子中時,詞語向量對應(yīng)位置的值為1,否則為0。
圖片來源 - 谷歌
為了便于理解,我們可以將嵌入看作是將每個單詞投射到一個特征空間,如下圖所示。
每個詞被映射到一個特征空間里(性別,王室成員,年齡,食物等)
然而,事實上這些維度并不那么清楚或便于理解。但由于算法是在維度的數(shù)學(xué)關(guān)系上訓(xùn)練的,因此這不會產(chǎn)生問題。從訓(xùn)練和預(yù)測的角度來看,維度所代表的內(nèi)容對于神經(jīng)網(wǎng)絡(luò)來說是沒有意義的。
詞袋是一種以表格表示數(shù)據(jù)的方法,其中列表示語料庫的總詞匯表,每一行表示一個觀察。單元格(行和列的交集)表示該特定觀察中的列所代表的單詞數(shù)。 它有助于機(jī)器用易于理解的矩陣范式理解句子,從而使各種線性代數(shù)運(yùn)算和其他算法能夠應(yīng)用到數(shù)據(jù)上,構(gòu)建預(yù)測模型。
下面是醫(yī)學(xué)期刊文章樣本的詞袋模型示例
這種表示非常有效,并且負(fù)責(zé)為一些最常用的機(jī)器學(xué)習(xí)任務(wù)(如垃圾郵件檢測,情感分類器等)生成模型。
為了將樣本轉(zhuǎn)換為其嵌入形式,將獨(dú)熱編碼形式中的每個單詞乘以嵌入矩陣,從而得到樣本的詞嵌入形式。
循環(huán)神經(jīng)網(wǎng)絡(luò)的的標(biāo)準(zhǔn)輸入是一個詞而不是一個完整的樣本,這是概念上與標(biāo)準(zhǔn)神經(jīng)網(wǎng)絡(luò)的不同之處。這給神經(jīng)網(wǎng)絡(luò)提供了能夠處理不同長度句子的靈活性,而這是標(biāo)準(zhǔn)神經(jīng)網(wǎng)絡(luò)無法做到的(由于它固定的結(jié)構(gòu))。它也提供了一個額外的在不同文本位置共享特征學(xué)習(xí)的優(yōu)勢,而這也是標(biāo)準(zhǔn)神經(jīng)網(wǎng)絡(luò)無法做到的。
循環(huán)神經(jīng)網(wǎng)絡(luò)把一個句子的不同單詞在t時刻輸入并且利用t-1時刻的激活值,下面的圖詳細(xì)展示了循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu):
上述結(jié)構(gòu)也被叫做多對多架構(gòu),也就是輸入的數(shù)量等于輸出的數(shù)量。這種結(jié)構(gòu)在序列模型中是非常有用的。
除了上面提到的架構(gòu)外,還有三種常用的RNN架構(gòu)。
2.一對多的RNN:一對多架構(gòu)指的是RNN基于單個輸入值生成一系列輸出值的情況。使用這種架構(gòu)的一個主要示例是音樂生成任務(wù),其中輸入是jounre或第一個音符。
3.多對多(Tx不等于Ty)架構(gòu):該架構(gòu)指的是讀取許多輸入以產(chǎn)生許多輸出的地方,其中,輸入的長度不等于輸出的長度。使用這種架構(gòu)的一個主要例子是機(jī)器翻譯任務(wù)。
它是對基本循環(huán)單元的一種修改,有助于捕獲長期的依賴關(guān)系,也有助于解決消失梯度問題。
GRU增加了一個額外的存儲單元,通常稱為更新門或重置門。除了通常的具有sigmoid函數(shù)和softmax輸出的神經(jīng)單元外,它還包含一個額外的單元,tanh作為激活函數(shù)。使用tanh是因為它的輸出可以是正的也可以是負(fù)的,因此可以用于向上和向下伸縮。然后,該單元的輸出與激活輸入相結(jié)合,以更新內(nèi)存單元的值。
因此,在每個步驟中,隱藏單元和存儲單元的值都會被更新。存儲單元中的值在決定傳遞給下一個單元的激活值時起作用。
在LSTM架構(gòu)中,有一個更新門和一個忘記門,而不是像在GRU中那樣只有一個更新門。
這種架構(gòu)為存儲單元提供了一個選項,可以保留t-1時刻的舊值,并將t時刻向其添加值。
關(guān)于LSTM的更詳細(xì)的解釋,請訪問:http://colah.github.io/posts/2015-08-explanation – lstms/
雙向RNN
在上述RNN架構(gòu)中,僅考慮以前時間戳出現(xiàn)的影響。在NLP中,這意味著它只考慮了當(dāng)前單詞出現(xiàn)之前的單詞的影響。但在語言結(jié)構(gòu)中,情況并非如此,因此靠雙向RNN來拯救。
雙向RNN由前向和后向循環(huán)神經(jīng)網(wǎng)絡(luò)組成,并結(jié)合兩個網(wǎng)絡(luò)在任意給定時間t的結(jié)果進(jìn)行最終預(yù)測,如圖所示。
在這篇文章中,我試圖涵蓋自然語言處理領(lǐng)域中所有流行的相關(guān)實踐和神經(jīng)網(wǎng)絡(luò)架構(gòu)。對于那些對深入了解神經(jīng)網(wǎng)絡(luò)感興趣的人,我強(qiáng)烈建議你們?nèi)?Coursera 上 Andrew Ng 的課程。
想要查看相關(guān)文獻(xiàn)和參考內(nèi)容?
點(diǎn)擊【從基礎(chǔ)到 RNN 和 LSTM,NLP 取得的進(jìn)展都有哪些?】即可訪問~
你可能錯過了這些企業(yè)的秋招信息,新增B站、美團(tuán)、攜程、網(wǎng)易等(持續(xù)更新中...)
自今天開始,AI研習(xí)社會定期搜集并推送各大名企校招崗位和內(nèi)推信息,同時也會邀請求職成功者和企業(yè)人力專家分享求職經(jīng)驗。另外,我們會在社區(qū)職薦版塊更新 AI 企業(yè)校招和社招信息,歡迎有志于在 AI 行業(yè)發(fā)展的應(yīng)屆畢業(yè)生們來 AI 研習(xí)社投遞簡歷噢~
點(diǎn)擊鏈接可訪問查看過去一段時間企業(yè)校招信息:https://ai.yanxishe.com/page/blogDetail/14121
雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。