從基礎到 RNN 和 LSTM,NLP 取得的進展都有哪些?

2021-01-08 雷鋒網


機器學習領域一個最令人著迷的任務,就是訓練機器理解人類交流能力的進步。在機器學習領域,這一分支被稱為自然語言處理(Natural Language Processing)。

本文嘗試解釋自然語言處理的基礎知識,以及隨著深度學習和神經網絡的發展,自然語言處理所取得的快速進展。

在我們深入研究之前,有必要了解一些基礎知識。

語言是什麼?

一種語言,基本上是一個由人類社會共享的固定的詞彙表,用來表達和交流他們的思想。這個詞彙表作為他們成長過程的一部分被世代相傳,並且大部分保持不變,每年會增加很少的部分作為補充。諸如詞典之類的精細資源得到了維護,以便一個人遇到一個新詞時,他或她可以通過參考詞典來了解其含義。一旦人們接觸到這個詞,它就會被添加到他或她自己的詞彙表中,可以用於進一步的交流。計算機如何理解語言?計算機是在數學規則下工作的機器。它沒法解釋或者理解那些人類可以輕鬆做到的事,但卻能在幾秒內執行完複雜的計算。計算機要處理任何概念,都必須以一種數學模型的形式表達這些概念。  這種約束極大地限制了計算機可以使用的自然語言的範圍和領域。目前,機器在執行分類和翻譯的任務方面非常成功。分類基本上是將一段文本分類為一個類別,而翻譯則是將這段文本轉換成任何其他語言。什麼是自然語言處理?自然語言處理,或簡稱為NLP,被廣泛地定義為通過軟體對自然語言(如語音和文本)的自動操作。自然語言處理的研究已經有50多年的歷史了,並且隨著計算機的興起而從語言學領域發展起來。基本的轉換正如前文所述,讓一臺機器理解自然語言(人類使用的語言),需要將語言轉換成某種可以建模的數學框架。下面提到的是幫助我們實現這一目標的一些最常用的技術。分詞,詞幹提取,詞形還原分詞是將文本分解成單詞的過程。分詞可以在任何字符上發生,但最常見的分詞方法是在空格上進行分詞。詞幹提取是一種截斷詞尾以獲得基本單詞的粗糙方法,通常包括去掉派生詞綴。派生詞是指一個詞由另一個詞形成(派生)的詞。派生詞通常與原始詞屬於不同的詞類。最常見算法是Porter算法。詞形還原對詞進行詞彙和形態分析,通常只是為了消除詞尾變化。詞尾變化是一組字母加在單詞的末尾以改變其含義。一些詞尾變化是單詞複數加s,如bat,bats。由於詞幹提取是基於一組規則發生的,因此詞幹返回的詞根可能並不總是英語單詞。另一方面,詞形還原可以適當地減少變形詞,確保詞根屬於英語。N-grams(N元模型)N-gram是指將相鄰的單詞組合在一起來表示目的的過程,其中N表示要組合在一起的單詞數量。例如,考慮一個句子,「自然語言處理對計算機科學至關重要。」1-gram或unigram模型將句子標記為一個單詞組合,因此輸出將是「自然、語言、處理、對、計算機、科學、至關重要」。bigram模型將其標記為兩個單詞的組合,輸出將是「自然語言、語言處理、處理對、對計算機、計算機科學、科學至關重要」類似地,trigram模型將其分解為「自然語言處理、語言處理對、處理對計算機、對計算機科學、計算機科學至關重要」,而n-gram模型將一個句子標記為n個單詞的組合。將一門自然語言分解成n-gram是保持句子中出現的單詞數量的關鍵,而句子是自然語言處理中使用的傳統數學過程的主幹。轉換方法在詞袋模型表示中實現這一點的最常見方法是tf-idf。TF-IDFTF-IDF是一種對詞彙進行評分的方式,按照它對句子含義的影響的比例為單詞提供足夠的權重。得分是兩個獨立評分,詞頻(tf)和逆文件頻率(idf)的乘積。

詞頻(TF):詞頻表示詞語出現在一篇文章中的頻率。

逆文件頻率(IDF):衡量詞語提供的信息量,即它在所有文檔中是常見的還是罕見的。它由log (N/d)計算得出。N是文檔總數,d是包含某個詞語的文檔數。獨熱編碼

獨熱編碼是另一種以數字形式表示詞語的方法。詞語向量的長度等於詞彙表的長度,每一個句子用一個矩陣來表示,行數等於詞彙表的長度,列數等於句子中詞語的數量。詞彙表中的詞語出現在句子中時,詞語向量對應位置的值為1,否則為0。

圖片來源 - 谷歌

詞嵌入詞嵌入是一組語言模型和特徵學習技術共有的統稱,詞彙表中的詞語或短語被映射到由實數構成的向量裡。這種技術主要用於神經網絡中。  
從概念上講,它包含將一個詞語從一個與詞彙表長度相等的維度投射到較低的維度空間,其思想是相似的詞語將被投射得更近。

為了便於理解,我們可以將嵌入看作是將每個單詞投射到一個特徵空間,如下圖所示。

每個詞被映射到一個特徵空間裡(性別,王室成員,年齡,食物等)

然而,事實上這些維度並不那麼清楚或便於理解。但由於算法是在維度的數學關係上訓練的,因此這不會產生問題。從訓練和預測的角度來看,維度所代表的內容對於神經網絡來說是沒有意義的。如果你有興趣對線性代數有一個直觀的理解,投影和變換是一些機器學習算法背後的核心數學原理,我將強烈鼓勵他們訪問3Blue1Brown的「線性代數的本質」。(b站搬運了相關視頻,詳情請看《線性代數的本質》,譯者注)表示方法詞袋要使算法獲取文本數據之間的關係,需要用清晰的結構化表示。詞袋是一種以表格表示數據的方法,其中列表示語料庫的總詞彙表,每一行表示一個觀察。單元格(行和列的交集)表示該特定觀察中的列所代表的單詞數。它有助於機器用易於理解的矩陣範式理解句子,從而使各種線性代數運算和其他算法能夠應用到數據上,構建預測模型。

下面是醫學期刊文章樣本的詞袋模型示例

這種表示非常有效,並且負責為一些最常用的機器學習任務(如垃圾郵件檢測,情感分類器等)生成模型。

它忽視了文本的順序/語法,從而失去了單詞的上下文。這種表示方法生成的矩陣非常稀疏,並且更偏向於最常見的單詞。試想,算法主要依賴於單詞的數量,而在語言中,單詞的重要性實際上與出現頻率成反比。頻率較高的詞是更通用的詞,如the,is,an,它們不會顯著改變句子的含義。因此,重要的是適當地衡量這些詞,以反映它們對句子含義的影響。嵌入矩陣嵌入矩陣是表示詞彙表中每個單詞嵌入的一種方法。行表示單詞嵌入空間的維數,列表示詞彙表中出現的單詞。為了將樣本轉換為其嵌入形式,將獨熱編碼形式中的每個單詞乘以嵌入矩陣,從而得到樣本的詞嵌入形式。

需要記住的一件事是,獨熱編碼僅指在詞彙表中單詞位置處具有值是1的n維向量,n是詞彙表的長度。這些獨熱編碼來自詞彙表,而不是觀測的結果。循環神經網絡(RNN)循環神經網絡就像它的名字一樣,是神經網絡非常重要的一種變體,被大量運用於自然語言處理。循環神經網絡的的標準輸入是一個詞而不是一個完整的樣本,這是概念上與標準神經網絡的不同之處。這給神經網絡提供了能夠處理不同長度句子的靈活性,而這是標準神經網絡無法做到的(由於它固定的結構)。它也提供了一個額外的在不同文本位置共享特徵學習的優勢,而這也是標準神經網絡無法做到的。

循環神經網絡把一個句子的不同單詞在t時刻輸入並且利用t-1時刻的激活值,下面的圖詳細展示了循環神經網絡結構:

上述結構也被叫做多對多架構,也就是輸入的數量等於輸出的數量。這種結構在序列模型中是非常有用的。

除了上面提到的架構外,還有三種常用的RNN架構。

1.多對一的RNN:多對一的架構指的是使用多個輸入(Tx)來產生一個輸出(Ty)的RNN架構。適用這種架構的例子是分類任務。

上圖中,H表示激活函數的輸出。

2.一對多的RNN:一對多架構指的是RNN基於單個輸入值生成一系列輸出值的情況。使用這種架構的一個主要示例是音樂生成任務,其中輸入是jounre或第一個音符。

3.多對多(Tx不等於Ty)架構:該架構指的是讀取許多輸入以產生許多輸出的地方,其中,輸入的長度不等於輸出的長度。使用這種架構的一個主要例子是機器翻譯任務。

Encoder(編碼器)指的是讀取要翻譯的句子的網絡一部分,Decoder(解碼器)是將句子翻譯成所需語言的網絡的一部分。RNN的局限性上述RNN架構的示例僅能捕獲語言的一個方向上的依賴關係。基本上,在自然語言處理的情況下,它假定後面的單詞對之前單詞的含義沒有影響。根據我們的語言經驗,我們知道這肯定是不對的。RNN也不能很好地捕捉長期的依賴關係,梯度消失的問題在RNN中再次出現。這兩種局限性導致了新型的RNN架構的產生,下面將對此進行討論。門控循環單元(GRU)

它是對基本循環單元的一種修改,有助於捕獲長期的依賴關係,也有助於解決消失梯度問題。

GRU增加了一個額外的存儲單元,通常稱為更新門或重置門。除了通常的具有sigmoid函數和softmax輸出的神經單元外,它還包含一個額外的單元,tanh作為激活函數。使用tanh是因為它的輸出可以是正的也可以是負的,因此可以用於向上和向下伸縮。然後,該單元的輸出與激活輸入相結合,以更新內存單元的值。

因此,在每個步驟中,隱藏單元和存儲單元的值都會被更新。存儲單元中的值在決定傳遞給下一個單元的激活值時起作用。

詳細的解釋請參考:https://towardsdatascience.com/understanding-gru-networks-2ef37df6c9beLSTM

在LSTM架構中,有一個更新門和一個忘記門,而不是像在GRU中那樣只有一個更新門。

這種架構為存儲單元提供了一個選項,可以保留t-1時刻的舊值,並將t時刻向其添加值。

關於LSTM的更詳細的解釋,請訪問:http://colah.github.io/posts/2015-08-explanation – lstms/

雙向RNN

在上述RNN架構中,僅考慮以前時間戳出現的影響。在NLP中,這意味著它只考慮了當前單詞出現之前的單詞的影響。但在語言結構中,情況並非如此,因此靠雙向RNN來拯救。

雙向RNN由前向和後向循環神經網絡組成,並結合兩個網絡在任意給定時間t的結果進行最終預測,如圖所示。

在這篇文章中,我試圖涵蓋自然語言處理領域中所有流行的相關實踐和神經網絡架構。對於那些對深入了解神經網絡感興趣的人,我強烈建議你們去 Coursera 上 Andrew Ng 的課程。

想要查看相關文獻和參考內容?

點擊【從基礎到 RNN 和 LSTM,NLP 取得的進展都有哪些?】即可訪問~

via https://towardsdatascience.com/natural-language-processing-from-basics-to-using-rnn-and-lstm-ef6779e4ae66

你可能錯過了這些企業的秋招信息,新增B站、美團、攜程、網易等(持續更新中...)

自今天開始,AI研習社會定期搜集並推送各大名企校招崗位和內推信息,同時也會邀請求職成功者和企業人力專家分享求職經驗。另外,我們會在社區職薦版塊更新 AI 企業校招和社招信息,歡迎有志於在 AI 行業發展的應屆畢業生們來 AI 研習社投遞簡歷噢~

點擊連結可訪問查看過去一段時間企業校招信息:https://ai.yanxishe.com/page/blogDetail/14121

雷鋒網雷鋒網雷鋒網(公眾號:雷鋒網)


雷鋒網原創文章,未經授權禁止轉載。詳情見轉載須知。

相關焦點

  • nlp領域發生了新的技術突破,用attention機制研究nlp領域
    近期,nlp領域發生了一系列的技術突破。包括:attention機制,cnn,adaptive attention network(an),兩層cnn相比較,an表現優於一層的cn。lstm,已經有了兩種不同的,看似性能和效率差異不大的attention機制:rnnattention,lstmattention。今天我們將從這兩種attention機制開始研究nlp領域突破性技術!
  • 深度學習在NLP中的運用?從分詞、詞性到機器翻譯、對話系統
    本文由機器之心編輯,「機器之心」專注生產人工智慧專業性內容,適合開發者和從業者閱讀參考。點擊右上角即刻關注。自然語言是人類知識的抽象濃縮表示,而自然語言理解是人工智慧研究領域中極具挑戰的一個分支。上次,《自然語言處理在 2017 年有哪些值得期待的發展?
  • 用純NumPy碼一個RNN、LSTM:這是最好的入門方式了
    一般使用純 NumPy 實現深度網絡會面臨兩大問題,首先對於前向傳播,卷積和循環網絡並不如全連接網絡那樣可以直觀地實現。為了計算性能,實踐代碼與理論之間也有差別。其次,我們實現了前向傳播後還需要繼續實現反向傳播,這就要求我們對矩陣微分和鏈式法則等數學基礎都有比較充足的了解。
  • 在 TensorFlow 上使用 LSTM 進行情感分析
    例如,我們希望單詞 「love」 和 「adore」 這兩個詞在向量空間中是有一定的相關性的,因為他們有類似的定義,他們都在類似的上下文中使用。單詞的向量表示也被稱之為詞嵌入。每個單詞的出現都依賴於它的前一個單詞和後一個單詞。由於這種依賴的存在,我們使用循環神經網絡來處理這種時間序列數據。循環神經網絡的結構和你之前看到的那些前饋神經網絡的結構可能有一些不一樣。前饋神經網絡由三部分組成,輸入層,隱藏層和輸出層。
  • 人去做文本摘要都挺困難了,機器要怎麼做?
    自動文摘本質上做的一件事情是信息過濾,從某種意義上來說,和推薦系統的功能有一點像,都是為了讓大家更快地找到感興趣的東西,只是用了不同的手段而已。問題描述文本摘要問題按照文檔數量可以分為單文檔摘要和多文檔摘要問題,按照實現方式可以分為提取式(extractive)和摘要式(abstractive)。摘要問題的特點是輸出的文本要比輸入的文本少很多很多,但卻蘊藏著非常多的有效信息在內。
  • 獨家 | NLP的深度學習:ANN,RNN和LSTM詳解!(附資源)
    在這篇文章中,我們將學習人工神經網絡,深度學習,遞歸神經網絡和長短期記憶網絡。在下一篇文章中,我們將在真實項目中利用它來回答問題在開始討論神經網絡之前,先仔細看看下面的圖像。其中有兩張圖片:其中一張圖片是一輛校車行駛通過馬路,另一張圖片是是普通的起居室,這兩張圖片都有人工注釋人員對其進行了描述。
  • 乾貨| 請收下這份2018學習清單:150個最好的機器學習,NLP和Python...
    有興趣入坑ML的小夥伴不要拖延了,時不我待!在今年秋季開始準備博士項目的時候,我已經精選了一些有關機器學習和NLP的優質網絡資源。一般我會找一個有意思的教程或者視頻,再由此找到三四個,甚至更多的教程或者視頻。猛回頭,發現標收藏夾又多了20個資源待我學習(推薦提升效率工具Tab Bundler)。
  • ...請收下這份2018學習清單:150個最好的機器學習,NLP和Python教程
    有興趣入坑ML的小夥伴不要拖延了,時不我待!在今年秋季開始準備博士項目的時候,我已經精選了一些有關機器學習和NLP的優質網絡資源。一般我會找一個有意思的教程或者視頻,再由此找到三四個,甚至更多的教程或者視頻。猛回頭,發現標收藏夾又多了20個資源待我學習(推薦提升效率工具Tab Bundler)。
  • 乾貨 | 請收下這份2018學習清單:150個最好的機器學習,NLP和Python教程
    有興趣入坑ML的小夥伴不要拖延了,時不我待! 在今年秋季開始準備博士項目的時候,我已經精選了一些有關機器學習和NLP的優質網絡資源。一般我會找一個有意思的教程或者視頻,再由此找到三四個,甚至更多的教程或者視頻。猛回頭,發現標收藏夾又多了20個資源待我學習(推薦提升效率工具Tab Bundler)。
  • 學習的筆記可以通過以下方法有如下幾種
    近期,nlp領域發生了較大的波動,特別是老生常談的gpt-2、self-attention等的變革加速了cnn和encoder-decoder思想在某些nlp任務中的鋪開進程。本文著重介紹co-attention、強化學習中的attention和equivariance(矩陣意義)。
  • LSTM實現詳解
    RNN誤區我感覺有一件很重要的事情一直未被大家充分強調過(而且這也是我為什麼不能使用RNN做我想做的事情的主要原因)。RNN和前饋神經網絡並沒有很大不同。最容易實現RNN的一種方法就是像前饋神經網絡使用部分輸入到隱含層,以及一些來自隱含層的輸出。在網絡中沒有任何神奇的內部狀態。它作為輸入的一部分。
  • 入門| CNN也能用於NLP任務,一文簡述文本分類任務的7個模型
    本文數據都是用這種方式分割的。深度學習模型的表現優於詞袋模型是因為深度學習模型能夠捕捉到句子中單詞間的順序依賴關係。這可能要歸功於循環神經網絡這一特殊神經網絡結構的出現了。 本文並未涵蓋 RNN 的理論基礎,但該連結(http://colah.github.io/posts/2015-08-Understanding-LSTMs/)中的內容值得一讀。
  • 用金庸、古龍群俠名稱訓練LSTM,會生成多麼奇葩的名字?
    http://magicly.me/2017/04/07/rnn-lstm-generate-name/?utm_source=tuicool&utm_medium=referralMagicly:之前翻譯了一篇介紹RNN的文章,一直沒看到作者寫新的介紹LSTM的blog,於是我又找了其他資料學習。
  • PyTorch:Bi-LSTM的文本生成
    我們可以認為「建模自然語言」是指對構成語言的語義和語法進行推理,本質上是這樣,但它更進一步。目前,自然語言處理(NLP)領域通過不同的方法和技術處理不同的任務,即對語言進行推理、理解和建模。自然語言處理(NLP)領域在過去的十年裡發展非常迅速。許多模型都從不同的角度提出了解決不同NLP任務的方法。
  • 2019 年 NLP 領域都發生了哪些大事件?
    《Neural Logic Machines》這項工作提出了一種「神經-符號」網絡架構,可以在歸納學習和邏輯推理方面取得很好的性能。該模型在數組排序和尋找最短路徑任務中表現出色。XLNet 是一種用於自然語言處理任務的預訓練方法,它在 20 種任務上相較於 BERT 有了進一步的提升。關於這份卓越的工作的總結,請參閱: https://medium.com/dair-ai/xlnet-outperforms-bert-on-several-nlp-tasks-9ec867bb563b。
  • 教程| 如何使用TensorFlow構建、訓練和改進循環神經網絡
    目前有很多人工智慧應用都依賴於循環深度神經網絡,在谷歌(語音搜索)、百度(DeepSpeech)和亞馬遜的產品中都能看到RNN的身影。然而,當我們開始著手構建自己的 RNN 模型時,我們發現在使用神經網絡處理語音識別這樣的任務上,幾乎沒有簡單直接的先例可以遵循。
  • 用RNN和TensorFlow創作自己的《哈利波特》小說
    循環神經網絡(RNN)與其他神經網絡不同,它是有記憶的神經網絡,可以存儲它處理過的所有層的信息,並在記憶的基礎上計算下一層。GRU vs LSTM二者在文本生成上都表現出色,GRU(門控循環單元)是比較新的概念,實際上並沒有一種方法可以確定二者哪個更好。優化超參數比選擇一個好的架構更能提高模型性能。