王悅林
【摘 要】2010年之后AI進(jìn)入高速發(fā)展期。尤其是在深度學(xué)習(xí)領(lǐng)域,新的算法層出不窮,屢次突破前人極限。但在技術(shù)高速發(fā)展的同時(shí),人類(lèi)自己的想象力也給自己造成了困擾,一些不實(shí)的報(bào)道充斥著人工智能機(jī)器人已經(jīng)有了自己的語(yǔ)言能力的宣傳。事實(shí)真的是這樣嗎?本論文通過(guò)剖析目前最強(qiáng)大的BERT技術(shù),來(lái)一層層分析AI處理人類(lèi)的語(yǔ)言的方式,以得出AI尚無(wú)法理解人類(lèi)語(yǔ)言的結(jié)論。
【關(guān)鍵詞】預(yù)訓(xùn)練模型;自注意;變壓器;BERT
中圖分類(lèi)號(hào): H319 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 2095-2457(2019)05-0088-002
1 關(guān)于語(yǔ)言模型
那么AI如何處理一種語(yǔ)言呢?首先看看語(yǔ)言是什么。把語(yǔ)言拆開(kāi),一篇文章由幾個(gè)段落組成,段落里是一句句的話(huà)。句子由詞詞連接而成,而詞語(yǔ)是由字組成的。語(yǔ)言的最小單位就是字。
如何了解語(yǔ)義呢?Harris 在1954 年提出了分布假說(shuō)(distributional hypothesis):上下文相似的詞,其語(yǔ)義也相似。 Firth 在1957 年對(duì)分布假說(shuō)進(jìn)行了進(jìn)一步闡述和明確:詞的語(yǔ)義由其上下文決定(a word is characterized by the company it keeps)。有了這個(gè)假說(shuō),一個(gè)語(yǔ)言學(xué)問(wèn)題就被轉(zhuǎn)化成了數(shù)學(xué)問(wèn)題,可以利用計(jì)算機(jī)分析詞語(yǔ)的上下文,以獲得其語(yǔ)義。
語(yǔ)序的重要性不言而喻?!澳憬o我一千萬(wàn)”和“我給你一千萬(wàn)”的區(qū)別實(shí)在太明顯了,必須知道如何按照正確的語(yǔ)序構(gòu)造一句話(huà)。
語(yǔ)言學(xué)的問(wèn)題轉(zhuǎn)化成數(shù)學(xué)問(wèn)題,就要構(gòu)造一個(gè)關(guān)于語(yǔ)言的模型。首先需要有一個(gè)足夠大的語(yǔ)料庫(kù),然后需要一個(gè)比較深的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),訓(xùn)練出有足夠多參數(shù)的語(yǔ)言模型。這個(gè)模型需要包含所有字詞之間的關(guān)系,也要包含句子之間的關(guān)系。
語(yǔ)言模型生成以后,由于語(yǔ)言中每個(gè)詞每個(gè)字在訓(xùn)練模型的過(guò)程中都已經(jīng)被充分訓(xùn)練,放入一個(gè)新的句子,就可以生成數(shù)學(xué)上的句子向量,會(huì)包含很多維度,512維,或者768維,以包含足夠的語(yǔ)言信息。
深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)只是生成一個(gè)語(yǔ)言模型的前提條件之一。除此以外,還需要更強(qiáng)大的算力,更強(qiáng)大的特征提取器,預(yù)訓(xùn)練模式等等。
2 自注意力機(jī)制
NLP需求,最常用的解決方案就是Encoder Decoder架構(gòu)。先將輸入的序列做編碼操作,生成中間的語(yǔ)義編碼向量,再將向量輸出到解碼器。
注意力機(jī)制是什么?以翻譯舉例,輸入是Tom chase Jerry,輸出是三個(gè)詞依次輸出:湯姆、追逐、杰瑞。在生成三個(gè)中文詞的過(guò)程中,中間的語(yǔ)義編碼是動(dòng)態(tài)的,就是說(shuō)翻譯湯姆時(shí),我們的注意力在Tom這個(gè)詞上多一些,占了60%的權(quán)重,而翻譯追逐時(shí),輸入還是這句英文,但是注意力在Chase這個(gè)詞多一些。這種注意力權(quán)重動(dòng)態(tài)調(diào)整的機(jī)制稱(chēng)作Attention機(jī)制。
self-attention就是輸入的語(yǔ)句和輸出的語(yǔ)句是完全相同的語(yǔ)句,那它的意義在哪里呢?使用這個(gè)機(jī)制,在生成輸出的句子的過(guò)程中,可以發(fā)現(xiàn)每一個(gè)詞和這句話(huà)里面其他詞之間的關(guān)系,這就是新的特征提取器。
特征提取器是什么?NLP里語(yǔ)義就是指詞之間的關(guān)系,而這種關(guān)系就是語(yǔ)言學(xué)上的特征。CNN善于提取圖像里的特征,RNN可以用來(lái)提取每句話(huà)的特征,現(xiàn)在self-attention也可以用來(lái)提取特征。
那么self-attention和RNN相比,強(qiáng)大在哪里呢?RNN的一個(gè)很大的缺陷是無(wú)法并發(fā)運(yùn)行,必須按照從左至右的順序來(lái)跑。另外RNN類(lèi)的LSTM雖然聲稱(chēng)擁有長(zhǎng)短期記憶,但長(zhǎng)度還是有限制。但是self-attention根本沒(méi)有距離的限制,幾十甚至幾百個(gè)字詞之間的關(guān)系仍然能找到。
3 Transformer架構(gòu)
Transformer架構(gòu)是以encoder/decoder架構(gòu)為基礎(chǔ),由六個(gè)或者更多的Transformer塊構(gòu)成。每塊共四層架構(gòu),最下面一層是self-attention,是Transformer里最重要的部分。上面一層是歸一化層、前饋網(wǎng)絡(luò)層、歸一化層。編碼層輸入經(jīng)過(guò)這樣的六個(gè)Transformer塊之后,分別生成不同的語(yǔ)義編碼,傳送給右側(cè)的decoder架構(gòu),最后經(jīng)過(guò)一個(gè)線(xiàn)性回歸線(xiàn)和softmax層,生成最終的結(jié)果。
還有一個(gè)概念就是multi-head,中文叫‘多頭的一個(gè)概念。一個(gè)字或詞輸入到transformer,都是以向量的形式進(jìn)入。假設(shè)這個(gè)向量是512維,當(dāng)它經(jīng)過(guò)六層encoder時(shí),是將這512維分成8份,每份64維分別進(jìn)行計(jì)算。把一個(gè)字詞切成8部分,每份與句子中的其它詞進(jìn)行交互,可謂你中有我,我中有你,交融得非常徹底。
4 BERT
下面詳細(xì)解釋一下BERT的特點(diǎn)。
首先BERT只有encoder沒(méi)有decoder。這很容易理解,因?yàn)锽ERT是一個(gè)通用的預(yù)訓(xùn)練模型,可以接各種下游任務(wù),它的輸出只是文本表示,所以不能使用固定的decoder。
第二點(diǎn),BERT是百層左右的深度神經(jīng)網(wǎng)絡(luò),才能把各種語(yǔ)言學(xué)的特征提取出來(lái)。BERT面世之前,NLP領(lǐng)域的神經(jīng)網(wǎng)絡(luò)基本上只有幾層,Transformer架構(gòu)之后才有可能將NLP網(wǎng)絡(luò)推向幾十上百層。淺層是分析語(yǔ)法,詞法層級(jí)的特征,深層進(jìn)入語(yǔ)義的范疇。
第三點(diǎn),非常重要的一點(diǎn),BERT是一個(gè)預(yù)訓(xùn)練模型,這意味著做NLP項(xiàng)目的起點(diǎn)已經(jīng)大幅提升。在2018年之前,任何一個(gè)NLP項(xiàng)目的起點(diǎn)都是以Word2Vec為代表的詞向量。我們拿到一句話(huà)的詞向量之后,自己構(gòu)建句向量,再實(shí)現(xiàn)下游任務(wù)。構(gòu)建句向量的過(guò)程往往是簡(jiǎn)單的詞向量平均或者加總,難以實(shí)現(xiàn)深層語(yǔ)義的提取,導(dǎo)致下游任務(wù)效果較差。
相信從BERT開(kāi)始,會(huì)出現(xiàn)各種細(xì)分領(lǐng)域的語(yǔ)言模型,效果也會(huì)越來(lái)越好。
第四個(gè)特點(diǎn),BERT是用self-attention作為特征提取器的能力。
第五個(gè)特點(diǎn),就是這個(gè)預(yù)訓(xùn)練模型是直接設(shè)計(jì)了兩個(gè)下游任務(wù)作為預(yù)訓(xùn)練模型的任務(wù),產(chǎn)生的句向量只是副產(chǎn)品。這兩個(gè)任務(wù)一個(gè)是詞級(jí)別的,一個(gè)是句子級(jí)別的。詞任務(wù)就是單詞預(yù)測(cè),隨機(jī)遮擋住15%的詞進(jìn)行預(yù)測(cè),要正確預(yù)測(cè)就需要精準(zhǔn)學(xué)習(xí)每個(gè)詞與其它所有詞的關(guān)系,學(xué)習(xí)詞序。句子級(jí)別的任務(wù)就是預(yù)測(cè)兩句話(huà)是不是上下句。這兩個(gè)下游任務(wù)可以用作知識(shí)的來(lái)源。
第六個(gè)特點(diǎn)就是對(duì)多義詞的識(shí)別。在Word2Vec、GloVe等詞向量的年代,所有的詞向量都是靜態(tài)的,就是訓(xùn)練之后詞向量就不再變化,而固定下來(lái)了。但是一個(gè)詞在不同句子不同語(yǔ)境里詞義是會(huì)有或大或小的變化的,例如apple可以指代水果,也可以指代一家公司,詞向量需要?jiǎng)討B(tài)變化。
BERT在訓(xùn)練過(guò)程中,同一個(gè)詞會(huì)在非常多的語(yǔ)料里出現(xiàn),訓(xùn)練后會(huì)混合所有的含義。使用時(shí)放到一個(gè)句子里,會(huì)根據(jù)上下文把這個(gè)詞的語(yǔ)義提煉出來(lái),表達(dá)在這個(gè)上下文里的具體含義,以解決多義詞的問(wèn)題。
第七個(gè)特點(diǎn)就是雙向語(yǔ)言模型。
5 總結(jié)
我們了解了目前階段智能機(jī)器人的能力,知道了AI是怎么一步步地處理語(yǔ)言數(shù)據(jù),這是目前為止最先進(jìn)的AI處理人類(lèi)語(yǔ)言的方式。在前面的研究中,我們知道AI處理的全部都是數(shù)字,輸入時(shí)將每個(gè)字轉(zhuǎn)化為一個(gè)多維數(shù)學(xué)向量,然后通過(guò)大量數(shù)據(jù)的訓(xùn)練,尋找每個(gè)字之間的關(guān)系。翻譯也好,對(duì)話(huà)也好,對(duì)于AI都是數(shù)字對(duì)數(shù)字的游戲,我們最終看到的語(yǔ)言輸出,只是這些數(shù)字最終通過(guò)字典翻譯回了人類(lèi)的語(yǔ)言。
【參考文獻(xiàn)】
[1]Ashish Vaswani et al. Attention is All You Need. arXiv 1706.03762.
[2]Jonas Gehring et al. Convolutional sequence to sequence learning. arXiv:1705.03122.
[3]Yonghui Wu et al. Googles neural machine translation system: Bridging the gap between human and machine translation. arXiv:1609.08144.
[4]Christian Szegedy et al. Rethinking the inception architecture for computer vision. CoRR, abs/1512.00567.
[5]Jacob Devlin et al. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. arXiv 1810.04805.
[6]Denny Britz et al. Massive exploration of neural machine translation architectures. CoRR, abs/1703.03906.
[7]Yonghui Wu et al. Googles neural machine translation system: Bridging the gap between human and machine translation. arXiv:1609.08144.