傳統(tǒng)的技術(shù)是語義分析(semantic parsing) [3]?;谌斯ざx的語法規(guī)則,對問句進(jìn)行句法分析以及語義分析,得到內(nèi)部語義表示——邏輯表達(dá)式。語義分析需要人工定義句法,開發(fā)成本較高,可擴展性不好。
近年,基于神經(jīng)符號處理的問答系統(tǒng)的研究有了很大突破??梢詮臄?shù)據(jù)出發(fā),完全端到端地構(gòu)建問答系統(tǒng)。不需要人工干預(yù),只需要提供足夠量的訓(xùn)練數(shù)據(jù)。問答的準(zhǔn)確率也有了一定的提升。傳統(tǒng)的語義分析技術(shù)被顛覆。下面介紹幾個有代表性的工作。
臉書(Facebook)的韋斯頓(Weston)等人提出了記憶網(wǎng)絡(luò)(memory networks)框架[4],可以用于如下場景的問答:
John is in the playground.
Bob is in the office.
John picked up the football.
Bob went to the kitchen.
Q: where is the football?
A: playground.
記憶網(wǎng)絡(luò)由神經(jīng)網(wǎng)絡(luò)和長期記憶組成。長期記憶是一個矩陣,矩陣的每一個行向量是一個句子的語義表示。閱讀時,記憶網(wǎng)絡(luò)可以把給定的句子轉(zhuǎn)換成內(nèi)部表示,存儲到長期記憶中。問答時,把問句也轉(zhuǎn)換成內(nèi)部表示,與長期記憶中每行的句子語義表示進(jìn)行匹配,找到答案,并做回答。
谷歌 DeepMind 的格拉夫(Graves)等發(fā)明了可微分神經(jīng)計算機(differentiable neural computer)模型[5]。該模型由神經(jīng)網(wǎng)絡(luò)和外部記憶組成。外部記憶是一個矩陣,可以表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。神經(jīng)網(wǎng)絡(luò)負(fù)責(zé)對外部記憶進(jìn)行讀寫,它有三種類型,擁有不同的注意力機制,表示三種不同的讀寫控制,對應(yīng)哺乳動物中海馬體的三種功能。神經(jīng)網(wǎng)絡(luò)在數(shù)據(jù)中進(jìn)行端到端的學(xué)習(xí),學(xué)習(xí)的目標(biāo)函數(shù)是可微分的函數(shù)??晌⒎稚窠?jīng)計算機模型被成功應(yīng)用到了包括智能問答的多個任務(wù)中。
谷歌的尼拉康藤(Neelakantan)等開發(fā)了神經(jīng)編程器(neural programmer)模型[6],可以從關(guān)系數(shù)據(jù)庫中尋找答案,自動回答自然語言問題。模型整體是一個循環(huán)神經(jīng)網(wǎng)絡(luò)。每一步都是基于問句的表示(神經(jīng)表示)以及前一步的狀態(tài)表示(神經(jīng)表示),還包括計算操作的概率分布和列的概率分布,以及選擇對數(shù)據(jù)庫表的一個列來執(zhí)行一個操作(符號表示)。順序執(zhí)行這些操作,并找到答案。操作表示對數(shù)據(jù)庫列的邏輯或算數(shù)計算,如求和、大小比較。學(xué)習(xí)時,整體目標(biāo)函數(shù)是可微分的,用梯度下降法訓(xùn)練循環(huán)神經(jīng)網(wǎng)絡(luò)的參數(shù)。
谷歌的 Liang 等開發(fā)了神經(jīng)符號機(neural symbolic machines)模型[7]。神經(jīng)符號機可以從知識圖譜三元組中找到答案,回答像「美國最大的城市是哪個?」這樣的問題。模型是序列對序列(sequence-to-sequence)模型,將問題的單詞序列轉(zhuǎn)換成命令的序列。命令的序列是 LISP 語言²的程序,執(zhí)行程序就可以找到答案。神經(jīng)符號機的最大特點是序列對序列模型表示和使用程序執(zhí)行的變量,用附加的鍵-變量記憶(key-variable memory)記錄變量的值,其中鍵是神經(jīng)表示,變量是符號表示。模型的訓(xùn)練是基于強化學(xué)習(xí)(策略梯度法)的端到端的學(xué)習(xí)。
圖 4 包含查詢器的智能問答系統(tǒng)
華為公司的呂正東等開發(fā)了神經(jīng)查詢器(neural enquirer)、符號查詢器(symbolic enquirer)和連接查詢器(coupled enquirer)三個模型[8,9],用于自然語言的關(guān)系數(shù)據(jù)庫查詢。例如,可以從奧林匹克運動會的數(shù)據(jù)庫中尋找答案,回答「觀眾人數(shù)最多的奧運會的舉辦城市的面積有多大?」這樣的問題。問答系統(tǒng)包括語言處理模塊、短期記憶、長期記憶和查詢器,語言處理模塊又包括編碼器和解碼器。圖 4 即是這種架構(gòu)的具體實現(xiàn)。查詢器基于短期記憶的問題表示(神經(jīng)表示)從長期記憶的數(shù)據(jù)庫中(符號表示與神經(jīng)表示)尋找答案。符號查詢器是一個循環(huán)神經(jīng)網(wǎng)絡(luò),將問句的表示(神經(jīng)表示)轉(zhuǎn)換為查詢操作(符號表示)的序列,執(zhí)行操作序列就可以找到答案。利用強化學(xué)習(xí),具體的策略梯度法,可以端到端地學(xué)習(xí)此循環(huán)神經(jīng)網(wǎng)絡(luò)。神經(jīng)查詢器是一組深度神經(jīng)網(wǎng)絡(luò),將問句的表示(神經(jīng)表示)多次映射到數(shù)據(jù)庫的一個元素(符號表示),也就是答案,其中一個神經(jīng)網(wǎng)絡(luò)表示一次映射的模式。利用深度學(xué)習(xí),具體的梯度下降法,可以端到端地學(xué)習(xí)這些深度神經(jīng)網(wǎng)絡(luò)。符號查詢器執(zhí)行效率高,學(xué)習(xí)效率不高;神經(jīng)查詢器學(xué)習(xí)效率高,執(zhí)行效率不高。連接查詢器結(jié)合了兩者的優(yōu)點。學(xué)習(xí)時首先訓(xùn)練神經(jīng)查詢器,然后以其結(jié)果訓(xùn)練符號查詢器,問答時只使用符號查詢器。