DataScience 板


LINE

1) 論文介紹 arXiv 連結: https://arxiv.org/abs/1706.03762 這篇是 Google 發表在 NIPS2017 上的 paper,其最大的亮點是提出一個新的 encoder-decoder 架構完全依賴於 Attention 機制而完全沒用到 CNN 以及 RNN,這樣 的好處是提高了訓練時可平行化處理的部分 (RNN 依賴於序列處理,而 Attention 可以 是矩陣乘法運算) 並且讓 input, output sequences 中的文字彼此之間跨越距離的障礙 能夠找到有關聯的字詞。 在這篇論文之前,為了減少序列的計算量,被提出的方法有 ByteNet, ConvS2S 等網路架 構,都是用到了 CNN 來做 downsampling,但這樣的方法仍然會遇到距離障礙的問題: 相 距越遠的字詞會越難找到彼此的資訊,其解決方法就是使用 self-attention 取代 encode, decode 階段,讓每一個詞都去計算整個 sequence 的表示,此外其也能解決過 長的 RNN 架構可能會造成的梯度消失問題。 這篇提出的架構 Transformer 如下圖: https://imgur.com/e5JWQNg 也是 encoder-decoder 的形式,只不過都換成了使用 attention + fully connected layers 來實現。 對於 input, output 序列每個字詞過 Embedding 之後須加上 Positional Encoding 主 要是因為這個架構不像 RNN 是有序的,但是為了捕捉到字詞前後的關係所以須加上基於 位置的 Embedding。 Encoder: 在 Encoder 中堆疊了六個相同的 layer,每個 layer 都包含兩個 sublayer,分別是 multi-head self-attention 和 position-wise fully connected network,並且都是 以殘差連接的方式,好處是能夠加深網路,並且都過 layer normalization 加速收斂, 因此每一層 sublayer 都可以以 LayerNorm(x + SubLayer(x)) 來表示。 Decoder: Decoder 同樣堆疊六層,但每一層包含了三個 sublayer,其同樣有目標序列的 self-attention,再加上了 decoder 向 encoder 的 attention 機制,最後同樣過全連 接層輸出,多的 sublayer 就是在負責從 encoder 藉由 attention 抓取重要資訊來作為 輸出參考,其中比較需要注意的是 decoder 的 self-attention 需要加上遮罩機制,也 就是讓位置 t 的字詞只能 attend 到自己以前的字詞,不能向後偷看。 其用到的 Attention 計算公式為 Scaled Dot-Product Attention 流程如下圖: https://imgur.com/15WtVKI 其中 Q 是 query (發起 attention 的 matrix) K, V 分別是 key, value (被 attention 的 matrix),在這篇論文中使用的 K, V 是相 同的,都是某時間點的 hidden state 寫成公式如下: https://imgur.com/ju9EjgP 其實與 dot product attention 的計算方式幾乎一樣,使用 Q, K 進行點積得到 attention weight(知道對每個時間點的該注意的程度),再和 value 相乘得到加權結果 。 只差在 Q, K 進行點積之後除以一個 hidden dimension (d_k) 的根號,是為了避免點積 的結果太大影響訓練穩定程度 ( 除以根號 d_k 之後可以讓方差變成 1 ) https://imgur.com/QTzusmn Multi-Head Attention 其使用的 attention 計算公式為上述的 scaled dot-product attention,而其使用的機 制為 multi-head attention,概念是分別將 Q, K, V 經過線性轉換(learnable的)成 h 個,再 h 個各自平行地去做 attention,最後再將 h 個結果 concatenate 在一起得到 最終的結果,通常會希望 concatenate 之後的維度與原來相同(d_k),因此在做線性轉換 時通常會把 h 個轉換出來的結果維度為 d_k / h 寫成公式如下: https://imgur.com/Jqs3CYV Position-wise Feed Forward Networks 其實就是兩層的 fully connected layers 搭配 Relu 總體架構來說,就是讓源句子做 self-attention 以殘差連接和 layer normalization, 接著丟去 feed forward 也以殘差連接以及 layer normalization,這個動作重複 6 層 後當作 Encoder 輸出,Decoder 階段目標句子同樣先做 self-attention (不過帶有 mask) 後,對 Encoder 的輸出做 attention 再丟進 feed forward,這三個步驟也都是 殘差連接以及 layer normalization,並也做 6 層後經過一個線性轉換以及 softmax 輸 出預測句子。 Why Self-Attention? 作者們認為主要有三大好處: 1. 降低了每一層的計算複雜度:只要 sequence length 小於 hidden dimension 就會比 RNN 複雜度低 2. 增加了可平行化處理的程度:加快訓練速度 3. 解決long-dependency的問題:字詞相距很遠難以關注到彼此的問題 Training 在訓練過程中他們也使用了 learning rate 遞減、dropout、label smoothing 等等 tips,在此不贅述。 Result https://imgur.com/2JJ5m4Z 當時在機器翻譯資料集 WMT2014 取得了 state-of-the-art 的結果,值得注意的是 Transformer 的 Training Cost 是比其他模型少許多的。 這篇並沒有詳細提到 Positional Encoding 怎麼 init,因為本篇重點應該比較注重在 Attention,並且 Google 也在今年(2018)提出了一種新的將位置加入 Transformer 的 方法,詳細可以參考 https://arxiv.org/abs/1803.02155 2) 個人心得 這篇應該算是 NLP 近年來最多人關注的 paper 之一,Google 也還在針對這個架構進行 研究發展新的 paper 來改善增進 Transformer 的問題與能力。舉例來說目前 Transformer 的其中一個問題是無法像 RNN-based model 做 schedule sampling 的訓 練,讓模型在訓練階段都只能看 ground truth 而在測試階段就要看自己前一個時間點的 輸出結果。 底下附上我自己實作 Transformer 應用在 PTT Gossiping QA Dataset (https://github.com/zake7749/Gossiping-Chinese-Corpus ) 的一些結果: https://imgur.com/l0AsUa5 第一次寫這類型的文章,若有理解錯誤或是表達的不精確請各位大大指正~謝謝 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.218.53.138
※ 文章網址: https://webptt.com/m.aspx?n=bbs/DataScience/M.1533004952.A.244.html ※ 編輯: dav1a1223 (114.136.163.75), 07/31/2018 10:43:56
1F:推 yiefaung: 加快訓練大概能加快多少? 07/31 10:52
2F:推 yiefaung: 另外這個QA有什麼衡量performance的方式嗎 跟其他方法 07/31 10:55
3F:→ yiefaung: 比有沒有明顯差別 07/31 10:55
4F:→ dav1a1223: 以和rnn每一層的複雜度來比較的話,rnn是O(n*d^2)而se 07/31 10:57
5F:→ dav1a1223: lf-attn是O(n^2*d)其中n是序列長d是hidden dim 07/31 10:57
6F:→ dav1a1223: QA的部分我只是做好玩的並沒有特別去算bleu之類的指標 07/31 11:04
7F:→ dav1a1223: ,肉眼看的話,我同時也實作gru encoder decoder with 07/31 11:04
8F:→ dav1a1223: attn,結果句子相較是不通順許多 07/31 11:04
9F:推 sma1033: 在做inference的時候還是要照順序生,所以還是有點慢 07/31 11:43
10F:推 daniel0523: 感謝分享! 12/17 03:35







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP