用於自然語言處理的7種神經網路
來自專欄景略集智15 人贊了文章
什麼是神經網路?它是如何工作的?現在有哪些神經網路?有哪幾種類型的神經網路可以用於自然語言處理?下面我們會一一解答這些問題。
神經網路是一種基於人腦結構的非線性計算模型,能夠根據其它數據樣本,學習執行分類、預測、決策、可視化等多種任務。
神經網路包含人工神經元或處理元素,基本上由三個相互連接的層構成:輸入層,隱藏層和輸出層,其中隱藏層可能會有多個層。
輸入層包含 4 個神經元,它會向隱藏層輸入信息。隱藏層會向輸出層輸送數據。每個神經元都有加權的輸入(突觸),一個激活函數(根據輸入來定義輸出)以及一個輸出。突觸是可調整的參數,將神經網路轉換為一個參數化系統。
輸入的加權和會產生一個激活信號,將信號輸入激活函數後就能從神經元中獲得一個輸出。常用激活函數有線性函數、階梯函數、S 型函數、tanh 函數、ReLu 函數等。
線性函數
f(x)=ax
階梯函數
邏輯(S 型)函數
Tanh函數
ReLu函數
訓練是權重的優化過程,在訓練中預測值的錯誤會被降低到最少,最終神經網路會達到預期準確率。我們通常用反向傳播法來明確每個神經元對誤差影響大小,它會計算損失函數的梯度。
如何更形象的理解神經網路,可以參考我們的這篇回答:
如何簡單形象又有趣地講解神經網路是什麼?通過添加隱藏層可以讓神經網路的性能更靈活更強大。在輸入層和輸出層之間有多個隱藏層的神經網路,就被稱為深度神經網路(DNN),它可以建模複雜的非線性關係。
多層感知機(MLP)
多層感知機有三個或以上的層。它利用一個非線性激活函數(主要為雙曲正切函數或邏輯函數),能讓它分類非線性可分離的數據。一個層的每個節點會和後面層的每個節點相互連接,讓神經網路實現全連接。例如,語音識別和機器翻譯都是多層感知機在自然語言處理方面的應用。
卷積神經網路(CNN)
卷積神經網路包含一個及以上的卷積層、池化層或全連接層,然後用一些前面說過的多層感知機。卷積層利用卷積操作,將輸入傳入下一層,這能讓神經網路以更少的參數實現更深的深度。
卷積神經網路在圖像和語音應用方面展示出了非凡的效果。Yoon Kim 在《Convolutional Neural Networks for Sentence Classification》中描述了將 CNN 用於文本分類任務的過程和結果。他基於 Word2vec 搭建了一個卷積神經網路模型,執行了一系列試驗,和其它幾種方法進行了對比,展示了卷積神經網路在自然語言處理方面成績斐然。
而在《Text Understanding from Scratch》中,Xiang Zhang 和 Yann LeCun 證明了 CNN 可以在沒有辭彙、短語、句子和其它任何人類語言知識的情況下,在文本理解上取得了出色的表現。卷積神經網路同樣可以用於語義分析、釋義檢測、語音識別等領域。
遞歸神經網路(RNN)
遞歸神經網路(RNN)是兩種人工神經網路的總稱。一種是時間遞歸神經網路(recurrent neural network),另一種是結構遞歸神經網路(recursive neural network)。時間遞歸神經網路的神經元間連接構成矩陣,而結構遞歸神經網路利用相似的神經網路結構遞歸構造更為複雜的深度網路。
遞歸神經網路是一種深度神經網路,它將相同的權重遞歸地應用在神經網路架構上,以拓撲排序的方式遍歷給定結構,從而在大小可變的輸入結構上可以做出結構化的預測。遞歸神經網路可以把一個樹/圖結構信息編碼為一個向量,也就是把信息映射到一個語義向量空間中。
循環神經網路(RNN)
不像前饋神經網路,循環神經網路是遞歸神經網路的一種變體,神經元之間的連接會成為循環。也就是說,網路的輸出不僅僅依靠當前的輸入,而且還有前一步的神經元狀態。這就能讓我們可以解決像手寫連筆字識別或語音識別這樣的自然語言處理問題。在《Natural Language Generation, Paraphrasing and Summarization of User Reviews with Recurrent Neural Networks》論文中,作者證明了循環神經網路模型可以生成小說語句和文檔總結。
作者創建了一種循環神經網路,可以在沒有人類設計特徵的情況下用於文本分類。作者還將這種文本分類模型同現存的文本分類方法進行了比較,比如詞袋模型、支持向量機、LDA和遞歸神經網路等,結果顯示他們的模型性能要優於傳統的方法。
長短期記憶網路(LSTM)
長短期記憶網路是一種具體的循環神經網路架構,用於為時間序列建模。它們的長期依賴要比卷積 RNN 更加準確。在循環組件內,LSTM 並沒有使用激活函數,存儲的值沒有修改,在訓練中梯度也不會消失。通常,LSTM 單元在有多個單元的「隱層單元」(block)中執行。這些代隱層單元會有 3 或 4 個「門」(比如「輸入門」「遺忘門」「輸出門」),它們會控制邏輯函數中的信息流通。
在論文《Long Short-Term Memory Recurrent Neural Network Architectures for Large Scale Acoustic Modeling》中,作者展示了深度 LSTM RNN 架構在大規模聲學建模中表現最好。
而在《Part-of-Speech Tagging with Bidirectional Long Short-Term Memory Recurrent Neural Network 》這篇論文中,作者搭建了一個用於詞性標註的模型,實現了 97.4% 的標註準確率。蘋果、亞馬遜、谷歌和微軟等都將 LSTM 作為基礎元素應用在自家產品中。
序列到序列模型
通常,序列到序列模型包含兩個循環神經網路:一個編碼器用於處理輸入,一個解碼器用於生成輸出。編碼器和解碼器可以使用相同或不同的參數。
序列到序列模型主要用於問答系統、聊天機器人和機器翻譯中。在《Sequence to Sequence Learning with Neural Networks》論文中,作者成功地將多層神經元用於序列到序列模型中,完成翻譯任務。
在《Paraphrase Detection Using Recursive Autoencoder》論文中,作者展示了一種簡單的遞歸自動編碼器,在 N 維語義空間中的表示均為向量,其中有相似含義的短語會緊挨在一起。
淺層神經網路
除了深度神經網路之外,淺層神經網路同樣是比較常用和有用的工具。例如,word2vec 就是一種淺層的兩層模型,用於生成詞向量。Word2vec 會用比較大的文本語料庫作為輸入,生成一個向量空間。語料庫中的每個辭彙都包含該空間內的對應向量。來自語料庫中相同語境中的辭彙會在向量空間中處於相鄰的位置。
結語
本文我們討論了幾種類型的神經網路,比如多層感知機、卷積神經網路、遞歸神經網路等等。它們都可以應用在自然語言處理任務中。卷積神經網路主要用於文本分類,循環神經網路通常用於自然語言生成和機器翻譯。
關於自然語言處理有哪些框架和程序庫,可以查看我們的這篇分享:
景略集智:13個用Python解決自然語言處理問題的深度學習框架文中提及的論文地址:
《Convolutional Neural Networks for Sentence Classification》:
http://www.aclweb.org/anthology/D14-1181
《Text Understanding from Scratch》:
https://arxiv.org/pdf/1502.01710.pdf
《Natural Language Generation, Paraphrasing and Summarization of User Reviews with Recurrent Neural Networks》:
http://www.meanotek.ru/files/TarasovDS%282%292015-Dialogue.pdf
《Long Short-Term Memory Recurrent Neural Network Architectures for Large Scale Acoustic Modeling》:
https://wiki.inf.ed.ac.uk/twiki/pub/CSTR/ListenTerm1201415/sak2.pdf
《Part-of-Speech Tagging with Bidirectional Long Short-Term Memory Recurrent Neural Network 》:
https://arxiv.org/pdf/1510.06168.pdf
《Sequence to Sequence Learning with Neural Networks》:
https://arxiv.org/pdf/1409.3215.pdf
《Paraphrase Detection Using Recursive Autoencoder》:
https://nlp.stanford.edu/courses/cs224n/2011/reports/ehhuang.pdf
推薦閱讀:
TAG:深度學習DeepLearning | 機器學習 | 神經網路 |