• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于sequence to sequence的神經(jīng)機器翻譯模型研究

      2019-12-20 03:03:30侯悅文
      價值工程 2019年33期
      關(guān)鍵詞:機器翻譯深度學(xué)習(xí)

      侯悅文

      摘要:深度學(xué)習(xí)是機器學(xué)習(xí)的技術(shù)和研究領(lǐng)域之一,通過創(chuàng)設(shè)具有階層結(jié)構(gòu)的人工神經(jīng)網(wǎng)絡(luò),在計算機系統(tǒng)中實現(xiàn)人工智能,近幾年越來越為人們所關(guān)注。機器翻譯也可以使用神經(jīng)網(wǎng)絡(luò)中的循環(huán)神經(jīng)網(wǎng)絡(luò)中sequence to sequence架構(gòu)[3]進(jìn)行實驗。本文使用基于循環(huán)神經(jīng)網(wǎng)絡(luò)的編碼器-解碼器模型將一個語言的句子編碼成固定長度向量,并使用一個語言模型來解碼為另一個語言的句子。我基于這個模型構(gòu)建了一個英法的機器翻譯模型,經(jīng)過評估能實現(xiàn)機器翻譯的效果。

      Abstract:? Deep learning is one of the techniques and research fields of machine learning. Artificial intelligence has been realized in computer systems by creating artificial neural networks with hierarchical structure, which has attracted more and more attention in recent years. Machine translation can also use the sequence to sequence architecture[3] in the recurrent neural network in neural networks for test. In this paper, a cyclic neural network based encoder-decoder model is used to encode a language sentence into a fixed length vector and a language model is used to decode a sentence into another language. Based on this model, the author built an English-French machine translation model that was evaluated to achieve machine translation.

      關(guān)鍵詞:機器翻譯;sequence to sequence;深度學(xué)習(xí)

      Key words: machine translation;sequence to sequence;deep learning

      中圖分類號:TP18? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識碼:A? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文章編號:1006-4311(2019)33-0294-03

      1? 定義

      1.1 深度學(xué)習(xí)

      深度學(xué)習(xí)是一種特殊的機器學(xué)習(xí),性能十分高而且非常靈活,能夠表示高階抽象概念的復(fù)雜函數(shù),解決目標(biāo)識別、語音感知和語言理解等人工智能相關(guān)的任務(wù)。相較于傳統(tǒng)的機器學(xué)習(xí),深度學(xué)習(xí)可以實現(xiàn)無監(jiān)督學(xué)習(xí)[1]。而且相較于傳統(tǒng)的機器學(xué)習(xí)在面對大量數(shù)據(jù)時性能有限的問題,深度學(xué)習(xí)可以通過輸入數(shù)據(jù)量的增加或是訓(xùn)練一個規(guī)模更加大的神經(jīng)網(wǎng)絡(luò)來使性能隨之不斷提高,因此在數(shù)據(jù)量巨大的數(shù)字化時代,深度學(xué)習(xí)也得以快速興起。深度學(xué)習(xí)的典型模型有:深度信念網(wǎng)絡(luò)、深度玻爾茲曼機、自動編碼器、卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)等。[4]

      1.2 機器翻譯

      機器翻譯是指利用計算機將一種自然源語言轉(zhuǎn)變?yōu)榱硪环N自然目標(biāo)語言的過程。法國科學(xué)家G.B.阿爾楚尼最早提出了機器翻譯的設(shè)想。機器翻譯發(fā)展至今,從一開始的基于規(guī)則到后來的基于語料庫,即基于統(tǒng)計學(xué)和概率學(xué)[4]翻譯效率和準(zhǔn)確率均有了明顯的提升。

      2? 模型

      2.1 循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)

      循環(huán)神經(jīng)網(wǎng)絡(luò)是一類以序列數(shù)據(jù)為輸入,在序列的演進(jìn)方向進(jìn)行遞歸且所有節(jié)點(循環(huán)單元)按鏈?zhǔn)竭B接的遞歸神經(jīng)網(wǎng)絡(luò)。圖1為一個單向循環(huán)神經(jīng)網(wǎng)絡(luò)。

      要開始整個流程,首先要在零時刻構(gòu)造一個激活值a<0>,a<0>通常為零向量。激活值a<0>通過前向傳播輸出

      a<1>。同時將第一個單詞x<1>輸入在第一層神經(jīng)網(wǎng)絡(luò)中計算后將結(jié)果y<1>輸出。在每次當(dāng)它讀到句中的第二個單詞時,假設(shè)是x<2>,循環(huán)神經(jīng)網(wǎng)絡(luò)不是僅用x<2>就預(yù)測出y<2>,它也會輸入一些來自時間步 1 的信息。具體而言,時間步 1 的激活值就會傳遞到時間步 2。然后,在下一個時間步,循環(huán)神經(jīng)網(wǎng)絡(luò)輸入了單詞x<3>,然后它嘗試預(yù)測輸出了預(yù)測結(jié)果y<3>等等,一直到最后一個時間步,輸入了x,輸出了y。在每一個時間步中,循環(huán)神經(jīng)網(wǎng)絡(luò)傳遞一個激活值到下一個時間步中用于計算。用Wax 來表示管理著從x<1>到隱藏層連接的一系列參數(shù),每個時間步使用的都是相同的參數(shù)Wax。而激活值也就是水平聯(lián)系是由參數(shù)Waa決定。循環(huán)神經(jīng)網(wǎng)絡(luò)的激活函數(shù)通常是tanh,ReLU,sigmoid,softmax等。在t時刻,a和y的計算公式如下

      這些等式定義了循環(huán)神經(jīng)網(wǎng)絡(luò)的前向傳播,通過構(gòu)造a<0>,并輸入x<1.2.3...t>來完成循環(huán)神經(jīng)網(wǎng)絡(luò)從左到右的前向傳播。

      2.2 Sequence to sequence模型架構(gòu)

      最簡單的sequence to sequence模型由encoder和decoder組成。

      2.2.1 Encoder

      Encoder實際上是一個RNN,接受輸入句子的每一個單詞作為輸入并產(chǎn)生一個向量作為輸出。對于每個輸入的單詞,encoder都會輸出一個向量和一個隱藏態(tài)(實際上隱藏態(tài)也是一個向量),并用于下一個時間步的計算。如圖2所示。

      其中GRU為門控制單元,GRU有兩個門,分別為更新門和遺忘門。其作用是通過門來決定當(dāng)從左到右掃描一個句子的時候,這個時機是要更新某個記憶細(xì)胞,還是不更新。GRU單元輸入c,假設(shè)它正好等于a,將這個作為輸入并將x也作為輸入,將這兩個用合適權(quán)重結(jié)合在一起,用tanh計算,算出c,■

      2.2.2 Decoder

      Decoder實際上是另一個RNN,用于接收向量并輸出單詞的序列。對于最簡單形式的Seq2Seq的decoder僅僅使用encoder的最后一個時間步的隱藏態(tài)作為輸入。最后一個時間步的輸出向量有時候被稱為上下文向量,因為它代表整個輸入序列的上下文。上下文向量被用于decoder的第一個時間步的輸入。

      解碼的每一個時間步,decoder接收一個輸入的token和隱藏態(tài),初始的輸入token是特殊單詞start-of-sentence--,初始的輸入隱藏態(tài)是encoder生成的上下文向量。

      3? 實驗

      本次實驗基于sequence to sequence架構(gòu)構(gòu)建了法語-英語的平行句對的翻譯模型并對之進(jìn)行了訓(xùn)練和評估。本次實驗使用的編程語言為Python。Python通過附加的工具可以轉(zhuǎn)換成可以適合科學(xué)和工程代碼的高級語言,速度通常足夠快且靈活。[2]實現(xiàn)模型使用的深度學(xué)習(xí)框架是PyTorch。PyTorch是作為一個Python包提供如下兩個優(yōu)點:①具有強GPU加速度的張量計算(如numpy);②定義的網(wǎng)絡(luò)結(jié)構(gòu)簡單。

      3.1 數(shù)據(jù)預(yù)處理

      用于訓(xùn)練機器翻譯模型的數(shù)據(jù)是許多英語-法語的平行句對。訓(xùn)練數(shù)據(jù)保存在文件中,其中每一行是一個英語-法語的平行句對。英語與法語句子之間使用tab鍵分割,例如:I am cold.? ? J'ai froid.

      本次實驗對語料進(jìn)行了如下的數(shù)據(jù)預(yù)處理工作:首先我將語言中的單詞使用one-hot編碼進(jìn)行表示,即除了單詞索引位為1其他位全為0的向量表示并在開頭添加在結(jié)尾添加來表示開始讀取和結(jié)束讀取。由于一種語言中的單詞非常的多,所以這個使用one-hot編碼的向量非常的長。由于該項目為演示項目,所以本次實驗只使用幾千個單詞作為演示,實際工業(yè)機器翻譯使用的詞表往往有數(shù)萬或十多萬單詞,需要在多張顯卡上并行訓(xùn)練一個星期以上。為了方便將單詞在字符串和索引之間的轉(zhuǎn)換,我維護(hù)一個名為Lang的類,其中維護(hù)了一個將單詞轉(zhuǎn)換為索引的字典(word2index)和縮影轉(zhuǎn)換為單詞的字典(index2word)。為了簡化本文的模型,我將所有法語中的字符轉(zhuǎn)化為ASCII(僅包含英文字符),此外,我還將所有字符轉(zhuǎn)化為小寫,并刪除音標(biāo)符號。我給模型設(shè)定句子的最大長度(應(yīng)為GPU需要并行計算,實際上輸入的每個句子最后都會被預(yù)處理為相同的形式)。為了使計算得到簡化,快速得到一個觀感上可接受的結(jié)果,我設(shè)定最大長度為10個token(分詞后的每個單詞稱為token)。此外我將輸入的句子限定為一些簡單開頭的句子(為了減小模型規(guī)模所采用的強限定),如只使用“I am”或“He is”開頭的句子等。

      3.2 訓(xùn)練

      3.2.1 訓(xùn)練數(shù)據(jù)的準(zhǔn)備

      為了進(jìn)行訓(xùn)練,我會將句對轉(zhuǎn)化為輸入tensor(源語言句子單詞的索引列表)和輸入tensor(目標(biāo)語言句子單詞的索引列表),句子的末尾還會加上特殊的token標(biāo)記句子的結(jié)尾。

      3.2.2 訓(xùn)練模型

      訓(xùn)練時,我將源語言句子作為序列輸入給encoder,并維護(hù)encoder每個時間步的隱藏態(tài)。之后,decoder使用作為第一個時間步的輸入,以及encoder的最后一個時間步的輸出隱藏態(tài)作為decoder的第一個時間步隱藏態(tài)的輸入。

      在訓(xùn)練時,decoder的輸入token實際上是正確的目標(biāo)語言單詞,而不是像訓(xùn)練完成后進(jìn)行翻譯是使用的是上一個時間步decoder輸出的單詞。其中本次實驗調(diào)用的損失函數(shù)為nn.L1Loss。nn.L1Loss函數(shù)的計算方法為取預(yù)測值和真實值的絕對誤差的平均值在本次實驗中預(yù)測值和平均值分別為模型預(yù)測的單詞和正確的單詞,函數(shù)的公式如下。(學(xué)習(xí)率為0.5)。同時我使用了一個輔助函數(shù)來顯示進(jìn)度。整個訓(xùn)練的過程可以簡單的分為如下幾步:①啟動計時器;②初始化優(yōu)化器和訓(xùn)練目標(biāo);③生成訓(xùn)練數(shù)據(jù)(句對);④保持loss到列表并繪圖。在最后繪制結(jié)果時我使用了matplotlib庫來繪圖,使用之前保持的損失列表,繪圖函數(shù)為plot_losses。

      3.2.3 評估

      評估的過程和訓(xùn)練非常像,但是由于模型不知道正確的翻譯結(jié)果是什么,所以解碼的每個時間步使用上一個時間步輸出的token作為該時間步的輸入token。每個時間步都會預(yù)測一個單詞輸出,將這個單詞加入到最終要輸出的源語言句子,當(dāng)預(yù)測到特殊token--表示decoder認(rèn)為該句子翻譯完成,我會將解碼時的計算的注意力權(quán)重保存并用于繪圖。我使用訓(xùn)練集中隨機的句子作為輸入并測試翻譯的結(jié)果,結(jié)果我們可以較為直觀地看出翻譯質(zhì)量。

      4? 實驗過程及結(jié)果

      本文模型使用的隱藏態(tài)hidden_size為256,在正式實驗中一共訓(xùn)練了75000次,花費了48m22s,loss=0.5797。

      本文隨機輸入句子對模型進(jìn)行評估,結(jié)果如圖3。

      可以看出該模型在翻譯時仍有較多的錯誤,其錯誤類型主要為譯文選詞錯誤,譯文和原文意思相反以及詞序不對。原因可能在于在翻譯較短句子時由于模型難以得到所有的詞,而翻譯較長的句子時由于句子太復(fù)雜導(dǎo)致模型在翻譯短句和長句時都會出現(xiàn)錯誤。

      5? 總結(jié)與展望

      本文首先介紹了機器翻譯常用的工具和模型,并使用基于循環(huán)神經(jīng)網(wǎng)絡(luò)的編碼器-解碼器模型實現(xiàn)了法語-英語的翻譯。證明了神經(jīng)網(wǎng)絡(luò)對于自然語言的強大學(xué)習(xí)能力。其優(yōu)點在于成本低、效率高。但是翻譯的結(jié)果中還有一些問題,之后為了解決這些問題我會嘗試引入注意力機制(attention model)。

      參考文獻(xiàn):

      [1]劉建偉,劉媛,羅雄麟.深度學(xué)習(xí)研究進(jìn)展[J].計算機應(yīng)用研究,2014,31(7):1921-1930.

      [2]Oliphant, Travis E . Python for Scientific Computing[J]. Computing in Science & Engineering, 2007, 9(3):10-20.

      [3]Sutskever I , Vinyals O , Le Q V . Sequence to Sequence Learning with Neural Networks[J]. 2014.

      [4]周志華.機器學(xué)習(xí)[M].北京:清華大學(xué)出版社,2016.

      [5]潘登.CNKI翻譯助手和Wordnet分析中國政治詞匯的英譯[J].價值工程,2013,32(04):322-324.

      猜你喜歡
      機器翻譯深度學(xué)習(xí)
      互聯(lián)網(wǎng)+新時代下人機翻譯模式研究
      考試周刊(2017年2期)2017-01-19 09:13:50
      “語聯(lián)網(wǎng)+行業(yè)” 助力中國偉大復(fù)興
      考試周刊(2017年2期)2017-01-19 09:12:54
      有體驗的學(xué)習(xí)才是有意義的學(xué)習(xí)
      電子商務(wù)中基于深度學(xué)習(xí)的虛假交易識別研究
      MOOC與翻轉(zhuǎn)課堂融合的深度學(xué)習(xí)場域建構(gòu)
      大數(shù)據(jù)背景下石油科技翻譯
      智富時代(2016年12期)2016-12-01 17:03:10
      大數(shù)據(jù)技術(shù)在反恐怖主義中的應(yīng)用展望
      深度學(xué)習(xí)算法應(yīng)用于巖石圖像處理的可行性研究
      機器翻譯不可盲取
      基于深度卷積網(wǎng)絡(luò)的人臉年齡分析算法與實現(xiàn)
      軟件工程(2016年8期)2016-10-25 15:47:34
      福清市| 新龙县| 松江区| 灵台县| 洛扎县| 河曲县| 开原市| 钟山县| 合山市| 乌鲁木齐县| 扎鲁特旗| 景东| 海晏县| 日照市| 汪清县| 璧山县| 阿克陶县| 武安市| 抚宁县| 若尔盖县| 保康县| 敦化市| 京山县| 和龙市| 开平市| 绥芬河市| 峨边| 沂南县| 苗栗市| 苍山县| 扎囊县| 湘西| 榆树市| 武隆县| 阿坝| 福建省| 红安县| 巴中市| 蕲春县| 广东省| 冕宁县|