NLP的巨人肩膀(下)

本文上兩篇系列

  1. NLP的巨人肩膀(上)
  2. NLP的巨人肩膀(中)

4.6 Bidirectional Encoder Representations from Transformers(BERT)

如果要用一句時(shí)下正流行的話來(lái)形容BERT的出現(xiàn)乙埃,這句話大概再恰當(dāng)不過(guò):

一切過(guò)往柳洋, 皆為序章。

2018年的10月11日颜阐,這似乎是個(gè)絕對(duì)平凡的日子(說(shuō)句題外話逗噩,無(wú)獨(dú)有偶掉丽,OpenAI在其博客中放出GPT工作的時(shí)間恰好不多不少是4個(gè)整月前,即2018年6月11日)异雁,然而Google AI的Jacob Devlin和他的合作者們悄悄地在arxiv上放上了他們的最新文章捶障,名為《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》,隨后先是在Twitter上引發(fā)了一波浪潮纲刀,同樣是Google AI團(tuán)隊(duì)的Thang Luong在其Twitter上直言這項(xiàng)工作是一個(gè)劃時(shí)代的工作(原話“A new era of NLP has just begun a few days ago.”)项炼,然后在中文社區(qū)也迅速發(fā)酵,那幾天NLP從(搬)業(yè)(磚)人員的朋友圈基本被BERT刷屏,即便時(shí)至一個(gè)多月后的今日锭部,這一現(xiàn)象也基本不見(jiàn)消退的跡象暂论,幾乎大家見(jiàn)面閑聊開(kāi)口必談BERT,似乎做NLP的大可不必使用華夏光輝燦爛文明之一的“吃過(guò)了嗎拌禾?”取胎,而替換為今日的“BERT跑起來(lái)了嗎?”湃窍,可見(jiàn)一斑闻蛀。

不得不說(shuō),Jacob和他的小伙伴們真是大手筆您市,和4個(gè)月前他的前輩GPT至少一樣觉痛,乃至野心更大,除了GPT刷過(guò)的那些榜之外墨坚,BERT還添加了一項(xiàng)任務(wù)SQuAD(這大概是當(dāng)前NLP最為火熱的任務(wù)之一)秧饮,也許這里的每一項(xiàng)任務(wù)都可能是一個(gè)研究小組的活命本錢,甚至還有可能是某個(gè)評(píng)教授職稱的救命稻草泽篮。然而盗尸,BERT絲毫不放在眼里,直接將它的鐵蹄踏入11項(xiàng)NLP任務(wù)帽撑,將途中目見(jiàn)耳聞所遭遇的一切蕩平無(wú)余泼各,留給在這之前仍在苦苦掙扎于某個(gè)排行榜中的人們無(wú)盡的錯(cuò)愕和唏噓,而BERT似乎不曾心軟和遲疑片刻亏拉。

很快扣蜻,大概過(guò)了不到一個(gè)月,Google AI把他們已經(jīng)預(yù)訓(xùn)練好的BERT模型公布出來(lái)及塘,包括英語(yǔ)的base和large模型莽使,另外針對(duì)其他語(yǔ)言也放出了中文(僅有的一個(gè)非英語(yǔ)的單個(gè)模型)和一個(gè)102種語(yǔ)言的混合語(yǔ)言預(yù)訓(xùn)練模型,這再次觸發(fā)和引爆了NLP界的集體高潮笙僚。

不過(guò)芳肌,為何BERT能如此引人注目,不妨來(lái)一探究竟肋层。私以為亿笤,BERT最主要的幾個(gè)特征分別是

  • 利用了真雙向的Transformer

  • 為了利用雙向信息,改進(jìn)了普通語(yǔ)言模型成為完形填空式的Mask-LM(Mask-Language Model)

  • 利用Next Sentence Prediction任務(wù)學(xué)習(xí)句子級(jí)別信息

  • 進(jìn)一步完善和擴(kuò)展了GPT中設(shè)計(jì)的通用任務(wù)框架栋猖,使得BERT能夠支持包括:句子對(duì)分類任務(wù)净薛、單句子分類任務(wù)、閱讀理解任務(wù)和序列標(biāo)注任務(wù)

為了更深入理解BERT蒲拉,我們分別來(lái)看看他的這些特征肃拜。

首先看看BERT如何使用的雙向Transformer痴腌,其實(shí)很好理解憾股,可以用一句話來(lái)回答為什么BERT使用的是雙向Transformer,那就是:BERT用了Transformer的Encoder框架魄懂。但是辫狼,我想這樣的答案自然是要扣分的,更“求生欲”一點(diǎn)的答案是:因?yàn)镋ncoder中用了Self-attention機(jī)制脱衙,而這個(gè)機(jī)制會(huì)將每一個(gè)詞在整個(gè)輸入序列中進(jìn)行加權(quán)求和得到新的表征,更通俗的說(shuō)法是每一個(gè)詞在經(jīng)過(guò)Self-attention之后,其新的表征將會(huì)是整個(gè)輸入序列中所有詞(當(dāng)然也包括它本身)的加權(quán)求和枢舶,每一個(gè)詞都達(dá)到了“我中有你,你中有我”的境界替久,如果經(jīng)過(guò)更多的transformer的block(意味著經(jīng)過(guò)更多Self-attention)凉泄,那么互相交融的程度將會(huì)更高,類似于BERT這樣深的結(jié)構(gòu)(Base模型是12層蚯根,Large模型是24層)后众,經(jīng)過(guò)所有block后,彼時(shí)颅拦,遑論“我中有你蒂誉,你中有我”了,一切早已是“我在哪里”和“我是誰(shuí)”這樣的哲學(xué)式命題了距帅,也就是連“你我”的界限都早已混沌的狀態(tài)了右锨。因此,說(shuō)BERT是雙向的語(yǔ)言模型結(jié)構(gòu)碌秸,不僅絲毫不過(guò)分绍移,它實(shí)質(zhì)上是一種將序列中每一個(gè)詞之間無(wú)比交融在一塊的模型,更可貴的是讥电,交融的姿勢(shì)還可以多種多樣蹂窖,這可從Large版本BERT的多頭機(jī)制中的Head個(gè)數(shù)多達(dá)16個(gè),體會(huì)出這種交融的程度恩敌,可謂絲絲入扣瞬测。這里僅給出一例,下圖只是兩個(gè)head學(xué)習(xí)到的交融模式潮剪,如果多達(dá)16個(gè)head涣楷,這樣的交融模式還要重復(fù)16次,可見(jiàn)一斑抗碰。

transformer_multi_head.PNG

而相應(yīng)的在ELMo與GPT中狮斗,它們并沒(méi)有用上這種交融模式,也就是它們本質(zhì)上還是一個(gè)單向的模型弧蝇,ELMo稍微好一點(diǎn)碳褒,將兩個(gè)單向模型的信息concat起來(lái)折砸,GPT則只用了單向模型,這是因?yàn)樗鼪](méi)有用上Transformer Encoder沙峻,只用了Decdoer的天生基因決定的睦授,其實(shí),很多人就把這種left-to-right的Transformer框架叫做Decoder摔寨,因?yàn)槭聦?shí)上Decoder就是如此(具體做的時(shí)候需要提前把未來(lái)待生成的詞做好mask去枷,細(xì)節(jié)上通過(guò)上三角矩陣來(lái)實(shí)現(xiàn)),這也是OpenAI把他們的模型叫做"Generative"的原因所在是复。

然而删顶,使用雙向Transformer會(huì)有一個(gè)問(wèn)題,正如上面的分析淑廊,即便對(duì)于Base版BERT來(lái)說(shuō)逗余,經(jīng)過(guò)12個(gè)block,每一個(gè)block內(nèi)部都有12個(gè)多頭注意力機(jī)制季惩,到最后一層的輸出录粱,序列中每個(gè)位置上對(duì)應(yīng)的詞向量信息,早已融合了輸入序列中所有詞的信息画拾,而普通的語(yǔ)言模型中啥繁,是通過(guò)某個(gè)詞的上下文語(yǔ)境預(yù)測(cè)當(dāng)前詞的概率,如果直接把這個(gè)套用到Transformer的Encoder中碾阁,會(huì)發(fā)現(xiàn)待預(yù)測(cè)的輸出和序列輸入已經(jīng)糅合在一塊了输虱,說(shuō)白了就是Encoder的輸入已經(jīng)包含了正確的監(jiān)督信息了,相當(dāng)于給模型泄題了脂凶,如此說(shuō)來(lái)普通語(yǔ)言模型的目標(biāo)函數(shù)無(wú)法直接套用宪睹。那么,如何解決Self-attention中帶來(lái)了表征性能卓越的雙向機(jī)制蚕钦,卻又同時(shí)帶來(lái)了信息泄露的這一問(wèn)題亭病?

BERT的作者很快聯(lián)想到了,如果我把原來(lái)要預(yù)測(cè)整個(gè)句子的輸出嘶居,改為只預(yù)測(cè)這個(gè)句子中的某個(gè)詞罪帖,并且把輸入中這個(gè)詞所在位置挖空,這樣一來(lái)邮屁,豈不就不會(huì)存在泄露真題的問(wèn)題了整袁?Jacob是這樣想的(實(shí)際上是參考了很早之前提出的Cloze問(wèn)題),這位以單人徒手搭建大工程著稱的牛人佑吝,行動(dòng)力超強(qiáng)坐昙,立馬就把這一方法吸收和實(shí)現(xiàn)到BERT中,他們的想法也特別簡(jiǎn)單芋忿。

  • 輸入序列依然和普通Transformer保持一致炸客,只不過(guò)把挖掉的一個(gè)詞用"[MASK]"替換

  • Transformer的Encoder部分按正常進(jìn)行

  • 輸出層在被挖掉的詞位置疾棵,接一個(gè)分類層做詞典大小上的分類問(wèn)題,得到被mask掉的詞概率大小

正是因?yàn)榧恿薽ask痹仙,因此BERT才把這種方法叫做Masked-LM是尔,整個(gè)過(guò)程如下所示

bert_pretrain.png

而這就直接把普通語(yǔ)言模型中的生成問(wèn)題(正如GPT中把它當(dāng)做一個(gè)生成問(wèn)題一樣,雖然其本質(zhì)上也是一個(gè)序列生成問(wèn)題)开仰,變?yōu)橐粋€(gè)簡(jiǎn)單的分類問(wèn)題拟枚,并且也直接解決了Encoder中多層Self-attention的雙向機(jī)制帶來(lái)的泄密問(wèn)題(單層Self-attention是真雙向,但不會(huì)帶來(lái)泄密問(wèn)題众弓,只有多層累加的Self-attention才會(huì)帶來(lái)泄密問(wèn)題)梨州,使得語(yǔ)言模型中的真雙向機(jī)制變?yōu)楝F(xiàn)實(shí)。

不過(guò)田轧,BERT針對(duì)如何做“[MASK]”,做了一些更深入的研究鞍恢,它做了如下處理

  • 選取語(yǔ)料中所有詞的15%進(jìn)行隨機(jī)mask

  • 選中的詞在80%的概率下被真實(shí)mask

  • 選中的詞在10%的概率下不做mask傻粘,而被隨機(jī)替換成其他一個(gè)詞

  • 選中的詞在10%的概率下不做mask,仍然保留原來(lái)真實(shí)的詞

至于為什么要這么做帮掉,BERT也給出了足夠感性的解釋弦悉。對(duì)于要做mask,這個(gè)原因上面已經(jīng)分析了蟆炊,就是為了解決雙向機(jī)制的泄密問(wèn)題而設(shè)計(jì)的稽莉;而為什么還要有一部分概率不做真正的mask,而是輸入一個(gè)實(shí)際的詞涩搓,這樣做的好處是盡量讓訓(xùn)練和finetune的時(shí)候輸入保持一致污秆,因?yàn)閒inetune的時(shí)候輸入中是沒(méi)有“[MASK]”標(biāo)記的,昧甘,對(duì)于保留為原來(lái)的真實(shí)詞良拼,也就是真的有10%的情況下是泄密的(占所有詞的比例為15% * 10% = 1.5%),作者說(shuō)這樣能夠給模型一定的bias充边,相當(dāng)于是額外的獎(jiǎng)勵(lì)庸推,將模型對(duì)于詞的表征能夠拉向詞的真實(shí)表征(個(gè)人理解是:因?yàn)檩斎雽邮谴A(yù)測(cè)詞的真實(shí)embedding,在輸出層中的該詞位置得到的embedding浇冰,是經(jīng)過(guò)層層Self-attention后得到的贬媒,這部分embedding里肯定多多少少依然保留有部分輸入embedding的信息,而這部分的多多少少就是通過(guò)輸入一定比例的真實(shí)詞所帶來(lái)的額外獎(jiǎng)勵(lì)肘习,最終會(huì)使得模型的輸出向量朝輸入層的真實(shí)embedding有一個(gè)偏移际乘,而如果全用mask的話,模型只需要保證輸出層的分類準(zhǔn)確井厌,對(duì)于輸出層的向量表征并不關(guān)心蚓庭,因此可能會(huì)導(dǎo)致最終的向量輸出效果并不好)致讥;最后,BERT對(duì)選中的詞在10%的概率下不做mask器赞,而是被隨機(jī)替換成為一個(gè)其他詞垢袱,這樣做的目的,BERT也給出了他們的解釋:因?yàn)槟P筒恢滥男┰~是被mask的港柜,哪些詞是mask了之后又被替換成了一個(gè)其他的詞请契,這會(huì)迫使模型盡量在每一個(gè)詞上都學(xué)習(xí)到一個(gè)全局語(yǔ)境下的表征,因而也能夠讓BERT獲得更好的語(yǔ)境相關(guān)的詞向量(這正是解決一詞多義的最重要特性)夏醉。其實(shí)這樣做的更感性解釋是爽锥,因?yàn)槟P筒恢滥睦镉锌樱噪S時(shí)都要提心吊膽畔柔,保持高度的警惕氯夷。正如一馬平川的大西北高速公路,通常認(rèn)為都是路線直靶擦,路面狀況好腮考,但如果掉以輕心,一旦有了突發(fā)情況玄捕,往往也最容易出事故踩蔚,魯棒性不高;而反倒是山間小路枚粘,明確告訴了每一位司機(jī)路面隨時(shí)都有坑馅闽,并且沒(méi)法老遠(yuǎn)就提前知道,所以即便老司機(jī)也只能小心翼翼的把穩(wěn)方向盤慢慢的開(kāi)馍迄,這樣做反倒魯棒性更高福也。正所謂《左傳》中所言“居安思危,思則有備柬姚,有備無(wú)患拟杉,敢以此規(guī)”,BERT的這種設(shè)計(jì)又何嘗不是“居安思瘟砍校”的典范搬设,Jacob給出的原文解釋如下:

The Transformer encoder does not know which words it will be asked to predict or which have been replaced by random words, so it is forced to keep a distributional contextual representation of every input token.

此外在引用19中,作者也從直覺(jué)上解釋了這樣做的可行性撕捍,

  • If we used [MASK] 100% of the time the model wouldn’t necessarily produce good token representations for non-masked words. The non-masked tokens were still used for context, but the model was optimized for predicting masked words.
  • If we used [MASK] 90% of the time and random words 10% of the time, this would teach the model that the observed word is never correct.

  • If we used [MASK] 90% of the time and kept the same word 10% of the time, then the model could just trivially copy the non-contextual embedding.

然而可惜的是拿穴,Jacob并沒(méi)有在論文中做更細(xì)致的實(shí)驗(yàn),來(lái)證明這些言論的正確性忧风,因此可能會(huì)存在其他的更優(yōu)的比例組合默色。

除了用上Mask-LM的方法使得雙向Transformer下的語(yǔ)言模型成為現(xiàn)實(shí),BERT還利用和借鑒了Skip-thoughts方法中的句子預(yù)測(cè)問(wèn)題狮腿,來(lái)學(xué)習(xí)句子級(jí)別的語(yǔ)義關(guān)系腿宰,具體做法則是將兩個(gè)句子組合成一個(gè)序列呕诉,當(dāng)然組合方式會(huì)按照下面將要介紹的方式,然后讓模型預(yù)測(cè)這兩個(gè)句子是否是先后近鄰的兩個(gè)句子吃度,也就是會(huì)把"Next Sentence Prediction"問(wèn)題建模成為一個(gè)二分類問(wèn)題甩挫。訓(xùn)練的時(shí)候,數(shù)據(jù)中有50%的情況這兩個(gè)句子是先后關(guān)系椿每,而另外50%的情況下伊者,這兩個(gè)句子是隨機(jī)從語(yǔ)料中湊到一起的,也就是不具備先后關(guān)系间护,以此來(lái)構(gòu)造訓(xùn)練數(shù)據(jù)亦渗。句子級(jí)別的預(yù)測(cè)思路和之前介紹的Skip-thoughts基本一致,當(dāng)然更本質(zhì)的思想來(lái)源還是來(lái)自于word2vec中的skip-gram模型汁尺。

在預(yù)訓(xùn)練階段法精,因?yàn)橛袃蓚€(gè)任務(wù)需要訓(xùn)練:Mask-LM和Next Sentence Prediction,因此BERT的預(yù)訓(xùn)練過(guò)程實(shí)質(zhì)上是一個(gè)Multi-task Learning痴突,具體說(shuō)來(lái)亿虽,BERT的損失函數(shù)由兩部分組成,第一部分是來(lái)自于Mask-LM的單詞級(jí)別的分類任務(wù)苞也,另一部分是句子級(jí)別的分類任務(wù),通過(guò)這兩個(gè)任務(wù)的聯(lián)合學(xué)習(xí)粘秆,可以使得BERT學(xué)習(xí)到的表征既有token級(jí)別的信息如迟,同時(shí)也包含了句子級(jí)別的語(yǔ)義信息。具體的損失函數(shù)如下

L(\theta, \theta_1, \theta_2) = L_1(\theta, \theta_1) + L_2(\theta, \theta_2)

其中\theta是BERT中Encoder部分的參數(shù)攻走,\theta_1是Mask-LM任務(wù)中在Encoder上所接的輸出層中的參數(shù)殷勘,\theta_2則是句子預(yù)測(cè)任務(wù)中在Encoder上接上的分類器中的參數(shù)。因此昔搂,在第一部分的損失函數(shù)中玲销,如果被mask的詞集合為M,因?yàn)樗且粋€(gè)詞典大小|V|上的多分類問(wèn)題摘符,那么具體說(shuō)來(lái)有

L_1(\theta, \theta_1) = - \sum_{i=1}^M \log p(m=m_i|\theta, \theta_1), m_i \in [1,2,...,|V|]

相應(yīng)的在句子預(yù)測(cè)任務(wù)中贤斜,也是一個(gè)分類問(wèn)題的損失函數(shù)

L_2(\theta, \theta_2) = - \sum_{j=1}^N \log p(n=n_i|\theta, \theta_2), n_i \in [IsNext, NotNext]

因此,兩個(gè)任務(wù)聯(lián)合學(xué)習(xí)的損失函數(shù)是

L(\theta, \theta_1, \theta_2) = - \sum_{i=1}^M \log p(m=m_i|\theta, \theta_1) - \sum_{j=1}^N \log p(n=n_i|\theta, \theta_2)

至于具體的預(yù)訓(xùn)練工程實(shí)現(xiàn)細(xì)節(jié)方面逛裤,BERT還利用了一系列策略瘩绒,使得模型更易于訓(xùn)練,比如對(duì)于學(xué)習(xí)率的warm-up策略(和上文提到的ULMFiT以及Transformer中用到的技巧類似)带族,使用的激活函數(shù)不再是普通的ReLu锁荔,而是GeLu,也是用了dropout等這些比較常見(jiàn)的訓(xùn)練技巧蝙砌。此外阳堕,BERT使用的語(yǔ)料比GPT也要大得多(GPT用的是BooksCorpus跋理,800 million個(gè)詞,而BERT除了BooksCorpus之外恬总,還加入了Wikipedia數(shù)據(jù)集前普,2500 million個(gè)詞,總共有3.3 billion個(gè)詞)越驻。

最后汁政,當(dāng)BERT的預(yù)訓(xùn)練完成后,針對(duì)如何利用預(yù)訓(xùn)練好的模型缀旁,遷移到特定任務(wù)背景下记劈,BERT在GPT的基礎(chǔ)上,將這一個(gè)非常重要的工作進(jìn)行了更深入的設(shè)計(jì)并巍,因?yàn)橹虚g的Encoder對(duì)于幾乎所有任務(wù)而言目木,都可以直接利用,因此這部分的設(shè)計(jì)主要分為兩個(gè)方面:輸入層和輸出層懊渡。在輸入層方面刽射,思路和GPT基本類似,如果輸入只有一個(gè)句子的話剃执,則直接在句子的前后添加句子的起始標(biāo)記位和句子的結(jié)束符號(hào)誓禁,在BERT中,起始標(biāo)記都用“[CLS]”來(lái)表示肾档,結(jié)束標(biāo)記符用"[SEP]"表示摹恰,對(duì)于兩個(gè)句子的輸入情況,除了起始標(biāo)記和結(jié)束標(biāo)記之外怒见,兩個(gè)句子間通過(guò)"[SEP]"來(lái)進(jìn)行區(qū)分俗慈。除了這些之外,BERT還用了兩個(gè)表示當(dāng)前是句子A還是句子B的向量來(lái)進(jìn)行表示遣耍,對(duì)于句子A來(lái)說(shuō)闺阱,每一詞都會(huì)添加一個(gè)同樣的表示當(dāng)前句子為句子A的向量,相應(yīng)的舵变,如果有句子B的話酣溃,句子B中的每一個(gè)詞也都會(huì)添加一個(gè)表示當(dāng)前句子為句子B的向量。當(dāng)然纪隙,和Transformer中一樣救拉,為了引入序列中詞的位置信息,也用了position embedding瘫拣,因此亿絮,最終的輸入層大概是

bert_embedding_layer.PNG

除了輸入層要盡量做到通用之外,根據(jù)不同任務(wù)設(shè)計(jì)不同的輸出層也變得尤為重要,BERT主要針對(duì)四類任務(wù)考慮和設(shè)計(jì)了一些非常易于移植的輸出層派昧,這四類任務(wù)分別是:?jiǎn)蝹€(gè)序列文本分類任務(wù)(SST-2, CoLA)黔姜、兩個(gè)序列文本分類任務(wù)(MNLI, QQP, QNLI, STS-B, MRPC, RTE)、閱讀理解任務(wù)(SQuAD)和序列標(biāo)注任務(wù)(CoNLL-2003 NER)蒂萎,句子或答案選擇任務(wù)(SWAG等秆吵,這里我把SWAG單獨(dú)劃分一個(gè)類別,因?yàn)榫唧w做法和普通的文本分類任務(wù)不完全一致五慈,只不過(guò)BERT因?yàn)樗推渌诸惾蝿?wù)都只需要利用"[CLS]"位置的向量纳寂,所以才把它一起歸入到句子對(duì)分類任務(wù)中)。

對(duì)于單序列文本分類任務(wù)和序列對(duì)的文本分類任務(wù)使用框架基本一致泻拦,只要輸入層按照上面提到的方法做好表示即可毙芜,然后這兩個(gè)分類任務(wù)都是利用BERT的Encoder最后一層的第一個(gè)時(shí)刻“[CLS]”對(duì)應(yīng)的輸出作為分類器的輸入,文中的解釋是這個(gè)時(shí)刻可以得到輸入序列的全局表征争拐,并且因?yàn)楸O(jiān)督信號(hào)從這個(gè)位置反饋給模型腋粥,因而實(shí)際上在finetune階段也可以使得這一表征盡量?jī)A向于全局的表征。當(dāng)然架曹,即便如此隘冲,同樣也是可以通過(guò)一些很簡(jiǎn)單易行的辦法將其他時(shí)刻甚至其他層內(nèi)的表征拿來(lái)用的,個(gè)人認(rèn)為并不需要局限在這一個(gè)時(shí)刻上的表征绑雄。另外展辞,finetune階段,在BERT Encoder基礎(chǔ)上万牺,這些分類任務(wù)因?yàn)橹恍枰右粋€(gè)全連接層纵竖,因此增加的參數(shù)只有H \times K,其中H是Encoder輸出層中隱狀態(tài)的維度杏愤,K是分類類別個(gè)數(shù)。

對(duì)于SQuAD 1.1任務(wù)來(lái)說(shuō)已脓,需要在給定的段落中找到正確答案所在的區(qū)間珊楼,這段區(qū)間通過(guò)一個(gè)起始符與終止符來(lái)進(jìn)行標(biāo)記,因此只需要預(yù)測(cè)輸入序列中哪個(gè)token所在位置是起始符或終止符即可度液,因此這個(gè)過(guò)程只需要維護(hù)兩個(gè)向量厕宗,分別是起始符的向量和終止符的向量,不過(guò)與其說(shuō)是向量堕担,還不如說(shuō)是兩個(gè)對(duì)應(yīng)的全連接層已慢,只不過(guò)這兩個(gè)全連接有些特殊,在這兩個(gè)全連接層中霹购,輸入層的節(jié)點(diǎn)個(gè)數(shù)為BERT Encoder輸出的節(jié)點(diǎn)個(gè)數(shù)佑惠,也就是H,而這兩個(gè)全連接層的輸出層都只有一個(gè)節(jié)點(diǎn),而這兩個(gè)全連接層的作用就是要把序列輸出的每一個(gè)向量通過(guò)這兩個(gè)全連接層映射為一個(gè)實(shí)數(shù)值膜楷,可以等同于打分旭咽,然后再根據(jù)這個(gè)打分在序列的方向上選取最大值作為起始符和終止符,因此這個(gè)過(guò)程實(shí)際上只增加了H \times 2的參數(shù)量赌厅,可謂比分類任務(wù)的參數(shù)增加還要少(至少和2分類任務(wù)的參數(shù)一致)穷绵。這里有兩個(gè)需要注意的地方:其一,無(wú)論對(duì)于起始符和終止符也好特愿,它們的判斷和普通的分類任務(wù)不一樣仲墨,不是直接針對(duì)每一個(gè)token進(jìn)行一個(gè)是否是起始符的分類(如果是這樣的話,參數(shù)量要增加H \times 4)揍障,這里有些類似于在全體輸入序列上進(jìn)行排序的一個(gè)工作目养,因此針對(duì)起始符的判斷來(lái)講只需要一個(gè)H \times 1的全連接就可以了。第二個(gè)需要注意的是亚兄,訓(xùn)練的時(shí)候無(wú)須擔(dān)心終止符是否在起始符后面這一點(diǎn)混稽,因?yàn)榧幢隳P陀?xùn)練的時(shí)候預(yù)測(cè)是終止符在起始符前面了,這一錯(cuò)誤現(xiàn)象會(huì)通過(guò)損失函數(shù)反饋給模型审胚,然而在做inference的時(shí)候匈勋,就必須要保證終止符一定要在起始符后面這一點(diǎn)了。

BERT也考慮了如何在序列標(biāo)注任務(wù)上進(jìn)行finetune膳叨,對(duì)于序列中的每一個(gè)token而言洽洁,實(shí)際上就是一個(gè)分類任務(wù),只不過(guò)和前面提到的普通分類任務(wù)不一樣的地方在于菲嘴,這里的分類是需要針對(duì)序列中的每一個(gè)詞做分類饿自,參數(shù)增加在H \times Kj,這里的K是序列標(biāo)注中標(biāo)注的種類個(gè)數(shù)龄坪。

最后對(duì)于SWAG(Situations Adversarial Generations)任務(wù)來(lái)講昭雌,因?yàn)樾枰诮o定一個(gè)句子后,從四個(gè)候選句子中選擇一個(gè)最有可能是該句子的下一個(gè)句子健田,這里面通常包含了一些常識(shí)推理烛卧。BERT的做法是將前置句子和四個(gè)候選句子分別進(jìn)行組合成一個(gè)句子對(duì),并按照之前討論過(guò)的方法輸入到Encoder妓局,這樣便可以得到四個(gè)pair的句子表征总放,然后只需要維護(hù)一個(gè)向量(或者說(shuō)是一個(gè)多到1的全連接層),便可以給每一個(gè)候選句子進(jìn)行打分好爬,從而得到四個(gè)候選句子中最有可能是下一個(gè)的句子局雄。這個(gè)全連接只需要增加H \times 1的參數(shù)量,這一點(diǎn)和SQuAD 1.1任務(wù)中使用BERT的情況類似存炮,此外炬搭,這種做法和GPT對(duì)于Question Selection的做法也比較類似蜈漓,因此理論上應(yīng)該也是可以應(yīng)用到WikiQA這種數(shù)據(jù)集上的,finetune階段同樣只需要增加H \times 1的參數(shù)量尚蝌。

bert_finetune_model.PNG

最后迎变,我們?cè)俅慰偨Y(jié)下BERT的幾個(gè)主要特點(diǎn):

  • Transformer Encoder因?yàn)橛蠸elf-attention機(jī)制,因此BERT自帶雙向功能

  • 因?yàn)殡p向功能以及多層Self-attention機(jī)制的影響飘言,使得BERT必須使用Cloze版的語(yǔ)言模型Masked-LM來(lái)完成token級(jí)別的預(yù)訓(xùn)練

  • 為了獲取比詞更高級(jí)別的句子級(jí)別的語(yǔ)義表征衣形,BERT加入了Next Sentence Prediction來(lái)和Masked-LM一起做聯(lián)合訓(xùn)練

  • 為了適配多任務(wù)下的遷移學(xué)習(xí),BERT設(shè)計(jì)了更通用的輸入層和輸出層

然后姿鸿,我們?cè)賮?lái)看看BERT的工作都站在了哪些“巨人肩膀”上:

  • 針對(duì)第一點(diǎn)谆吴,雙向功能是Transformer Encoder自帶的,因此這個(gè)“巨人肩膀”是Transformer

  • 第二點(diǎn)中Masked-LM的巨人肩膀是語(yǔ)言模型苛预,CBOW以及Cloze問(wèn)題

  • 第三點(diǎn)中Next Sentence Prediction的“巨人肩膀”是Skip-gram句狼,Skip-thoughts和Quick-thoughts等工作

  • 第四點(diǎn)中,對(duì)輸入層和輸出層的改造热某,借鑒了T-DMCA以及GPT的做法

再來(lái)看看預(yù)訓(xùn)練使用的數(shù)據(jù)方面腻菇,ELMo使用的是1B Word Benchmark數(shù)據(jù)集,詞數(shù)為10億昔馋,然而句子間的順序是隨機(jī)打亂的筹吐,無(wú)法建模句子級(jí)別的依賴關(guān)系,所以GPT和BERT都棄用這個(gè)數(shù)據(jù)集秘遏;GPT使用的是BooksCorpus丘薛,詞數(shù)為8億;BERT除了使用BooksCorpus之外邦危,還加入了25億級(jí)別的Wikipedia數(shù)據(jù)集洋侨,因此整體使用的數(shù)據(jù)集為33億個(gè)詞【腧剑可見(jiàn)BERT使用的數(shù)據(jù)集是最大的希坚。

再來(lái)看看模型方面,ELMo使用的是一個(gè)Bi-LSTM結(jié)構(gòu)陵且,輸入層和輸出層使用CNN來(lái)進(jìn)行建模裁僧。而GPT使用了12個(gè)block,隱藏層節(jié)點(diǎn)數(shù)為768滩报,多頭為12,這也是BERT的base版本(因?yàn)閎ase版本就是為了跟GPT做對(duì)比的)播急,參數(shù)量按照BERT base版本估計(jì)為110M脓钾。而BERT再一次把模型變得更大了,使用24個(gè)block桩警,并且隱藏層節(jié)點(diǎn)數(shù)與多頭都有相應(yīng)擴(kuò)大可训,按照J(rèn)acob在論文中自己的說(shuō)法,言下之意似乎想要表明他們?cè)O(shè)計(jì)的這個(gè)模型應(yīng)該是有史以來(lái)的最大的模型之一。

在計(jì)算資源比拼方面握截,GPT模型在8塊GPU上預(yù)訓(xùn)練了一個(gè)月時(shí)間(參數(shù)規(guī)模和GPT差不多的BERT base版本飞崖,在16塊TPU上只花了4天時(shí)間,為此BERT在論文中提到這個(gè)訓(xùn)練時(shí)間的時(shí)候谨胞,還不失時(shí)機(jī)的給它們家的TPU放了個(gè)鏈接固歪,打了一波廣告),對(duì)于參數(shù)規(guī)模為GPT三倍之多的BERT large版本胯努,在64塊TPU上訓(xùn)練耗時(shí)也依然達(dá)到4天之久牢裳。

bert_gpt_elmo.PNG

因此,總結(jié)來(lái)看叶沛,BERT的出現(xiàn)既踩在了一眾前輩們的“巨人肩膀”上蒲讯,通過(guò)精心設(shè)計(jì)和一些訓(xùn)練技巧造出了一個(gè)龐大的模型,最后又舍得花錢砸下巨大資源灰署,給眾人上演了一場(chǎng)炫目無(wú)比的煙花秀判帮。所以,與其說(shuō)BERT帶來(lái)了一次翻天覆地的革新溉箕,不如說(shuō)BERT團(tuán)隊(duì)糅合能力超群晦墙,以及還有一點(diǎn)也非常重要:有錢。

然而约巷,和普通的煙花秀不一樣偎痛,普通煙花易逝,而BERT說(shuō)不定可真是將一朵煙花怒放在每一位NLP算法人員心中独郎,它先是讓我們看了一場(chǎng)橫掃11項(xiàng)任務(wù)的表演秀(也是實(shí)力秀)踩麦,宣告世人這場(chǎng)煙花不一般,而更為可貴的是氓癌,當(dāng)眾人驚魂甫定之時(shí)谓谦,很快,BERT又把他們排練煙花秀的一切設(shè)備(模型)全都公之于眾贪婉,甚至把排練得到的效果最好的布景(預(yù)訓(xùn)練參數(shù))和點(diǎn)火器(finetune超參數(shù))也全都奉獻(xiàn)了出來(lái)反粥,似乎愿景也足夠偉大:讓每個(gè)人都可以上演一場(chǎng)自己的煙花秀,將預(yù)訓(xùn)練好的模型在復(fù)雜任務(wù)上簡(jiǎn)單進(jìn)行一次finetune疲迂,便立馬能夠得到一個(gè)非常高的baseline才顿。

沉寂了五年之久的NLP界,似乎迎來(lái)了一個(gè)新的時(shí)代尤蒿。

4.7 如何爬上梯子的第二級(jí)

預(yù)訓(xùn)練語(yǔ)言模型的優(yōu)勢(shì)在于

  • 近乎無(wú)限量的優(yōu)質(zhì)數(shù)據(jù)

  • 無(wú)需人工標(biāo)注

  • 一次學(xué)習(xí)多次復(fù)用

  • 學(xué)習(xí)到的表征可在多個(gè)任務(wù)中進(jìn)行快速遷移

問(wèn)題是如何利用這些預(yù)訓(xùn)練好的模型郑气,Google們已經(jīng)給我們提供巨人的肩膀了,那“梯子”在哪呢腰池?我們?cè)趺磁郎先ミ@些“巨人肩膀”尾组?也就是如何使用這些預(yù)訓(xùn)練好的模型忙芒。一般來(lái)說(shuō),可以有三種方式來(lái)使用讳侨。它們分別是:

  • 將預(yù)訓(xùn)練模型當(dāng)做一個(gè)特征提取器呵萨,直接將預(yù)訓(xùn)練模型的輸出層去掉,然后使用去掉輸出層之后的最后一層輸出作為特征輸入到我們自己精心設(shè)計(jì)好的Task-specific模型中去跨跨,在訓(xùn)練過(guò)程中潮峦,作為特征提取器的部分(比如BERT Encoder)的參數(shù)是不變的。另外歹叮,特征提取器并不一定只能用最后一層的輸出向量跑杭,也可以使用中間的某些層,甚至也可以借鑒ELMo的做法咆耿,在各層之間利用一個(gè)softmax來(lái)學(xué)習(xí)各自的權(quán)值德谅,或者也可以嘗試一些更為復(fù)雜的各層組合方式;

  • 將預(yù)訓(xùn)練模型整體接入Task-specific模型萨螺,繼而重新在新的數(shù)據(jù)集上整體重新訓(xùn)練窄做,當(dāng)然訓(xùn)練技巧可以有很多種,比如ULMFiT的三角學(xué)習(xí)率和逐層解凍或者是Transformer的warmup策略(上文都有提到)慰技,這些訓(xùn)練技巧非常重要椭盏,需要好好把控,否則很容易學(xué)崩了吻商,甚至讓原有預(yù)訓(xùn)練語(yǔ)言模型的優(yōu)勢(shì)都被新的finetune抹去了掏颊,因此需要實(shí)驗(yàn)設(shè)計(jì)一個(gè)比較好的finetune策略。此外艾帐,和特征提取器的接入方式類似乌叶,預(yù)訓(xùn)練模型的接入不一定只能接最后層的輸出,可以嘗試更復(fù)雜的接入方式柒爸,比如DenseNet准浴;

  • 和上面兩種極端情況相反,或者說(shuō)綜合了上面兩種方式的方案捎稚,即保留預(yù)訓(xùn)練模型的一部分乐横,另外一部分則和Task-specific模型一起finetune,在某些情況下今野,這可能是個(gè)比較合理的選擇葡公,比如預(yù)訓(xùn)練模型比較深(NLP模型通常來(lái)講比CV模型都要淺很多),以及訓(xùn)練數(shù)據(jù)不算太多的情況条霜,這個(gè)時(shí)候一方面要保證預(yù)訓(xùn)練模型在大規(guī)模語(yǔ)料上曾經(jīng)學(xué)習(xí)到的表征催什,另一方面因?yàn)橛忠鲂聰?shù)據(jù)下的遷移,但是數(shù)據(jù)量比較少蛔外,重新finetune整個(gè)模型可能不太合適蛆楞,容易導(dǎo)致模型的魯棒性不高,那么似乎選擇最后的一些層進(jìn)行選擇性的finetune會(huì)是比較好的方案夹厌。

上面這三種方案豹爹,既包括了BERT所言的feature-based使用方法, 也包括了BERT的finetune方法矛纹。另外GPT和BERT也給我們提供了很好的輸入層與輸出層通用包臂聋,再加上一些訓(xùn)練技巧拔恰,一般的NLP任務(wù)下應(yīng)該是足夠應(yīng)付了啡氢。

然而,GPT和BERT即便刷新了十多項(xiàng)NLP任務(wù)署海,但似乎各自默契的都不曾嘗試過(guò)在生成問(wèn)題中大展身手采够,比如二者的主要征戰(zhàn)沙場(chǎng)GLUE(General Language Understanding Evaluation)連名字中都直指這個(gè)“膠水”排行榜主要就是語(yǔ)言理解問(wèn)題肄方,除了GLUE外(GPT和BERT都去掉了GLUE的WNLI數(shù)據(jù)集,因此他們刷的GLUE是8個(gè)數(shù)據(jù)集)蹬癌,GPT額外刷過(guò)的數(shù)據(jù)集有4個(gè):SNLI, SciTail, RACE和Stroy Cloze权她,其中SNLI和SciTail都是自然語(yǔ)言推斷問(wèn)題,本質(zhì)上是一個(gè)句子級(jí)別的分類問(wèn)題逝薪,RACE和Stroy Cloze是question answering或閱讀理解式的問(wèn)題隅要,本質(zhì)上可以認(rèn)為分別是一個(gè)token級(jí)別的分類以及句子級(jí)別的打分排序問(wèn)題;而BERT額外刷過(guò)的三個(gè)數(shù)據(jù)集中SQuAD本質(zhì)上是一個(gè)token級(jí)別的分類問(wèn)題董济,NER也是如此步清,SWAG則是從候選句子中選擇正確的推斷,是一個(gè)句子級(jí)別的打分排序問(wèn)題虏肾。GPT刷了12項(xiàng)數(shù)據(jù)集(打破其中9項(xiàng)紀(jì)錄)廓啊,BERT刷了11項(xiàng)數(shù)據(jù)集(打破其中11項(xiàng)),然而無(wú)一例外的這些數(shù)據(jù)集全是Natural Language Understanding領(lǐng)域的問(wèn)題询微,而對(duì)于NLP中另一個(gè)龐大領(lǐng)域Natural Language Generation崖瞭,不約而同的選擇了放棄,是未曾注意撑毛,還是選擇視而不見(jiàn)书聚,背后的原因我無(wú)從猜測(cè)。不過(guò)藻雌,無(wú)論GPT和BERT是什么原因沒(méi)有選擇在生成問(wèn)題中去嘗試雌续,私以為,想要把GPT和BERT的預(yù)訓(xùn)練模型遷移到生成問(wèn)題中胯杭,大約應(yīng)該也不是一件非常困難的事情驯杜,首先GPT本質(zhì)上就是一個(gè)生成模型(從其名字的Generative中就可以看出),而BERT雖然使用的是Encoder做个,但是把它改造成一個(gè)Decoder應(yīng)該不是什么特別困難的事情鸽心,因?yàn)楸举|(zhì)上Encoder和Decoder基本框架相同滚局,只不過(guò)Decoder需要做好兩件事情,第一件事情是Decoder中也有Self-attention層顽频,和Encoder中的Self-attention不同的是藤肢,Decoder需要做好mask,以避免attention到未來(lái)待預(yù)測(cè)的詞上去糯景;第二件事情需要做的是Decoder中有一個(gè)交叉attention嘁圈,以獲取來(lái)自于Encoder側(cè)的信息。但是蟀淮,這里還涉及到Encoder-Decoder整體這種seq2seq的框架是否要保留的問(wèn)題最住,如果使用GPT使用的T-DMCA這種僅用Decoder做生成問(wèn)題的,那么改造相對(duì)會(huì)更易行怠惶,如果要保留Encoder-Decoder這種雙結(jié)構(gòu)涨缚,那么改造可能會(huì)相對(duì)復(fù)雜一些。

樂(lè)觀一點(diǎn)策治,如果這種改造非常成功(似乎已經(jīng)具備有充分的理由來(lái)相信這一點(diǎn))仗岖,那么NLP似乎會(huì)迎來(lái)一個(gè)階段性的大一統(tǒng)時(shí)代:也就是一個(gè)基本模型做到一個(gè)閉環(huán)。其流程是:從文本到語(yǔ)義表征览妖,再?gòu)恼Z(yǔ)義表征重新生成文本轧拄。這樣看來(lái),至少在NLP領(lǐng)域(CV等其他AI領(lǐng)域讽膏,留給各位看官自行腦洞好了)檩电,未來(lái)大約還是很值得期待的一件事情。

nlp_nlu_nlg.jpeg

那么以谷歌為代表的這些工作府树,會(huì)不會(huì)像五年以前一樣俐末,也即將開(kāi)啟一個(gè)新的時(shí)代呢?能不能讓AI成功爬上第二級(jí)梯子呢奄侠?讓我們拭目以待卓箫。

四. 后現(xiàn)代啟示錄?

回過(guò)頭來(lái)看此文垄潮,通篇大體都是反觀AI兒子理解他人說(shuō)的話寫的書烹卒,無(wú)非都是些人類母親的育兒筆記,徒當(dāng)以史為鑒可以知興替罷了弯洗。

實(shí)事求是的說(shuō)旅急,人類母親的教學(xué)成果目前看來(lái),至少還不算太賴牡整,寄養(yǎng)在各大公司(以Google, Facebook和OpenAI等為代表)的AI兒子們也開(kāi)始理解母親的一些稍微簡(jiǎn)單些的指令藐吮,甚至也能咿咿呀呀的開(kāi)口說(shuō)話了,不能不說(shuō)這十多年的AI成長(zhǎng)大家有目共睹。但成果畢竟屬于過(guò)去谣辞,望子成龍的人類母親對(duì)于兒子的今后該如何安排迫摔?畢竟兒子以后還要上清北常青藤,畢竟七大姑八大姨的飯桌上泥从,人類母親還指望著兒子來(lái)長(zhǎng)臉的不是攒菠?不過(guò)非要問(wèn)人類母親的育兒計(jì)劃,首先那些有權(quán)有勢(shì)的托兒所所長(zhǎng)們(以Google, Facebook和OpenAI等為代表)如果真雄心萬(wàn)丈也一定不愿透露半點(diǎn)風(fēng)聲歉闰,其次可能人類母親自己也弄的不是太清楚,無(wú)非是走一步瞧一步罷了卓起。然而沒(méi)什么能夠阻擋人類對(duì)于未來(lái)的好奇心和敬,追本溯源按圖索驥之下,說(shuō)不定也能窺的一些蛛絲馬跡戏阅。

因而昼弟,無(wú)妨抬抬頭看看星空,也看看未來(lái)奕筐,以期AI的今后也能刷刷朋友圈舱痘,感嘆一下年華易逝,甚而至于能體會(huì)得到人類母親養(yǎng)兒育女的艱難离赫,哪怕只有絲毫芭逝,大概人類母親也就不枉費(fèi)了一片可能和人類歷史一樣悠久的望子成龍之心。閑話少敘渊胸,讓我們開(kāi)開(kāi)腦洞旬盯,大言不慚的看看今后NLP的一些可能性。只不過(guò)我人微言輕翎猛,暫且幻想一下皇帝的金鋤頭吧胖翰。

一般來(lái)說(shuō),語(yǔ)言學(xué)流派大約可以分為四個(gè)流派:歷史比較語(yǔ)言學(xué)切厘、結(jié)構(gòu)主義語(yǔ)言學(xué)萨咳、轉(zhuǎn)換-生成語(yǔ)言學(xué)和系統(tǒng)功能語(yǔ)言學(xué)這四個(gè)大的學(xué)派,其中歷史比較語(yǔ)言學(xué)年代比較久遠(yuǎn)了疫稿,注重搜集多種語(yǔ)言歷史資料培他,通過(guò)對(duì)比歸納總結(jié)等等方法,進(jìn)而理解語(yǔ)言的演化和發(fā)展歷程遗座,歷史比較語(yǔ)言學(xué)的主要貢獻(xiàn)在于它把語(yǔ)言學(xué)從其他學(xué)科里抽離出來(lái)成為一門獨(dú)立的學(xué)科靶壮。而結(jié)構(gòu)主義語(yǔ)言學(xué)(大約興起于20世紀(jì)20年代左右)的開(kāi)山鼻祖索緒爾(同時(shí)他也是現(xiàn)代語(yǔ)言學(xué)之父),對(duì)于語(yǔ)言的理解员萍,他有一個(gè)非常經(jīng)典的類比腾降,他認(rèn)為語(yǔ)言就像是一盤象棋,棋盤上的每一個(gè)棋子都有特定的游戲規(guī)則碎绎,棋子只不過(guò)是這些特定游戲規(guī)則的一個(gè)實(shí)物標(biāo)記而已螃壤,如果某天弄丟了某一個(gè)棋子抗果,我們立馬可以拿任何一個(gè)小物件來(lái)代替這個(gè)棋子的功能,只要游戲規(guī)則不變奸晴,那么棋局依然能夠照常進(jìn)行冤馏,棋子替換前后基本不會(huì)有任何差別,而索緒爾則認(rèn)為語(yǔ)言里的基本單位諸如詞語(yǔ)習(xí)語(yǔ)等等都只不過(guò)是棋盤上的棋子(signifiant寄啼,能指)逮光,重要的不是棋子本身,而是棋子背后對(duì)應(yīng)的一整套規(guī)則墩划,也就是語(yǔ)言里的各種結(jié)構(gòu)或約定俗稱的指代或用法(signifié涕刚,所指)。象棋的整個(gè)規(guī)則便是我們所使用的一整套語(yǔ)言系統(tǒng)乙帮,比如象棋的規(guī)則便是我們的漢語(yǔ)杜漠,而國(guó)際象棋的規(guī)則便是英語(yǔ),兩種象棋各自使用的棋子各有不同察净,規(guī)則自然也有所區(qū)別驾茴。索緒爾之后,結(jié)構(gòu)主義語(yǔ)言學(xué)又進(jìn)一步發(fā)展成為三個(gè)獨(dú)立子學(xué)派氢卡,但它們的共同點(diǎn)都是和索緒爾一脈相承的锈至,也就是都認(rèn)為語(yǔ)言本質(zhì)上是一個(gè)符號(hào)系統(tǒng),符號(hào)只是表面译秦,更重要的是挖掘和研究符號(hào)系統(tǒng)內(nèi)在的規(guī)則和聯(lián)系裹赴。結(jié)構(gòu)主義語(yǔ)言學(xué)興起后,標(biāo)志著現(xiàn)代語(yǔ)言學(xué)的誕生诀浪,并且在一段時(shí)期內(nèi)不僅顯著的影響了后來(lái)的語(yǔ)言學(xué)流派棋返,還影響了其他的一些人文學(xué)科。

索緒爾_符號(hào)系統(tǒng)的所指和能指.jpg

到了1957年雷猪,喬姆斯基出版《句法結(jié)構(gòu)》一書睛竣,標(biāo)志著轉(zhuǎn)換生成語(yǔ)言學(xué)的誕生。喬姆斯基的主要觀點(diǎn)則認(rèn)為人類天生有一套普遍語(yǔ)法求摇,我們?nèi)粘5恼Z(yǔ)言系統(tǒng)只不過(guò)是這套普遍語(yǔ)法的形式化體現(xiàn)而已射沟,因此他認(rèn)為語(yǔ)言中存在著深層結(jié)構(gòu)和表層結(jié)構(gòu),深層結(jié)構(gòu)與意義和概念相關(guān)与境,而表層結(jié)構(gòu)則與語(yǔ)音和符號(hào)相關(guān)验夯,這兩層結(jié)構(gòu)由一套轉(zhuǎn)換語(yǔ)法連接起來(lái),也就是由深層結(jié)構(gòu)生成表層結(jié)構(gòu)摔刁。他為此還特別舉了一些例子挥转,為了說(shuō)明兩個(gè)句子表層結(jié)構(gòu)類似乃至完全一樣,但是深層語(yǔ)義完全不相關(guān)的現(xiàn)象,比如

Flying palnes can be dangerous.

這個(gè)句子可以因?yàn)橥环荼韺咏Y(jié)構(gòu)對(duì)應(yīng)到兩套不同的深層結(jié)構(gòu)绑谣,而表達(dá)出完全不一樣的意義党窜,第一種是flying作為形容詞,那么此時(shí)句子想表達(dá)的意義是在天上正在飛行的飛機(jī)很危險(xiǎn)借宵;而第二種是把"flying palnes"解構(gòu)成一種動(dòng)賓結(jié)構(gòu)幌衣,那么這個(gè)句子表達(dá)的意思就成了開(kāi)飛機(jī)這個(gè)動(dòng)作很危險(xiǎn)。喬姆斯基舉這個(gè)例子壤玫,就是為了說(shuō)明傳統(tǒng)的結(jié)構(gòu)主義語(yǔ)言學(xué)對(duì)于這種句子根本無(wú)能為力豁护,因?yàn)樗鼈兊谋韺咏Y(jié)構(gòu)是完全一致的,從而得出語(yǔ)言有一種更為本質(zhì)的深層結(jié)構(gòu)的結(jié)論欲间。但是個(gè)人理解楚里,與其說(shuō)是語(yǔ)言學(xué)的深層結(jié)構(gòu),還不如說(shuō)是人類認(rèn)知體系或者客觀世界的結(jié)構(gòu)化表示括改,因?yàn)樯顚咏Y(jié)構(gòu)必然對(duì)應(yīng)到人類的認(rèn)知體系。并且喬姆斯基過(guò)于強(qiáng)調(diào)了普遍語(yǔ)法的天生性家坎,而忽略了后天語(yǔ)言的塑造和習(xí)得嘱能。后來(lái)喬姆斯基的眾多弟子(喬治萊考夫等人)也公開(kāi)宣判與自己老師喬姆斯基的語(yǔ)言學(xué)觀點(diǎn)決裂,并各自獨(dú)立發(fā)展出了一些新的語(yǔ)言學(xué)理論虱疏,比如喬治萊考夫的認(rèn)知語(yǔ)言學(xué)流派惹骂。

flying_planes_can_be_dangerous.jpg

我們可以發(fā)現(xiàn)從歷史比較語(yǔ)言學(xué),到結(jié)構(gòu)主義語(yǔ)言學(xué)做瞪,再到轉(zhuǎn)換生成語(yǔ)言學(xué)对粪,這三個(gè)流派基本可以認(rèn)為是一脈相承的,只不過(guò)所想要揭示的東西越來(lái)越深層装蓬,從歷史比較語(yǔ)言學(xué)著重于研究語(yǔ)言學(xué)的一些表現(xiàn)形式和演化形態(tài)著拭,到結(jié)構(gòu)主義語(yǔ)言學(xué)著重于研究符號(hào)系統(tǒng)背后的結(jié)構(gòu),再到轉(zhuǎn)換生成語(yǔ)言學(xué)認(rèn)為結(jié)構(gòu)主義語(yǔ)言學(xué)揭示的只是語(yǔ)言的表層結(jié)構(gòu)牍帚,因而自己提出了深層結(jié)構(gòu)的概念儡遮。

而到了20世紀(jì)八九十年代,以韓禮德為代表的一些語(yǔ)言學(xué)家暗赶,逐漸注意到無(wú)論是結(jié)構(gòu)主義還是轉(zhuǎn)換生成語(yǔ)言學(xué)鄙币,它們都片面的強(qiáng)調(diào)語(yǔ)言學(xué)的理論形式,而忽視了語(yǔ)言的社會(huì)的功能屬性蹂随,韓禮德認(rèn)為這語(yǔ)言的結(jié)構(gòu)和語(yǔ)法等等理論形式十嘿,以及社會(huì)功能屬性是語(yǔ)言的兩個(gè)方面,這二者都很重要岳锁,他想要把二者統(tǒng)一起來(lái)绩衷,因此發(fā)展了他自己的語(yǔ)言學(xué)觀點(diǎn),他提出了系統(tǒng)語(yǔ)法和功能語(yǔ)法的概念,前者強(qiáng)調(diào)語(yǔ)言的內(nèi)在結(jié)構(gòu)和形式理論唇聘,這點(diǎn)和索緒爾的結(jié)構(gòu)主義一脈相承版姑,但他同時(shí)還提出了功能語(yǔ)法,著重語(yǔ)言的社會(huì)屬性迟郎,說(shuō)明語(yǔ)言是社會(huì)交流和溝通的媒介剥险,不過(guò)由于在系統(tǒng)語(yǔ)法上的影響力遠(yuǎn)不如喬姆斯基等流派的影響力,功能語(yǔ)法的建樹(shù)倒是別的流派所缺乏的宪肖,因此把韓禮德的學(xué)說(shuō)就叫做系統(tǒng)功能語(yǔ)言學(xué)了表制。

而上文提到的喬姆斯基的弟子之一喬治萊考夫,認(rèn)為他的老師對(duì)于人類天生具有普遍語(yǔ)法的觀點(diǎn)是大錯(cuò)特錯(cuò)控乾,尤其是轉(zhuǎn)換生成語(yǔ)法中認(rèn)為深層結(jié)構(gòu)由一些有限的普遍語(yǔ)法組成么介,著重語(yǔ)言規(guī)則的形式化,喬治萊考夫嚴(yán)厲的抨擊了他老師的觀點(diǎn)蜕衡,與轉(zhuǎn)換生成語(yǔ)法著重形式和規(guī)則的探討相反壤短,認(rèn)知語(yǔ)言學(xué)認(rèn)為語(yǔ)言不是人類的一個(gè)獨(dú)立系統(tǒng),人類的一切語(yǔ)言行為都只不過(guò)是人類對(duì)于客觀世界和精神世界親身體驗(yàn)的外化慨仿,也就是說(shuō)久脯,語(yǔ)言無(wú)論把它叫做符號(hào)也好,叫做語(yǔ)法結(jié)構(gòu)也好镰吆,叫做系統(tǒng)也好帘撰,都逃離不了語(yǔ)言是人類認(rèn)知系統(tǒng)的一部分,語(yǔ)言并不獨(dú)立存在万皿。人類在長(zhǎng)期的自然演化中摧找,形成了一套自己獨(dú)有的認(rèn)知系統(tǒng),而通過(guò)這套認(rèn)知系統(tǒng)牢硅,人類可以獲得對(duì)于身邊客觀環(huán)境以及自己內(nèi)部精神世界的一套獨(dú)特體驗(yàn)蹬耘,這套體驗(yàn)如果映射到外在的語(yǔ)音或文上,便形成了我們?nèi)祟惖恼Z(yǔ)言系統(tǒng)减余。因此人類的語(yǔ)言與人類其他認(rèn)知能力沒(méi)有本質(zhì)上的區(qū)別婆赠。不過(guò),認(rèn)知語(yǔ)言學(xué)并沒(méi)有一味地架空自己的語(yǔ)言學(xué)觀念佳励,它也適時(shí)地道出了語(yǔ)法規(guī)則和人類的認(rèn)知系統(tǒng)有一定的對(duì)應(yīng)性休里,言下之意便是說(shuō)語(yǔ)法規(guī)則是人類認(rèn)知系統(tǒng)抽象化的外在體現(xiàn)≡叱校可以看出妙黍,在這一點(diǎn)上,認(rèn)知語(yǔ)言學(xué)比轉(zhuǎn)換生成語(yǔ)言學(xué)又更進(jìn)了一步瞧剖,直接從研究人類的認(rèn)知角度來(lái)研究人類的語(yǔ)言學(xué)拭嫁。喬治萊考夫在語(yǔ)言學(xué)中引入了隱喻的概念可免,認(rèn)為隱喻是人類最重要的認(rèn)知活動(dòng)之一,也是語(yǔ)言中最普遍的現(xiàn)象做粤。

隱喻.PNG

然而回到當(dāng)下的自然語(yǔ)言處理浇借,似乎現(xiàn)在談?wù)J知,有點(diǎn)為時(shí)尚早怕品。在自然語(yǔ)言處理的發(fā)展歷程中妇垢,除了喬姆斯基的轉(zhuǎn)換生成語(yǔ)言學(xué)曾經(jīng)在上世紀(jì)六七十年代大放異彩,一度成為當(dāng)時(shí)自然語(yǔ)言處理的主流方法肉康,除此之外闯估,似乎理論語(yǔ)言學(xué)界一直和自然語(yǔ)言處理脫鉤比較嚴(yán)重,這一方面揭示了人類語(yǔ)言系統(tǒng)的復(fù)雜吼和,另一方面涨薪,也預(yù)示著現(xiàn)在的自然語(yǔ)言處理缺乏嚴(yán)密的理論支持,說(shuō)白了炫乓,現(xiàn)在的NLP界刚夺,尤其以BERT為代表的做法,實(shí)際上是簡(jiǎn)單粗暴的代名詞末捣,它們把人類語(yǔ)言習(xí)得過(guò)程中的輕量侠姑、泛化和低功耗,用大數(shù)據(jù)塔粒、大模型和大計(jì)算量炮轟的蕩然無(wú)存结借,站在眼力所及之處的滿目瘡痍上筐摘,我們依然無(wú)法讓機(jī)器真正明白“喵星人”這個(gè)詞對(duì)于人類而言卒茬,其背后究竟意味著一個(gè)怎樣的復(fù)雜情緒和體驗(yàn)(更有趣的是,即便對(duì)于每個(gè)人類個(gè)體而言咖熟,其背后的體驗(yàn)也是千差萬(wàn)別的圃酵,可見(jiàn)語(yǔ)言籠闊了符號(hào)性、認(rèn)知性馍管、社會(huì)性和個(gè)體性之后的復(fù)雜程度)郭赐,然而在身后留下一片廢墟和尸骨的BERT,正準(zhǔn)備重建一個(gè)偉大新帝國(guó)的BERT确沸,它究竟是要選擇開(kāi)心呢還是難過(guò)捌锭?對(duì)于人類母親而言,這大概會(huì)是個(gè)問(wèn)題罗捎。

不過(guò)無(wú)論如何观谦,帝國(guó)的建立總是艱難的。讓人類母親足可欣慰的是桨菜,即便步履維艱豁状,托兒所里的AI兒子們依然一步一步堅(jiān)定的踩上了簡(jiǎn)陋的梯子捉偏,站在巨人的肩膀上回首,我們發(fā)現(xiàn)泻红,和人類母親的語(yǔ)言習(xí)得方式依靠某一個(gè)機(jī)緣巧合的基因突變不同夭禽,AI踏出了一條只屬于它自己的路,未來(lái)的巨人肩膀和梯子在哪里谊路,我們是否需要選用新的巨人肩膀和梯子讹躯,這都是成長(zhǎng)的必經(jīng)之痛,一切都留給未來(lái)去證實(shí)或證偽吧凶异。

本文上兩篇系列

  1. NLP的巨人肩膀(上)
  2. NLP的巨人肩膀(中)

Reference

1. https://www.frontiersin.org/articles/10.3389/fncel.2017.00212/full

2. https://waitbutwhy.com/2017/04/neuralink.html

3. https://www.analyticsvidhya.com/blog/2017/06/transfer-learning-the-art-of-fine-tuning-a-pre-trained-model/

4. https://thegradient.pub/nlp-imagenet/

5. https://arxiv.org/abs/1805.00932

6. https://distill.pub/2017/feature-visualization/

7. http://ruder.io/a-review-of-the-recent-history-of-nlp/

8. https://drive.google.com/file/d/1tAC5T1HLDPHPXY4BoIq5sM3iokQH3p7Z/view

9. https://arxiv.org/abs/1206.5538

10. https://blog.csdn.net/a635661820/article/details/44130285

11. https://arxiv.org/ftp/arxiv/papers/1611/1611.05962.pdf

12. https://www.zybuluo.com/Dounm/note/591752#41-cbow%E6%A8%A1%E5%9E%8B

13. https://arxiv.org/pdf/1301.3781.pdf

14. https://papers.nips.cc/paper/5021-distributed-representations-of-words-and-phrases-and-their-compositionality.pdf

15. https://medium.com/huggingface/universal-word-sentence-embeddings-ce48ddc8fc3a

16. https://tfhub.dev/google/universal-sentence-encoder/2

17. https://www.mihaileric.com/posts/deep-contextualized-word-representations-elmo/

18. http://jalammar.github.io/illustrated-transformer/

19. https://towardsdatascience.com/bert-explained-state-of-the-art-language-model-for-nlp-f8b21a9b6270

20. http://jpkc.scezju.com/yyxgl1/showindex/637/571

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蜀撑,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子剩彬,更是在濱河造成了極大的恐慌酷麦,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件喉恋,死亡現(xiàn)場(chǎng)離奇詭異沃饶,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)轻黑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門糊肤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人氓鄙,你說(shuō)我怎么就攤上這事馆揉。” “怎么了抖拦?”我有些...
    開(kāi)封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵升酣,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我态罪,道長(zhǎng)噩茄,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任复颈,我火速辦了婚禮绩聘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘耗啦。我一直安慰自己凿菩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布帜讲。 她就那樣靜靜地躺著衅谷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪舒帮。 梳的紋絲不亂的頭發(fā)上会喝,一...
    開(kāi)封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天陡叠,我揣著相機(jī)與錄音,去河邊找鬼肢执。 笑死枉阵,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的预茄。 我是一名探鬼主播兴溜,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼耻陕!你這毒婦竟也來(lái)了拙徽?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤诗宣,失蹤者是張志新(化名)和其女友劉穎膘怕,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體召庞,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡岛心,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了篮灼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片忘古。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖诅诱,靈堂內(nèi)的尸體忽然破棺而出髓堪,到底是詐尸還是另有隱情,我是刑警寧澤娘荡,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布干旁,位于F島的核電站,受9級(jí)特大地震影響它改,放射性物質(zhì)發(fā)生泄漏疤孕。R本人自食惡果不足惜商乎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一央拖、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鹉戚,春花似錦鲜戒、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至赢底,卻和暖如春失都,著一層夾襖步出監(jiān)牢的瞬間柏蘑,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工粹庞, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留咳焚,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓庞溜,卻偏偏與公主長(zhǎng)得像革半,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子流码,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • 本文另兩篇系列 NLP的巨人肩膀(上) NLP的巨人肩膀(下) 3. 梯子的一級(jí)半 除了在word級(jí)別的embed...
    weizier閱讀 6,565評(píng)論 0 18
  • 這是一個(gè)很多人向往的城市又官,而我只想在這五彩斑斕的灰色里尋找一份安靜。 這是我第一次來(lái)上海漫试,帶著一個(gè)從沒(méi)有去過(guò)大...
    WHealer閱讀 555評(píng)論 2 4
  • 如果在我心中給美劇排一個(gè)名次的話 六敬, 《越獄》絕對(duì)是第一,緊接著就是《老友記》 驾荣、 《我們這一天》 觉阅,前兩部都是有...
    阿貓家的一條狗閱讀 1,592評(píng)論 10 7
  • 長(zhǎng)大后的時(shí)間不知怎地,倏地過(guò)得那么快秘车,讓人猝不及防典勇。小時(shí)候玩沙子的日子清晰可見(jiàn),感覺(jué)時(shí)間是無(wú)限的叮趴,每天全心全意的只...
    左撇子哼唧唧閱讀 634評(píng)論 0 0
  • 你是我耳畔的風(fēng) 聲聲如歌 自山而來(lái) 又去向海的廣闊 而你看不見(jiàn)我 看不見(jiàn)我 淀下塵沙 你才知我已輕輕走過(guò) 墜落江波...
    八寶粽閱讀 274評(píng)論 0 0