0
本文作者: JocelynWang | 編輯:幸麗娟 | 2020-02-03 09:39 |
有人說,不同語言之間的翻譯,與其說是一門科學,不如說是一門藝術。
NLP 領域的機器學習工程師 Riccardo Di Sipio 日前提出了一個觀點:使用卷積網(wǎng)絡要比使用循環(huán)神經(jīng)網(wǎng)絡來做 NLP 研究,要幸福得多——是時候放棄循環(huán)神經(jīng)網(wǎng)絡了!
基于這一觀點,他從卷積網(wǎng)絡本身的基本原理出發(fā),論述了為什么 NLP 不再需要循環(huán)神經(jīng)網(wǎng)絡的原因。
我們來看:
不久前,人工智能科學家侯世達(Douglas Hofstadter) 就在 The Atlantic 上發(fā)表的一篇論文中指出,目前機器翻譯尚處于「淺薄」的階段。
文章閱讀地址:https://www.theatlantic.com/technology/archive/2018/01/the-shallowness-of-google-translate/551570/
盡管機器翻譯存在局限性,但難以否認的是,自動翻譯軟件在許多情況下都有良好的效果,而其背后的技術在任何存在信息從一個領域流動到另一個領域的語境中都具有廣泛的應用,例如基因組學中從 RNA 到蛋白質編碼的翻譯過程。
直到 2015年,序列到序列的映射(或者說翻譯)使用的主要方法都是循環(huán)神經(jīng)網(wǎng)絡,特別是長短期記憶(LSTM)網(wǎng)絡。
我在前一篇文章中介紹了這些網(wǎng)絡架構的基礎知識,我還談到了 LSTM 被應用于大型強子對撞機的頂部夸克對衰變的運動學重建過程。這篇文章鏈接如下:
然后,出現(xiàn)了一些新的方法:比如殘差網(wǎng)路架構和注意力機制的提出,為針對這類任務的更通用的框架的實現(xiàn)鋪平了道路。
值得一提的是,這些新穎的網(wǎng)路架構還解決了另一個問題:事實上,由于 RNN 固有的時序性,很難利用這種網(wǎng)絡在像 GPU 這樣的并行系統(tǒng)上進行訓練。而這一點正是卷積神經(jīng)網(wǎng)絡使用起來非常方便的地方。
在數(shù)學中,卷積表示的是當函數(shù) f 作用于另一個函數(shù) g 時生成第三個函數(shù)的一種運算:
此運算不應與調(diào)制(例如 AM 傳輸中的 EM 信號)混淆,調(diào)制是將兩個函數(shù)簡單相乘。求知欲強的人可能會深究到:時間空間中的卷積傅里葉變換,實質上是頻率空間中的調(diào)制,即:
所以這兩種運算雖然密切相關,但切不可被混淆。
在計算機科學的離散世界中,積分被求和取代,兩函數(shù)之間的乘法由矩陣間的乘法代替。用行話來說,就是將卷積核應用到圖像上來生成卷積特征,一次卷積將生成一個新的特征。在下面每一對圖像中,當對左邊部分發(fā)生一次卷積變換,將于右邊部分產(chǎn)生一個新的值,如下圖所示:
在對這個序列的操作中,圖像(灰色矩陣)由一個卷積核(橙色矩陣)卷積操作以獲得卷積特征(綠色矩陣)。
通常來說,卷積核是一個網(wǎng)絡的權值矩陣,必須通過某種算法(如:反向傳播)計算,才能得到它的期望輸出。
這種操作的一個很好并且非常重要的特性是,一旦「圖片」被加載到記憶中,不同的卷積核會對其進行操作,這樣就可以減少輸入/輸出(I/O)次數(shù),從而更好地利用帶寬。通常,卷積操作由以下兩種方式執(zhí)行:
降維:這正是上圖中的例子,例如將 4x4 圖像被 2x2 卷積核降維至 3x3 圖像,這稱為有效填充。
維數(shù)保持不變:在這種情況下,在使用卷積核之前,原始圖像用其周圍的零來進行填充。例如,一個 4x4 圖像被填充到5x5 矩陣中,然后被一個 2x2 卷積核核進行卷積操作后縮小為4x4 圖像(原大小)。這稱為相同的填充。
在卷積之后,通常會進行池化操作:在每個卷積塊中,只將最大值傳遞到下一層。此操作用于降低圖片維數(shù)以及過濾噪聲。降維的關鍵是通過信息壓縮來尋找更高水平的特征。
常用的做法是,通過將上述兩個步驟的板塊鏈合在一起,來構建一個卷積神經(jīng)網(wǎng)絡。一些成功的網(wǎng)絡架構案例如下:
AlexNet(2012):該網(wǎng)絡共包含 8 層;其中前 5 層是卷積層,其中一部分卷積層后面連著最大池化層,最后 3 層為全連接層。這個網(wǎng)絡利用 ReLU 而不是 tanh 或 sigmoid 作為激活函數(shù)。
VGGNet(2014):顧名思義,這是一個非常深的卷積網(wǎng)絡,它一共包括 16 層。與 AlexNet 類似,它僅有 3x3 卷積核,但有許多濾波器。它是目前用于從圖像中提取特征的最為主流的方法。
GoogLeNet(2014):這個網(wǎng)絡的靈感來源于較為久遠的 LeNet,但在其基礎上又利用了 Inception 模塊。在引入它之前,CNN 只是通過將卷積層疊得越來越深來實現(xiàn)。為說明在相似圖像中信息可以在不同尺度范圍內(nèi)傳播,該網(wǎng)絡在同一層上使用幾種不同大小的卷積核(如:1x1、3x3、5x5…),然后將它們的輸出連接,再把九個類似上述的模塊堆疊起來。由于深度網(wǎng)絡受到梯度消失問題的影響,更新的實現(xiàn)使用的是殘差網(wǎng)絡架構。
ResNet(2015):殘差神經(jīng)網(wǎng)絡具有顯著的批量標準化(Batch Normalization)和跳躍連接特征。跳躍連接指的是網(wǎng)絡中的信息通過跳過某些層走捷徑。這里的「技巧」是通過殘差塊獲得的。另外一種類似于殘差網(wǎng)絡架構的方法被稱為高速公路網(wǎng)絡(Highway Networks)。
既然現(xiàn)在我們已經(jīng)了解了卷積神經(jīng)網(wǎng)絡的基本知識,那么讓我們回到最原始的問題:我們?nèi)绾问褂眠@樣的網(wǎng)絡代替循環(huán)網(wǎng)絡來解析序列呢?
注意力機制背后的主要觀點是,網(wǎng)絡應該找出輸入序列的哪些部分或元素與生給定的輸出序列元素具有更強的相關性。它通過為每個輸入元素創(chuàng)建一個注意力權重向量(權重介于 0 和 1 之間,通過 Softmax 產(chǎn)生),并使用它們來調(diào)整信息流。如果我們首先關注基于 RNN 的網(wǎng)絡,這將變得更容易理解。
對于每個輸入元素(時間階),RNN 層會存儲一個隱藏狀態(tài)。所以對于 N 個輸入將會有 N 個隱藏狀態(tài)。此時,我們可以通過簡單地讓注意力權重和隱藏狀態(tài)逐個元素相乘(也就是哈達瑪積)。來生成剩下文向量:
例如,當翻譯一個句子時,兩種語言的專有名詞都是一樣的,因此相應的權重會非常大(例如 0.95)。相鄰單詞的權重很可能也是比較大的(例如 0.55),而相距較遠的單詞權重則較?。ɡ?nbsp;0.05)。
最后,信息被壓縮成一個注意力向量,并傳遞到下一層:
在解碼階段,則回為每個輸入的詞計算上下文向量。
現(xiàn)在我們基本掌握和理解了關于如何在機器翻譯中擺脫 RNN 網(wǎng)絡的所有要素。
Transformer 網(wǎng)絡利用注意力機制,但這次使用的是前饋網(wǎng)絡。
首先,輸入序列被嵌入(即被編碼成 N 維空間中的一個數(shù)字)向量作為補充,該向量跟蹤每個單詞相對于彼此的初始位置?,F(xiàn)在我們有了序列中所有單詞( K)和一個給定單詞( Q)的向量表示。
根據(jù)這些材料,我們可以像以前那樣計算出注意力權重(d_k 代表了維度,它是一個標準化因子):
這個注意力權重決定了其他每個單詞對于給定單詞的翻譯結果的貢獻程度。
將這些權重作用于待翻譯的給定序列(值V)的過程稱為縮放的點積注意力( Scaled Dot-Product Attention)。
多頭注意力是一種注意力機制的合并方式,被用來將 Q、K 和 V 線性映射到不同維度的空間中。其思想是,不同的映射可以分別從不同方面突出信息編碼的方式。其中映射是通過將 Q、K 和 V 乘以訓練過程中學習到的矩陣 W 來實現(xiàn)的。
最后值得一提的損失,在論文《Attention Augmented Convolutional Networks》中,作者提出了一種具有多頭注意力機制的 CNN ,該論文鏈接如下:
而以上,便是為什么我們不再需要循環(huán)神經(jīng)網(wǎng)絡的原因~
via: https://medium.com/swlh/attention-please-forget-about-recurrent-neural-networks-8d8c9047e117 雷鋒網(wǎng)AI 科技評論編譯。 雷鋒網(wǎng)雷鋒網(wǎng)
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權禁止轉載。詳情見轉載須知。