Chatbot 語料訓練 監督式學習

好好教他,機器人才能學

張靜綺 Misha Chang 2020/11/17 16:08:02
599

 

跟機器人交談過的人一定都有過這樣的經驗

當機器人回答:很抱歉,我不理解您的意思,多數人的反射念頭是不是吼!笨死了” 順便在心裡翻個大白眼

 

其實在日常、職場對話,不免出現溝通不良的場景。可能是我們表達的不够清楚,可能是對方還沒進入狀況。通常遇到這種情況,我們會試著用不同說明方式幫助對方理解,而不是直接把對方評定為笨蛋吧?(職場罷淩不在討論範圍內喔XD

 

你有遇過這個場景嗎?

 

客戶:我要一杯大冰美

 

店員:請問要冰的還是熱的

 

客戶:“…………”

 

如果對象換成機器人,應該會覺得它不够聰明、設計不良吧!只是...為什麼人類在面對機器人時會這麼嚴苛?

 

事實上普羅大眾對AI的期待跟幻想早已經被好萊塢電影洗腦好幾輪,這是可以理解的,加上人們普遍認為機器是按照既定程序在執行不應該出錯。

 

但人類的語言如此博大精深、千變萬化,同樣一句話因為斷點、重音、語調的不同,代表的意思就完全不同,機器人要怎麼聽得懂我們在說什麼呢?

試想….

 

「天空藍藍的」是在描述場景

 

「天空藍 藍的」是在形容顏色

 

同樣一段文字,人類基於累積的知識、常識、生活經驗、文化背景可以輕易分辨差異,但要讓機器能區分出不同,除了借重演算法做文字處理、資料比對、權重計算試圖找出最可能的結果。

但回歸基本,訓練機器腦最重要且不可避免的事:由人類預先做好資料標註分類、語料設計、邏輯性訓練。透過一連串繁瑣作業正確教導機器人知識並訓練它,才能得到好的識別效果。

 

 

 

 

說了這麼多,實際上應該怎麼做?

 

首先,依照服務流程定義好大腦的三維架構,至於怎麼定義又是另一個話題了!本文我們只要知道大腦三維架構包含:

 

一維:總機NLU

二維:部門NLU

三維:子部門NLU 

 

一句話進入大腦,通過一維識別成功才進二維,二維識別成功才進三維

就像打電話到陌生公司,第一關會經由總機小姐確認要找的部門,再將電話轉接到部門,由部門釐清目的後再將電話轉給負責單位(子部門)。

 

機器腦的識別就是透過三維機制進行層層意圖解析,最終釐清使用者真實目的。

 

舉個例子我們讓機器人提供:繳信用卡帳單、查信用卡可用額度 的服務

 

定義好各個維度的意圖後,我們的訓練目標是將每個維度中的意圖訓練出其獨特性。

以上圖架構來說:

 

一維的總機NLU中信用卡意圖只負責識別是否為信用卡,不必管到底是信用卡的什麼業務,所以我們將所有關於信用卡的問法全部訓練在這個意圖,使信用卡相關說法成為它的特徵點。

 

我的「信用卡」要繳費

 

繳這期「卡」

 

我的「好市多卡」為什麼刷不過,現在額度剩多少

 

「卡片」可用額度

 

在二維的信用卡部門中,信用卡詞彙會大量出現在「繳費」及「查詢」意圖中,因此”信用卡在信用卡部門是不重要的詞彙(不應該被當成特徵點)。訓練的重點就會這樣

 

我的信用卡要「繳費」à「繳費」意圖

 

「繳」這期「卡費」à「繳費」意圖

 

我的好市多卡為什麼刷不過,現在額度「剩多少」à「查詢」意圖

 

「查詢」卡片可用額度à「查詢」意圖

 

 

那麼不重要的詞彙應該如何訓練呢?通常我們的作法會是這樣

以「天空藍藍的」套用到高鐵提供的服務為例:

 

現在天空藍藍的,不知道下午會不會下雨?à「查詢天氣」意圖

 

我掉了一個保溫瓶在車上,是天空藍,藍的à「掛失申報」意圖

 

 

以意圖特性來說天空藍藍的不是這2個意圖的特徵點,因此在編寫訓練語料時應該忽略天空藍藍的,改寫為:

 

不知道下午會不會下雨à「查詢天氣」意圖

 

我掉了一個保溫瓶在車上à「掛失申報」意圖

 

當使用者說:今天天空藍藍的,不知道下午會不會下雨

 

對機器人來說,這句話的特徵點偏向「查詢天氣」意圖,因此它在「查詢天氣」意圖的信心值會大於在「掛失申請」意圖的信心值。

 

語料訓練依照這原則就可以了嗎?Nooooo 現實是很險惡的!

 

我們舉另一個語料設計範例:

高鐵流程中,乘客在查詢高鐵車次及查詢高鐵票價時,通常會提及起訖站:

 

台北到台中的車次有哪些?à「查詢車次」意圖

 

台北到台中的票價多少錢?à「查詢票價」意圖

 

這時我們要考量在高鐵的情境裡,台北到台中對於「查詢車次」及「查詢票價」在高鐵服務中是重要資訊,它們必須被標註訓練。

因此不能用上個範例的方式處理它,而是在訓練語料時必須將包含起訖站的問法以等多等少的數量分別訓練在「查詢車次」及「查詢票價」意圖裡。使語料裡包含台北到台中,但不會變成特徵點。

 

其實在訓練機器腦的過程中有很多眉眉角角要注意,可以說是牽一髮而動全身。

千萬不能憑感覺或當下心情訓練,每個聽不懂的問法要訓練進大腦前都必須經過熟悉大腦架構的訓練師分析大腦的資料現況,模擬訓練,最後才正式訓練進大腦。

 

除了依據以上大原則進行資料分類、語料設計及訓練,在不同產業、不同情境遇到特殊狀況時則需要特別處理。畢竟機器腦不是萬能的,它跟流程開發是相輔相承,當機器腦無法有效識別某些特殊狀況時,由流程增加判斷機制輔助機器人正確回應。

 

也許你會想:一定要人去訓練嗎?機器不能自己學習算什麼AI

 

這就如同教育小孩的過程,你不告訴他什麼是對、什麼是錯它價值偏差時不即時導正,最後的下場只能打掉重練了! 

 

身為交談式機器人大腦設計方必須清楚知道AI的限制,如果一昧被片面需求牽著走,只以解決當下問題暴力訓練,不去考量全盤架構,最後訓練出來的會是一個死板不會變通,無法透過累積學習變聰明的機器人。

 

這篇文章希望傳達的觀念如同標題「好好教他,機器人才能學」

 

再次強調:訓練機器腦是一連串資料測試、收集、分類、測試、調教的過程,唯有經過持續不斷的正確訓練它才會越來越聰明。

 

至於要訓練到什麼程度才能停止?這個問題暫時沒有答案,一起吃瓜坐等更強大的演算法出現吧!

張靜綺 Misha Chang