机器翻译中丢掉词向量层会怎样?
論文標(biāo)題:
Neural Machine Translation without Embeddings
論文作者:
Uri Shaham,Omer Levy
論文鏈接:
https://arxiv.org/pdf/2008.09396.pdf
代碼鏈接:
https://github.com/UriSha/EmbeddinglessNMT (待開源)
詞向量
長(zhǎng)期以來(lái),詞向量被認(rèn)為是深度學(xué)習(xí)模型下不可缺少的一部分,從Word Embedding開始,詞向量被普遍認(rèn)為可以建模隱空間中的語(yǔ)言單元的語(yǔ)義。
但是,發(fā)展到如今基于Transformer模型的時(shí)代,詞向量更多地是被默認(rèn)當(dāng)做模型輸入和輸出的一部分。它在當(dāng)今模型下的作用似乎成為了業(yè)內(nèi)普遍接受的規(guī)則。
詞向量在當(dāng)下的使用方法是將離散的語(yǔ)言單元映射為連續(xù)值的向量。比如字典大小為,那么我們就需要的一個(gè)矩陣去表示詞向量。
在輸入和輸出的時(shí)候,詞向量矩陣用于離散單元和模型隱藏層的“過渡”,即表示為,其中是長(zhǎng)度為的輸入句子,用one-hot表示成一個(gè)矩陣,是位置編碼,在輸出的時(shí)候,就是,是模型的最后一層得到的向量。
現(xiàn)在的問題是,能不能去掉輸入和輸出的矩陣?也就是能不能不要詞向量,直接把one-hot送入到模型中。本文通過實(shí)驗(yàn)回答了這個(gè)問題。
本文使用字節(jié)(Byte)編碼表示輸入到模型的語(yǔ)言單元,并且丟掉了傳統(tǒng)的詞向量,在多個(gè)語(yǔ)言的機(jī)器翻譯任務(wù)上進(jìn)行了實(shí)驗(yàn)。
結(jié)果表明,基于Byte編碼的無(wú)詞向量模型和基于BPE編碼、字編碼和Byte編碼的有詞向量模型效果沒有顯著區(qū)別,甚至在一些任務(wù)上還要更優(yōu)。
這啟發(fā)我們進(jìn)一步思考對(duì)于機(jī)器翻譯而言,編碼的作用為何,詞向量的作用為何,我們需不需要打破現(xiàn)在默認(rèn)的詞向量用法?
用Byte編碼丟掉詞向量
簡(jiǎn)單來(lái)說(shuō),本文使用長(zhǎng)度為256的one-hot編碼表示一個(gè)UTF-8字節(jié)(因?yàn)橐粋€(gè)字節(jié)有8位,一共會(huì)產(chǎn)生256個(gè)不同的字節(jié)),這樣的一個(gè)好處是不會(huì)出現(xiàn)OOV。
由于使用的是UTF-8編碼,所以不同的語(yǔ)言會(huì)有不同的長(zhǎng)度,比如英文每個(gè)字就是一個(gè)字節(jié),阿拉伯語(yǔ)每個(gè)字就是兩個(gè)字節(jié),而中文每個(gè)字用三個(gè)字節(jié)表示。
但是這并不影響我們進(jìn)行編碼,只是對(duì)于中文而言,得到的編碼后的句子會(huì)更長(zhǎng)一些。
下圖是一個(gè)使用各編碼方案的例子。使用BPE編碼得到的句子最短,其次是使用字編碼,最后使用Byte編碼會(huì)更長(zhǎng),因?yàn)樵诎⒗Z(yǔ)中,每個(gè)字需要兩個(gè)Byte表示。
對(duì)于一個(gè)句子,在用Byte編碼處理后,可以得到一個(gè)輸入One-hot矩陣,這里是編碼處理后的句子長(zhǎng)度。
這時(shí)候,不再需要把它和詞向量矩陣相乘,只需要再加上位置編碼(如果需要的話),然后再送入模型就行了。對(duì)于輸出也是同樣的操作,這可以總結(jié)為:
實(shí)驗(yàn)
本文在IWSLT上實(shí)驗(yàn),選擇了10個(gè)不同的語(yǔ)言,對(duì)每個(gè)語(yǔ)言,測(cè)試它們和英語(yǔ)互譯的效果,即。數(shù)據(jù)預(yù)處理、基線模型、超參設(shè)置詳見原文。下表是實(shí)驗(yàn)結(jié)果。
首先看同樣是Byte編碼的有詞向量模型和無(wú)詞向量模型。可以看到,無(wú)詞向量模型都好于有詞向量模型,和字編碼(Char)相比,在大多數(shù)情況下Byte+Embed-less也都更好,這說(shuō)明在編碼粒度較細(xì)(Char和Byte)時(shí),不加詞向量效果會(huì)更好。
再來(lái)比較有詞向量的Subword和無(wú)詞向量的Byte。出乎意料的是,在的10組實(shí)驗(yàn)里,有8組都是Byte更好。
但是在的10組實(shí)驗(yàn)里,都是Subword更好,這似乎說(shuō)明英語(yǔ)這種語(yǔ)言更適合使用Subword編碼。這是一個(gè)非常有趣的現(xiàn)象。
小結(jié)
本文探究了基于Byte編碼的無(wú)詞向量機(jī)器翻譯的效果,實(shí)驗(yàn)表明,使用Byte編碼時(shí),丟掉輸入和輸出的詞向量層都結(jié)果沒有太大的影響。
實(shí)驗(yàn)還發(fā)現(xiàn),不同的語(yǔ)言對(duì)編碼似乎非常敏感,尤其是英語(yǔ)比其他語(yǔ)言更加適合subword編碼。未來(lái)可以進(jìn)一步研究不同語(yǔ)言的編碼偏好,以及詞向量在現(xiàn)代深度模型下的作用。
????
現(xiàn)在,在「知乎」也能找到我們了
進(jìn)入知乎首頁(yè)搜索「PaperWeekly」
點(diǎn)擊「關(guān)注」訂閱我們的專欄吧
關(guān)于PaperWeekly
PaperWeekly 是一個(gè)推薦、解讀、討論、報(bào)道人工智能前沿論文成果的學(xué)術(shù)平臺(tái)。如果你研究或從事 AI 領(lǐng)域,歡迎在公眾號(hào)后臺(tái)點(diǎn)擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的机器翻译中丢掉词向量层会怎样?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 亚马逊将无人收银技术从美国大多数商店撤下
- 下一篇: KDD 2020 开源论文 | 稀疏优化