在人工智慧發展迅速的世代,每個領域都有機會藉由人工智慧做出革命性的改變。其中影像領域(Computer Vision)、語音領域(Speech)以及自然語言處理領域(Natural Language Processing)三大領域更是因為興起的深度學習(Deep Learning)而有突破性的進步。近年來流行的聊天機器人更是在自然語言處理中吸引全世界研究者的目光。以下將介紹現今聊天機器人的背後技術以及其應用。
語言模型 (Language Model)
語言模型在語音領域及自然語言領域扮演著不可或缺的角色。此模型可以用來判別一句話或一段文字是否通順。例如以下兩句話 “早餐吃包子” 以及 “早餐吃桌子”,由於前者較可能是我們所說的話,語言模型會給此較高的分數。語言模型的另一特色是可以用來產生句子,是對話機器人中最為關鍵的部分。以下將以類神經網路語言模型 (Neural Network Language Model, NNLM) 為例來說明如何產生文字 (Natural Language Generation, NLG)。
圖一為一簡化類神經網路語言模型架構圖,其中每個節點模擬人腦的神經元,而每個箭頭模擬神經元間的連結,箭頭方向為訊息流動的方向。此模型分為三層,最左邊的輸入層用來接受輸入訊號,輸入訊號會通過第一層神經元連結轉變為中間隱藏層中的訊息,此時的訊息是以一種我們無法解釋的方式在模型內被儲存,因此中間層故被稱作為隱藏層。接著訊號由隱藏層來到輸出層產生結果。在語言產生的任務中,此模型的輸入層與輸出層都分別代表一個字,亦即模型在看到輸入文字時,根據輸入文字來判斷下一個字最可能為何。同樣以 “早餐吃包子” 這句話為例,當我們給模型”早”一字時,若模型訓練恰當,透過層層訊息的傳遞,模型在輸出層會產生”餐”一字,因此我們知道”早”後面接”餐”。若再將”餐”字輸入至模型進而產生出”吃”字在輸出層,我們就有”早餐吃”這樣的片段句子,如此不斷地將上一個時間點的輸出當作下個時間的輸入,此模型可以產生一句完整的句子。
類神經網路語言模型的一個缺點是其只能根據上一個字來判斷下一個字為何,但人類語言是很複雜的,往往透過一個字是很難準確判斷下字為何,因此有了遞迴式類神經網路語言模型 (Recurrent neural network language model, RNNLM) 的產生。圖二為其架構圖,與類神經網路語言模型大致相同,唯一不同點在於其隱藏層有一自我連結關係,此連結代表上一個時間儲存在隱藏層的資訊會被這個時間點的隱藏層所看到。因此,模型可以模擬任意長度的句子,亦即可以根據前面好幾個字來判斷下一個字為何,此不同點大幅改進了類神經網路語言模型的不足。
聊天機器人技術
現今常見的聊天機器人使用序列至序列模型 (sequence-to-sequence model, seq2seq) 來完成聊天的任務。此模型之所以稱為seq2seq 是因為對於聊天機器人來說輸入跟輸出的內容都是一句話。圖三為序列至序列模型架構圖,其中可分為兩大模組,編碼器與解碼器,編碼器的目的在於將使用者輸入的句子進行理解後編碼,產生後的編碼再送至解碼器中產生聊天回應。而編碼器與解碼器分別都是上述所介紹的遞迴式類神經語言模型,圖三將每個時間點展開方便讀者了解。當使用者輸入一句話”你有空嗎”給聊天機器人時,編碼器會被依序輸入每個字,且最後一個時間點的隱藏層資訊為產生的編碼,此編碼以模型理解的方式儲存著使用者輸入句的資訊。接著,解碼器會根據編碼來依序產生文字,在第一個時間點時會輸入一開始字元給解碼器,讓其知道要開始產生第一個字,根據”你有空嗎”的編碼,解碼器產生的第一個字為”我”,接著再將產生的”我”當作輸入,即會產生”有”,不斷重複即可產生一句呼應使用者輸入的輸出句子。
聊天機器人應用
聊天機器人的應用非常多,除了可以完成一般沒有目的性的聊天任務,更可以是協助人類完成我們的需求。以找尋餐廳為例,當聊天機器人結合餐廳的資訊時,我們可以直接以人類語言詢問機器人餐廳的任何資訊,例如使用者輸入“我想找一家台北市價位在三百元以內的義大利餐廳”,此時聊天機器人不只能用我們理解的語言回覆使用者,其內容更是符合我們需求的,如”忠孝東路三段上的某某餐廳是您在找的”。除了完成基本任務的聊天外,其更可能幫助使用者做出更好的選擇,例如機器人可能回復”此餐廳最有名的是二號義大利麵”,使用者可以透過不斷與機器人互動的過程來接受更多資訊,進一步做出更好的決定。未來幾年內,將會產生結合特定領域資訊的聊天機器人來協助人類,他們既像真人使用我們的語言來回應我們,又有機器人不會累且可以平行處理成千上萬使用者需求的特性。然而,如何結合不同領域的知識讓機器人學習,又或者讓機器人像人類一樣充滿情緒,儼然是人工智慧下個階段所面臨的考驗。
資料來源