在漫威系列電影中,鋼鐵俠的人工智能助手賈維斯扮演了很重要的角色。比如在電影《鋼鐵俠2》中,當鋼鐵俠說“賈維斯,把我的戰(zhàn)甲發(fā)射給我”時(如圖1所示),賈維斯就會將Mark42戰(zhàn)甲發(fā)射到鋼鐵俠所在的具體位置。
圖1 《鋼鐵俠2》電影中的片段
目前市面上有很多類似的人工智能助手,包括各大品牌的智能音箱以及手機上自帶的語音助手。如果它們是鋼鐵俠的助手,可能會問得更具體,比如:先生,發(fā)射哪件戰(zhàn)甲?鋼鐵俠說:戰(zhàn)力最強的戰(zhàn)甲。助手回復:先生,沒有找到“戰(zhàn)力最強的戰(zhàn)甲”。之所以賈維斯能夠與鋼鐵俠實現(xiàn)智能對話,理解其意圖,是因為賈維斯這樣的助手采用了智能問答技術(shù)。如果讓我們來實現(xiàn)一個類似賈維斯的人工智能助手,那該怎么做呢?可能的實現(xiàn)過程如圖2所示。
圖2 智能問答講解圖(選自《科幻電影中的科學:科學家奶爸的AI手繪》)
第一步是實現(xiàn)語音識別功能,我們要將問題的語音轉(zhuǎn)換為系統(tǒng)可以識別的文本,以便進行后續(xù)的自然語言處理。通常,我們需要構(gòu)建一個聲學模型和一個語言模型,聲學模型可以理解為對聲音的建模。我們知道聲音實際上是一種波。要想對聲音進行分析,首先需要對聲音進行分幀處理,也就是把聲音切成多個小段,每小段稱為一幀。分幀之后,通過特征提取將每一小段語音的聲波轉(zhuǎn)變?yōu)橄蛄?,這個向量包含了這幀語音的內(nèi)容信息。我們把這些向量輸入聲學模型,它能通過解碼器將向量輸入轉(zhuǎn)換成聲學表示的輸出,更準確地說是給出語音屬于某個聲學符號的概率。在英文中,這個聲學符號可以是音節(jié)或者更小的顆粒度的音素;在中文中,這個聲學符號可以是聲母/韻母或者顆粒度同英文一樣小的音素。語言模型的作用可以簡單理解為消解多音字的問題,在聲學模型給出發(fā)音序列之后,從候選的文字序列中找出概率最大的字符串序列。
得到了文本信息之后,第二步是問題理解,我們要讓系統(tǒng)理解自然語言問題背后的語義。比如鋼鐵俠的指令“把我的戰(zhàn)甲發(fā)射給我”就可以轉(zhuǎn)變?yōu)榱硪粋€問題來理解,也就是“鋼鐵俠的常用戰(zhàn)甲中戰(zhàn)力最強的是哪個”。通常在智能問答中,系統(tǒng)首先要判斷問題的主題,找到其中的主題實體,比如“鋼鐵俠的常用戰(zhàn)甲中戰(zhàn)力最強的是哪個”這個問題里的主題實體就是“鋼鐵俠”。得到主題實體之后,系統(tǒng)通過問題的關(guān)系推斷進行問題理解,典型的關(guān)系推斷包括單關(guān)系和多關(guān)系。單關(guān)系就是問題里涉及知識圖譜中的單個關(guān)系,比如鋼鐵俠的戰(zhàn)甲就是單關(guān)系;多關(guān)系是問題涉及了知識圖譜中的多個關(guān)系,具體又分為單路徑和多路徑。單路徑是指問題的主題實體到答案之間是一條不帶分叉的關(guān)系路徑,比如鋼鐵俠的戰(zhàn)甲的戰(zhàn)力;而多路徑是指主題實體到答案之間的關(guān)系路徑上有各種分叉作為約束條件,這些約束主要是結(jié)點約束(比如鋼鐵俠能發(fā)射小型飛彈的戰(zhàn)甲是哪個)和算子約束(比如鋼鐵俠的戰(zhàn)甲里戰(zhàn)力最強的是哪個)。
在得到問題的主題實體和關(guān)系類型之后,我們可以形成一個結(jié)構(gòu)化的查詢,在知識圖譜中搜索可能的答案。如果直接搜索到了確定的答案,就直接將相關(guān)的實體、關(guān)系、屬性等知識輸出,生成答案。但很多時候,答案的內(nèi)容是無法從知識圖譜中直接獲取的,需要進行各種推理,這個推理的過程就需要運用各種算法對知識圖譜中知識的等價、比較、邏輯等進行運算,從而推理出可能的答案,比如在鋼鐵俠的戰(zhàn)甲里,浪子是等價于Mark42的。而隨著戰(zhàn)甲的更新,其戰(zhàn)力也在不斷增強,因此Mark42的戰(zhàn)力要比Mark6和Mark3高。
根據(jù)對問題的理解和答案的搜索與推理,系統(tǒng)得到了問題的答案,鋼鐵俠想要的戰(zhàn)甲是Mark42。同時系統(tǒng)通過衛(wèi)星定位到鋼鐵俠所在的位置,也就是戰(zhàn)甲發(fā)射的目標坐標,根據(jù)Mark42戰(zhàn)甲所在位置的發(fā)射坐標和戰(zhàn)甲的飛行速度,可以計算出戰(zhàn)甲到達鋼鐵俠那里的具體時間,最后生成相應的自然語言回答問句“Mark42戰(zhàn)甲已發(fā)射,預計15秒后到達。”
但生成的這個問句依舊是文本形式,智能問答的最后一步就是將這個文本轉(zhuǎn)化為語音。這個過程是第一步語音識別的逆過程:首先抽取出文本輸入的語言特征,然后將其輸入語音識別模型,再結(jié)合已經(jīng)設(shè)置好的聲學參數(shù)合成聲音,從而實現(xiàn)類似于人與人之間的溝通方式。
日常生活中我們經(jīng)常接觸到的在線客服問答和智能語音助手等,正是結(jié)合了智能問答技術(shù)來模擬的在線客服人員,其理解用戶的提問,以智能客服的形式發(fā)揮客服作用,甚至比人工客服回答得更加快速、準確。