4.主流方法介紹
4.1 BERT模型
????在計算機(jī)視覺處理中,人們越來越多地采用預(yù)訓(xùn)練好的大型網(wǎng)絡(luò)來提取特征,然后再進(jìn)行后續(xù)任務(wù)。目前這種處理方式已經(jīng)是圖像處理中很常見的做法。
????相比之下,自然語言處理目前通常會使用預(yù)訓(xùn)練的詞向量來進(jìn)行后續(xù)任務(wù)。但詞向量是通過淺層網(wǎng)絡(luò)進(jìn)行無監(jiān)督訓(xùn)練,雖然在詞的級別上有著不錯的特性,但卻缺少對連續(xù)文本的內(nèi)在聯(lián)系和語言結(jié)構(gòu)的表達(dá)能力。假如可以通過大量數(shù)據(jù)來預(yù)訓(xùn)練一個大型的神經(jīng)網(wǎng)絡(luò),然后用它來對文本提取特征去做后續(xù)的任務(wù),得到更好的效果,會是自然語言處理方面的大進(jìn)步。其實(shí)這一方向的研究一直在持續(xù),直到今年的早些時候AllenAI提出的ELMo由于其在后續(xù)任務(wù)上的優(yōu)異表現(xiàn)獲得了不小的關(guān)注。此后OpenAI又提出了GPT。預(yù)訓(xùn)練的語言模型是在百度15億詞文本的語料上進(jìn)行的,模型參數(shù)選擇了12層,12head的Transformer結(jié)構(gòu)。
????谷歌提出的BERT就是在GPT的基礎(chǔ)上對預(yù)訓(xùn)練的目標(biāo)進(jìn)行修改,并用更大的模型及更多的數(shù)據(jù)去進(jìn)行預(yù)訓(xùn)練,從而得到目前最好的效果。BERT的全稱是Bidirectional Encoder Representation from Transformers,即雙向Transformer的編碼,因?yàn)榻獯a是不能獲取預(yù)測的信息的。模型的主要創(chuàng)新點(diǎn)在進(jìn)行預(yù)訓(xùn)練的方法上,即用了Masked LM和Next Sentence Prediction兩種方法分別捕捉詞語和句子級別的表示。

4.1.1 Transformer的編碼器
????Transformer所使用的注意力機(jī)制的核心思想是去計算一句話中的每個詞對于這句話中所有詞的相互關(guān)系,然后認(rèn)為這些詞與詞之間的相互關(guān)系在一定程度上反應(yīng)了這句話中不同詞之間的關(guān)聯(lián)性以及重要程度。因此再利用這些相互關(guān)系來調(diào)整每個詞的重要性(權(quán)重)就可以獲得每個詞新的表達(dá)。這個新的表征不但蘊(yùn)含了該詞本身,還蘊(yùn)含了其他詞與這個詞的關(guān)系,因此和單純的詞向量相比是一個更加全局的表達(dá)。Transformer的編碼器結(jié)構(gòu)如圖4.2所示。

????對于“今天天氣不錯,我們?nèi)ス珗@玩吧?!边@句話,單向語言模型在學(xué)習(xí)的時候是從左向右進(jìn)行學(xué)習(xí)的,先給模型看到“今天天氣”兩個詞,然后告訴模型下一個要填的詞是“不錯”。然而單向語言模型有一個欠缺,就是模型學(xué)習(xí)的時候總是按照句子的一個方向去學(xué)的,因此模型學(xué)習(xí)每個詞的時候只看到了上文,并沒有看到下文。更加合理的方式應(yīng)該是讓模型同時通過上下文去學(xué)習(xí),這個過程有點(diǎn)類似于完形填空題。例如:今天天氣 { },我們?nèi)ス珗@玩吧。通過這樣的學(xué)習(xí),模型能夠更好地把握“不錯”這個詞所出現(xiàn)的上下文語境。而BERT對GPT的第一個改進(jìn)就是引入了雙向的語言模型任務(wù)。
4.1.2? MaskLM訓(xùn)練語言模型
????BERT的作者提出了采用MaskLM的方式來訓(xùn)練語言模型,就是在輸入一句話的時候,隨機(jī)地選一些要預(yù)測的詞,然后用一個特殊的符號來代替它們。盡管模型最終還是會看到所有位置上的輸入信息,但由于需要預(yù)測的詞已經(jīng)被特殊符號代替,所以模型無法事先知道這些位置上是什么詞,這樣就可以讓模型根據(jù)所給的標(biāo)簽去學(xué)習(xí)這些地方該填的詞了。
????然而這里還有一個問題,就是我們在預(yù)訓(xùn)練過程中所使用的這個特殊符號,在后續(xù)的任務(wù)中是不會出現(xiàn)的。
????因此,為了和后續(xù)任務(wù)保持一致,作者按一定的比例在需要預(yù)測的詞位置上輸入原詞或者輸入某個隨機(jī)的詞。當(dāng)然,由于一次輸入的文本序列中只有部分的詞被用來進(jìn)行訓(xùn)練,因此BERT在效率上會低于普通的語言模型,作者也指出BERT的收斂需要更多的訓(xùn)練步數(shù)。
????BERT另外一個創(chuàng)新是在雙向語言模型的基礎(chǔ)上額外增加了一個句子級別的連續(xù)性預(yù)測任務(wù)。這個任務(wù)的目標(biāo)也很簡單,就是預(yù)測輸入BERT的兩端文本是否為連續(xù)的文本,作者指出引入這個任務(wù)可以更好地讓模型學(xué)到連續(xù)的文本片段之間的關(guān)系。在訓(xùn)練的時候,輸入模型的第二個片段會以50%的概率從全部文本中隨機(jī)選取,剩下50%的概率選取第一個片段的后續(xù)的文本。
4.1.3 Next Sentence Prediction
很多句子級別的任務(wù)如自動問答(QA)和自然語言推理(NLI)都需要理解兩個句子之間的關(guān)系,譬如上述Masked LM任務(wù)中,經(jīng)過第一步的處理,15%的詞匯被遮蓋。那么在這一任務(wù)中我們需要隨機(jī)將數(shù)據(jù)劃分為等大小的兩部分,一部分?jǐn)?shù)據(jù)中的兩個語句對是上下文連續(xù)的,另一部分?jǐn)?shù)據(jù)中的兩個語句對是上下文不連續(xù)的。然后讓Transformer編碼器來識別這些語句對中,哪些語句對是連續(xù)的,哪些對子不連續(xù)。
BERT的成功還有一個很大的原因來自于模型的體量以及訓(xùn)練的數(shù)據(jù)量。BERT訓(xùn)練數(shù)據(jù)采用了英文的開源語料BooksCropus 以及英文維基百科數(shù)據(jù),一共有33億個詞。同時BERT模型的標(biāo)準(zhǔn)版本有1億的參數(shù)量,與GPT持平,而BERT的大號版本有3億多參數(shù)量,這應(yīng)該是目前自然語言處理中最大的預(yù)訓(xùn)練模型了。
4.2 seq2seq加attention模型
????根據(jù)輸出和輸入序列不同數(shù)量rnn可以有多種不同的結(jié)構(gòu),不同結(jié)構(gòu)自然就有不同的引用場合。one to one 結(jié)構(gòu),僅僅只是簡單的給一個輸入得到一個輸出,此處并未體現(xiàn)序列的特征,例如圖像分類場景。one to many 結(jié)構(gòu),給一個輸入得到一系列輸出,這種結(jié)構(gòu)可用于生產(chǎn)圖片描述的場景。many to one 結(jié)構(gòu),給一系列輸入得到一個輸出,這種結(jié)構(gòu)可用于文本情感分析,對一些列的文本輸入進(jìn)行分類,看是消極還是積極情感。many to many 結(jié)構(gòu),給一些列輸入得到一系列輸出,這種結(jié)構(gòu)可用于翻譯或聊天對話場景,對輸入的文本轉(zhuǎn)換成另外一些列文本。同步 many to many 結(jié)構(gòu),它是經(jīng)典的rnn結(jié)構(gòu),前一輸入的狀態(tài)會帶到下一個狀態(tài)中,而且每個輸入都會對應(yīng)一個輸出,我們最熟悉的就是用于字符預(yù)測了,同樣也可以用于視頻分類,對視頻的幀打標(biāo)簽。
????在 many to many 的兩種模型中,第四和第五種是有差異的,經(jīng)典的rnn結(jié)構(gòu)的輸入和輸出序列必須要是等長,它的應(yīng)用場景也比較有限。而第四種它可以是輸入和輸出序列不等長,這種模型便是seq2seq模型,即Sequence to Sequence。它實(shí)現(xiàn)了從一個序列到另外一個序列的轉(zhuǎn)換。例如Google曾用seq2seq加attention模型來實(shí)現(xiàn)了翻譯功能,類似的還可以實(shí)現(xiàn)聊天機(jī)器人對話模型。經(jīng)典的RNN模型固定了輸入序列和輸出序列的大小,而seq2seq模型則突破了該限制。
4.2.1 attention原理
????Attention的思想就是在解碼階段對輸入中的信息賦予不同權(quán)重。在nlp中就是針對序列的每個時間步輸入。
????傳統(tǒng)RNN基礎(chǔ)模型如圖4. 3所示:

????而比較基礎(chǔ)的加入attention與RNN結(jié)合的模型如圖4.4所示:

????其中是
對應(yīng)的權(quán)重,算出所有權(quán)重后進(jìn)行softmax和加權(quán),得到
。
????可以看出編碼階段相似。但解碼階段使用attention的輸出結(jié)果,
作為了RNN的輸入。
????自Attention機(jī)制提出后,加入attention的Seq2seq模型在各個任務(wù)上都有了提升,所以現(xiàn)在的seq2seq模型指的都是結(jié)合RNN和attention的模型。之后
????Google又提出了解決sequence to sequence問題的transformer模型,用全attention的結(jié)構(gòu)代替了LSTM,在翻譯任務(wù)上取得了更好的成績。
4.3 機(jī)器翻譯有關(guān)的Google Transformer 模型
????圖4.5 為Google Transformer 模型說明,這其中左半部分是 Encoder 右半部分是 Decoder。
????Encoder: 這里面有 N=6 個一樣的layers, 每一層包含了兩個sub-layers. 第一個sub-layer 就是多頭注意力層(multi-head attention layer) 然后是一個簡單的全連接層。 這里還有一個殘差連接 (residual connection), 在這個基礎(chǔ)上, 還有一個標(biāo)準(zhǔn)層。
????Decoder: 這里同樣是有六個一樣的Layer層,但是這里的layer 和encoder 不一樣,這里的layer 包含了三個sub-layers,? 其中有一個self-attention layer, encoder-decoder attention layer 最后是一個全連接層。 前兩個sub-layer 都是基于multi-head attention layer,這里有個特別點(diǎn)就是masking,? masking 的作用就是防止在訓(xùn)練的時候使用未來輸出的單詞。比如訓(xùn)練時,第一個單詞是不能參考第二個單詞的生成結(jié)果的。Masking就會把這個信息變成0,用來保證預(yù)測位置i 的信息只能基于比 i 小的輸出。

4.3.1 該模型中的Attention組成
(1) Scaled dot-product attention
????這個算法是通過queries, keys and values 的形式描述的, 非常抽象。所以我找了一張梅隆大學(xué)的自然語言處理課里的圖(如圖4.6)來解釋, Q(queries), K (keys) and V(Values), 其中 Key and values 一般對應(yīng)的同樣 vector, K=Q。圖里的query vector? 來自 decoder state, key vectors 來自所有的encoder state.具體的操作有三個步驟。 首先每個query-key 會做出一個點(diǎn)乘的運(yùn)算過程;然后會使用soft max 把他們歸一,最后會乘以V (values) 用來當(dāng)做attention vector。如公式4.1所示;


(2)Multi-head attention
????這個是Google提出的新概念,是Attention機(jī)制的完善。不過從形式上看,它其實(shí)就再簡單不過了,就是把Q,K,V通過參數(shù)矩陣映射一下,然后再做Attention,把這個過程重復(fù)做h次,結(jié)果拼接起來就行了,可謂“大道至簡”了。具體來說

????通過上述兩個公式,最后得到一個n*(hdv)的序列。Multi-Head,就是只多做幾次同樣的事情(參數(shù)不共享),然后把結(jié)果拼接。但在Google的論文中,大部分的Attention都是Self Attention,即“自注意力”,或者叫內(nèi)部注意力。

(3)Position Embedding
????上述的模型并不能捕捉序列的順序,換句話說,如果將K,V按行打亂順序(相當(dāng)于句子中的詞序打亂),那么Attention的結(jié)果還是一樣的。這就表明了,到目前為止,Attention模型頂多是一個非常精妙的“詞袋模型”而已。對于時間序列來說,尤其是對于NLP中的任務(wù)來說,順序是很重要的信息,它代表著局部甚至是全局的結(jié)構(gòu),學(xué)習(xí)不到順序信息,那么效果將會大打折扣(比如機(jī)器翻譯中,有可能只把每個詞都翻譯出來了,但是不能組成合理的句子)。
????于是Google提出了Position Embedding,也就是“位置向量”,將每個位置編號,然后每個編號對應(yīng)一個向量,通過結(jié)合位置向量和詞向量,就給每個詞都引入了一定的位置信息,這樣Attention就可以分辨出不同位置的詞了。雖然以前的RNN和CNN,都出現(xiàn)過Position Embedding,也可以捕捉位置信息,但它只作為輔助手段。但純Attention模型,它是模型的核心成分之一。以往的Position Embedding是根據(jù)任務(wù)訓(xùn)練出來的向量。而Google則直接給出了一個構(gòu)造公式;

????這里的意思是將id為p的位置映射為一個d_pos維的位置向量,這個向量的第i個元素的數(shù)值就是PE_i(p) 。Google在論文中說到他們比較過直接訓(xùn)練出來的位置向量和上述公式計算出來的位置向量,效果是接近的。顯然我們更傾向于使用公式構(gòu)造的Position Embedding了。
5.性能評價標(biāo)準(zhǔn)
5.1 BLEU和ROUGE
????BLEU的全名為:bilingual evaluation understudy,即:雙語互譯質(zhì)量評估輔助工具。它是用來評估機(jī)器翻譯質(zhì)量的工具。當(dāng)然評估翻譯質(zhì)量這種事本應(yīng)該由人來做,機(jī)器現(xiàn)在是無論如何也做不到像人類一樣思考判斷的,但是人工處理過于耗時費(fèi)力,所以才有了BLEU算法。
BLEU的設(shè)計思想與評判機(jī)器翻譯好壞的思想是一致的:機(jī)器翻譯結(jié)果越接近專業(yè)人工翻譯的結(jié)果,則越好。BLEU算法實(shí)際上在做的事:判斷兩個句子的相似程度。假如:我想知道一個句子翻譯前后的表示是否意思一致,顯然沒法直接比較,那我就拿這個句子的標(biāo)準(zhǔn)人工翻譯與我的機(jī)器翻譯的結(jié)果作比較,如果它們是很相似的,說明我的翻譯很成功。因此,BLEU去做判斷:一句機(jī)器翻譯的話與其相對應(yīng)的幾個參考翻譯作比較,算出一個綜合分?jǐn)?shù)。這個分?jǐn)?shù)越高說明機(jī)器翻譯得越好。(注:BLEU算法是句子之間的比較,不是詞組,也不是段落)
????ROUGE是一種自動摘要評價方法,現(xiàn)被廣泛應(yīng)用于摘要評測任務(wù)中。ROUGE受到了機(jī)器翻譯自動評價方法BLEU的啟發(fā),不同之處在于,采用召回率作為指標(biāo)?;舅枷胧菍⒛P蜕傻恼c參考摘要的n元組貢獻(xiàn)統(tǒng)計量作為評判依據(jù)。
5.2對話系統(tǒng)評估
????評價生成回復(fù)的質(zhì)量是對話系統(tǒng)的一個重要方面。任務(wù)導(dǎo)向型的對話系統(tǒng)可以基于人工生成的監(jiān)督信號進(jìn)行評估,例如任務(wù)完成測試或用戶滿意度評分等。然而,由于高回復(fù)的多樣性,自動評估非任務(wù)導(dǎo)向的對話系統(tǒng)所產(chǎn)生的響應(yīng)的質(zhì)量仍然是一個懸而未決的問題。目前的方法有以下幾種:
????1)計算 BLEU 值,也就是直接計算 word overlap、ground truth和你生成的回復(fù)。由于一句話可能存在多種回復(fù),因此從某些方面來看,BLEU 可能不太適用于對話評測。
????2)計算 embedding的距離,這類方法分三種情況:直接相加求平均、先取絕對值再求平均和貪婪匹配。
????3)衡量多樣性,主要取決于 distinct-ngram 的數(shù)量和 entropy 值的大小。
????4)進(jìn)行圖靈測試,用 retrieval 的 discriminator 來評價回復(fù)生成。
6.未來發(fā)展趨勢
????深度學(xué)習(xí)已成為對話系統(tǒng)的一項(xiàng)基本技術(shù)。研究人員將神經(jīng)網(wǎng)絡(luò)應(yīng)用于傳統(tǒng)任務(wù)導(dǎo)向型對話系統(tǒng)的不同組成部分,包括自然語言理解、自然語言生成、對話狀態(tài)跟蹤。近年來,端到端的框架不僅在非面向任務(wù)的聊天對話系統(tǒng)中流行,而且在面向任務(wù)的對話系統(tǒng)中逐步流行起來。
????深度學(xué)習(xí)能夠利用大量的數(shù)據(jù),從而模糊了任務(wù)導(dǎo)向型對話系統(tǒng)和非任務(wù)導(dǎo)向型對話系統(tǒng)之間的界限。值得注意的是,目前的端到端模型仍然遠(yuǎn)非完美。盡管取得了上述成就,但這些問題仍然具有挑戰(zhàn)性。接下來,我將討論一些可能的研究方向。
????1.快速適應(yīng)。雖然端到端模型越來越引起研究者的重視,我們?nèi)匀恍枰趯?shí)際工程中依靠傳統(tǒng)的管道(pipeline)方法,特別是在一些新的領(lǐng)域,特定領(lǐng)域?qū)υ挃?shù)據(jù)的收集和對話系統(tǒng)的構(gòu)建是比較困難的。未來的趨勢是對話模型有能力從與人的交互中主動去學(xué)習(xí)。
????2.深度理解?,F(xiàn)階段基于神經(jīng)網(wǎng)絡(luò)的對話系統(tǒng)極大地依賴于大量標(biāo)注好的數(shù)據(jù),結(jié)構(gòu)化的知識庫以及對話語料數(shù)據(jù)。在某種意義上產(chǎn)生的回復(fù)仍然缺乏多樣性,有時并沒有太多的意義,因此對話系統(tǒng)必須能夠更加有效地深度理解語言和真實(shí)世界。
????3.隱私保護(hù)。目前廣泛應(yīng)用的對話系統(tǒng)服務(wù)于越來越多的人。很有必要注意到的事實(shí)是我們使用的是同一個對話助手。通過互動、理解和推理的學(xué)習(xí)能力,對話助手可以無意中隱蔽地存儲一些較為敏感的信息。因此,在構(gòu)建更好的對話機(jī)制時,保護(hù)用戶的隱私是非常重要的。
參考文獻(xiàn)上章已經(jīng)列出;