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