本文第一部分講解自然語言處理的原理,,第二部分講解聊天機(jī)器人的實(shí)現(xiàn)原理,,解決方案及挑戰(zhàn),最后以 seq2seq+Attention 機(jī)制講解模型結(jié)構(gòu),。第三部分講解如何從 0 開始訓(xùn)練一個(gè)聊天機(jī)器人,。 一、自然語言處理的原理人工智能理解自然語言的原理,,要解釋清楚,,首先需要界定下這個(gè)問題的含義,一種是狹義的說如何用計(jì)算機(jī)來處理和分析自然語言,;另一種是則是廣義地理解關(guān)于“人工智能”,、“自然語言”和“理解”的含義,。 我們先從廣義層面探討,。弄清楚這幾個(gè)名詞。 自然語言:就是人類社會(huì)中發(fā)明和演變的用于溝通和交流的語言,。而人工智能在對(duì)事物(不僅僅是自然語言)的理解,,往往包含兩個(gè)層次:一是研究?jī)?nèi)容;二是方法論,。研究?jī)?nèi)容上主要是現(xiàn)在流行的研究課題,,例如知識(shí)圖譜、CV,、語音識(shí)別,、NLP 等。方法論是指實(shí)現(xiàn)人工智能的方法,,主要有三種:符號(hào)主義,、聯(lián)結(jié)主義、行為主義,。符號(hào)主義是用數(shù)理邏輯的推理來模擬人的思維智能,,例如專家系統(tǒng)的實(shí)現(xiàn)。聯(lián)結(jié)主義對(duì)人腦的仿生學(xué)研究,,最常見的就是神經(jīng)網(wǎng)絡(luò)模型,。行為主義重點(diǎn)在可預(yù)測(cè)的人類行為上,認(rèn)為人類通過與外界環(huán)境的交互而得到自適應(yīng)性,,涉及的算法有遺傳算法,、強(qiáng)化學(xué)習(xí)等。 現(xiàn)有的NLP主要是以規(guī)則和統(tǒng)計(jì)相結(jié)合來處理的。它的規(guī)則一面偏向于符號(hào)主義的視角,;而統(tǒng)計(jì)一面偏向于挖掘一般規(guī)律,,屬于歸納,目前用的方法,,比如將自然語言用詞向量的方法表征,,然后接入神經(jīng)網(wǎng)絡(luò)中進(jìn)行訓(xùn)練,也就是聯(lián)結(jié)主義的思想,。 理解:關(guān)于機(jī)器是否能真正理解語言一直有爭(zhēng)論,。先拋開這個(gè)問題,我們看看人類對(duì)語言的理解是怎么樣的,。實(shí)際上,,人類對(duì)理解這個(gè)事情也做的不一定好。比如,,南北方對(duì)“豆腐腦”的認(rèn)知是不同的,,兩人交談可能就會(huì)對(duì)同一物體的理解不同。因此,,理解是需要由相似的生活經(jīng)歷,、共同話題、上下文,、會(huì)話的環(huán)境,、雙方的知識(shí)等很多因素決定的。既然對(duì)于人類來說,,真正能理解對(duì)方,,需要這么多的隱性因素,那對(duì)于機(jī)器來說,,我們最好就不要關(guān)心機(jī)器是否真正能理解問題的含義本身,,而是盡可能地讓機(jī)器關(guān)注上述因素,來模擬人的智能,。 狹義的層面是我們工程師研究的主要方向,。也就是將自然語言理解看成是用計(jì)算機(jī)來處理和分析自然語言,它涉及到語言學(xué)(詞,、詞性,、語法)和計(jì)算機(jī)學(xué)科(模型/算法)的范疇。 從語言學(xué)上來看,,研究的方向包括詞干提取,、詞性還原、分詞,、詞性標(biāo)注,、命名實(shí)體識(shí)別,、詞性消歧、句法分析,、篇章分析等等,。這屬于研究的基礎(chǔ)范疇,在這些基礎(chǔ)的研究?jī)?nèi)容之上,,面向的是具體的文本處理應(yīng)用,,如,機(jī)器翻譯,、文本摘要,、情感分類、問答系統(tǒng),、聊天機(jī)器人等,。 在計(jì)算機(jī)算法的研究方面,一般是以規(guī)則和統(tǒng)計(jì)相結(jié)合的方法,,也就是理性主義和經(jīng)驗(yàn)主義相結(jié)合,。自然語言本質(zhì)上還是符號(hào)系統(tǒng),因此有一定的規(guī)則可尋,,但是它的復(fù)雜性又決定了沒有規(guī)則可以既不相互沖突又能覆蓋所有的語言現(xiàn)象,。后來大規(guī)模語料庫的完善和統(tǒng)計(jì)機(jī)器學(xué)習(xí)方法流行起來后,就省去了很多人工編制規(guī)則的負(fù)擔(dān),,使模型生成自動(dòng)生成特征,。 所以,,我們研究的NLP就是使用數(shù)理和機(jī)器學(xué)習(xí)的方法對(duì)語言進(jìn)行建模,。可以說,,NLP不是達(dá)到真正的自然語言理解,,而是把語言當(dāng)成是一種計(jì)算任務(wù)。 二,、聊天機(jī)器人的實(shí)現(xiàn)原理,、解決方案及挑戰(zhàn)我們從聊天機(jī)器人的分類和實(shí)現(xiàn)原理分別說起。目前聊天機(jī)器人根據(jù)對(duì)話的產(chǎn)生方式,,可以分為基于檢索的模型(Retrieval-Based Models)和生成式模型(Generative Models),。 基于檢索的模型有一個(gè)預(yù)先定義的回答集,我們需要設(shè)計(jì)一些啟發(fā)式規(guī)則,,這些規(guī)則能夠根據(jù)輸入的問句及上下文,,挑選出合適的回答。 生成式模型不依賴預(yù)先定義的回答集,,而是根據(jù)輸入的問句及上下文,,產(chǎn)生一個(gè)新的回答,。 聊天機(jī)器人的這兩條技術(shù)路線,從長(zhǎng)遠(yuǎn)的角度看目前技術(shù)還都還處在山底,,兩種技術(shù)路線的異同和優(yōu)勢(shì)如下: 基于檢索的模型的優(yōu)勢(shì):
但是它的劣勢(shì)在于:需要對(duì)候選的結(jié)果做排序,,進(jìn)行選擇,。 基于生成式模型的優(yōu)勢(shì):
但是它的劣勢(shì)在于:難以保證生成的結(jié)果是可讀的,,多樣的。 因此,,上述方法共同面臨的挑戰(zhàn)有:
這有點(diǎn)類似于我們的信息檢索系統(tǒng),,既希望在垂直領(lǐng)域做得更好;也希望對(duì)不同的人的 query 有不同的排序偏好,。 從應(yīng)用目的的角度區(qū)分,,可以分為目標(biāo)驅(qū)動(dòng)(Goal Driven),應(yīng)用于客服助理等,,在封閉話題場(chǎng)景中,;無目標(biāo)驅(qū)動(dòng)(Non-Goal Driven),應(yīng)用在開放話題的場(chǎng)景下,,這是可談?wù)摰闹黝}是不限的,,但是需要機(jī)器人有一定的基礎(chǔ)常識(shí)。 盡管目前工業(yè)界應(yīng)用的大多數(shù)是基于檢索的模型,,屬于目標(biāo)驅(qū)動(dòng)的,,例如:阿里小蜜,應(yīng)用的話題領(lǐng)域比較窄,,稍微將話題擴(kuò)大一點(diǎn),,它就會(huì)不著邊際回復(fù)或者文不對(duì)題。如下圖: 一個(gè)開放話題場(chǎng)景下的生成式模型應(yīng)該是最智能,、符合我們預(yù)期的聊天機(jī)器人,。因此總結(jié)來看: 智能聊天機(jī)器人的目標(biāo):
那么對(duì)于一個(gè)智能機(jī)器人來說,它的聊天的功能在其中應(yīng)該處于什么位置,?首先,,聊天應(yīng)該是一個(gè)基礎(chǔ)模塊,;其次,聊天應(yīng)該和完成任務(wù)的模塊有很好的協(xié)作,;最后,,聊天應(yīng)該使機(jī)器人看上去像您的朋友,而不是您的代理或者助手,。 從上述角度來說,,現(xiàn)在有一些經(jīng)常與聊天機(jī)器人混淆的概念,也是一些聊天系統(tǒng)的周邊產(chǎn)品:
因此,,盡管聊天系統(tǒng)都是針對(duì)文本理解的大方向,但目標(biāo)不同決定了技術(shù)路線會(huì)有所偏重,,但聊天功能是一個(gè)基礎(chǔ)功能,。 智能聊天機(jī)器人可以從上面的周邊系統(tǒng)研究領(lǐng)域的數(shù)據(jù)集有所借鑒:
那如何來評(píng)價(jià)一個(gè)聊天機(jī)器人的好壞?最重要的是問句和答句的相關(guān)性,,也就是本質(zhì)是:短文本相關(guān)度計(jì)算,。但要注意:
目前在聊天機(jī)器人上使用的深度學(xué)習(xí)方法有如下這些:
其中,深度強(qiáng)化學(xué)習(xí)是把“如何得到一個(gè)足夠讓人滿意的生成式結(jié)果”量化成 Reward,。這些因素包括:
那么如何實(shí)現(xiàn)在智能聊天機(jī)器人的第三個(gè)目標(biāo),,差異化回答呢?也就是如何在對(duì)話里如何引入個(gè)性化(personality)信息,? 首先預(yù)訓(xùn)練一個(gè)人的向量,,讓生成的結(jié)果貼近人的特點(diǎn)。通過 word embedding 將人的信息作為一個(gè)詞向量,,在輸入部分增加一組人的向量,;在生成回答的時(shí)候,,考慮不同的人應(yīng)該選什么樣的詞語。 目前,,我們要做一個(gè)真正智能的自動(dòng)聊天機(jī)器人,,仍然面臨一些挑戰(zhàn):
(本文余下還有7000字) |
|