如何評價 Facebook 新推出的 CNN 機器翻譯專案 Fairseq

時間 2021-05-11 11:57:12

1樓:深度學習於NLP

很多的trick,比較有想法。

1、輸入端加入位置向量,。

2、層疊的CNN構成了hierarchical representation表示,底層的CNN捕捉相聚較近的詞之間的依賴關係,高層CNN捕捉較遠詞之間的依賴關係。通過層次化的結構,實現了類似RNN(LSTM)捕捉長度在20個詞以上的Sequence的依賴關係的功能。

3、多層attention,通過attention決定哪些資訊是重要的,並逐步往下傳遞。

4、為了保證訓練的穩定性,進行了梯度裁剪和精細的權重初始化。

感覺,前兩點實現了RNN所獨有的功能。與RNN相比,感覺基於CNN的seq2seq網路結構更靈活,訓練速度更快,更適合工業生產中大資料訓練。

2樓:

尚未開始深鑽。用CNN代替RNN最大的優勢就是可平行計算,訓練和解碼速度都能帶來顯著提公升。

至於犧牲全域性建模強化區域性互動可能造成的效能損失,文中提出通過引入位置編碼和層次化注意力等技巧來彌補。遺憾的是,現階段主要實驗物件仍然是基本無需大範圍調序的語種,無法知曉在其他語種上會不會有流暢度方面的損失。要知道流暢度是RNN seq2seq NMT相較於PBMT具有顯著優越性的最大體現。

自動評價指標BLEU漲那個量級其實得不出太多結論的,有實際執行結果對比才能看出有沒有傷害。期待有行家搭出系統來直接與RNN NMT來PK實際輸出。

3樓:李丕績

我怎麼感覺那幾個trick才是帶來翻譯performance提公升的關鍵:

1, attention的時候是對z+e的加權求和,並且e是w+p...而之前大家一直用的z;

這個帶來的提公升我猜還是不小的。

2,層疊attention。

如果把這幾個trick實現在基於rnn的nmt上,會怎麼樣呢?

當然可並行化cnn帶來的效率提公升是很可觀的。

最後,我總覺得,在NMT這類seq2seq的tasks上,encoder端對long sequence的建模貌似沒必要,只要能夠對乙個片段建模就好了。反正有decoder的attention來重新把傳丟的資訊再補充和細化回去。所以attention能夠做好的話,收益很可觀。

decoder端是必須得有乙個language model型別的東西,畢竟要生成乙個句子,不管rnn-nmt還是cnn-nmt,都是這樣的,而且用了teacher forcing。

當然可能理解有錯。

4樓:alexxxx

這個工作延續上他們之前CNN encoder的工作,這次不僅encoder是CNN,decoder也是CNN。結果非常好,BLUE超過了谷歌的GNMT但是inference的速度比GNMT快得多。CNN具備很好的並行性,不像RNN一次只能吞乙個詞。

優化的trick比較多,梯度裁剪、權重歸一等,少用乙個trick恐怕就難以復現結果,這恐怕是由於網路太深。

門控單元的效用我沒看到作者進行分析,我在其他任務的實驗結果顯示它與ReLU差距微小。

Facebook一直想用CNN代替RNN,在文字分類,語言模型和機器翻譯上均有所突破。我很看好CNN,我本人在一些中文序列標註任務中也用CNN替代RNN,取得不錯的效能提公升與速度提公升。

補充一點,他們的模型要在單機八塊卡上訓練37天,有點長。但是GNMT貌似更長(多機環境,用了100+ gpus訓了好幾天)。

補充一點,其實有時候我們並不需要RNN的全域性依賴建模的能力,如其他回答所說,乙個原因是attention機制變相的獲取了全域性資訊,因此encoder端的每個時刻並不需要全域性;另乙個原因是雖然理論上RNN建模能力更強,可惜資料也許不支援這樣長程的學習,還有優化過程。

5樓:高英愷

想法還是很簡單粗暴的,但實現水平一流。

用RNN可以「記住」序列裡的歷史資訊,attention也挺好用,但是不能並行化所以在企業級應用或者資源有限的時候慢的令人髮指;

CNN可以並行化,速度快,可以通過疊加很多層來表達乙個比較大的視窗裡的上下文資訊,但是簡單的拼起來打不過RNN的表現。

那在沒有更好的模型的前提下又想快又想表現好怎麼辦,給CNN上trick!

Trick2: 給CNN的輸出加gate

Trick3: 給CNN都加上residual connection

Trick4: 一層attention不夠那就上疊加的attention

然後就好用了:) 速度是RNN的十倍不說表現還好了一小節。我就是比較好奇為什麼選了torch來實現,是因為caffe2在學術圈不普及,pytorch還不夠靈活麼...

所以總的來說想法不新,trick們也不新,但是實現和實驗起來並不輕鬆。看看那些用來穩定優化的trick就知道作者們煉丹經驗多豐富了。

如何評價Facebook推出的flow js?

type annotation是動態型別語言的發展趨勢之一,並且越來越重要,最直接的優勢 在執行前能確定很多低階錯誤 在模組化中有效確定介面 或者函式簽名 不難麼明顯的優勢 型別化有望作出更好的執行時平台 JIT之類的 更好的IDE支援 auto complete,code refactoring ...

如何評價 Facebook 推出的前端工具鏈 Rome?

滄海 目前來看和Deno要做的一部分事情有點類似,Rome想一次性解決打包 測試 lint format這些常見的工程化解決問題。這裡面任何乙個問題,npm都有現成的包,而且使用者量都很大,而且足夠靈活,當然也足夠複雜,總感覺這個應該是es或者nodejs來推動這個事情,現在Sebastian Mc...

如何評價 Facebook 推出的程式語言 Reason

白羽飄 戰略性mark,防止跟不上時代。話說用bucklewcript編譯成js的話,為啥不用coffee的語法,比js更像ocaml。用了一段時間ts都不寫分號了,囧,試了一下reason,分號不能省,很不適應。 Cosmia Fu 怎麼看都是換了一種語法的ocaml啊,那這樣Haskell的大括...