一、Project Mynah 九官鳥計畫:AI 幫你接電話 / 郭建甫 Gogolook CEO + 莊兼愿 Gogolook Lead Server Developer
Gogolook 的產品就是有名的手機 APP Whoscall,這場演講先是大概介紹了 Whoscall 的歷程,詳細內容可以參考他們去年在資料科學年會上的簡報。簡單而言,一開始他們觀察到了市場的需求:「想知道來電是否為可信任的號碼」,因此推出了相對應的產品。郭建甫說一開始的功能很簡單,就只是幫使用者把號碼拿去 Google 然後回傳前五個搜尋結果而已。但也因為這樣簡單的嘗試,驗證了市場需求,才有辦法做後續產品的改良。
產品的改良上,首先他們先鼓勵使用者回饋,建立資料庫,然後在 2014 年藉由這些資料,建了 SVM Model,加上 Offline Fraud 離線資料庫,來做 Spam Detect,也就是垃圾電話偵測。然而從去年開始,由於資料愈來愈龐大,並且使用者需要更即時的資料,勢必得再持續改良原本做法。解決方案上,莊兼愿嘗試了 R、Light GBM、Scikit-Learn、XGBoost、Spark ML,最後以後兩者在效果以及效能上為最佳,目前處於兩者要擇一的狀況,另外搭配了 AWS 來做處理。藉此希望能達成 Whoscall 下一階段目標:預測下週會打來的垃圾電話。
除此之外,Gogolook 也提出了第二項專案 Project Mynah 九官鳥計畫。也是從很簡單但務實的需求開始,他們觀察到很多人想要接電話但卻沒時間接,因此簡單來說九官鳥計畫希望做到的,就是你很忙沒辦法接電話的時候有人幫你接。具體流程是這樣的,假設今天你打電話給早餐店訂早餐,早餐店表示很忙沒辦法接,這時可以選擇做語音留言,留完後會自動將你的語音訊息轉成文字訊息發給早餐店老闆。如果不語音留言,系統會自動發給你一個聊天室網址,可以直接在聊天室留言給老闆:「培根蛋餅大涼紅謝謝」。
實際測試使用者的操作情形後,第一次測試只有 5-6% 的人會留語音訊息,13% 的人會進入聊天室留文字訊息。當時語音留言的部分,是用 Google 小姐的聲音,然後藉由 Google Speech to Text 來做語音文字的轉換。為了增加語音留言的比例,莊兼愿改用微軟 bing,並想嘗試利用中國科大訊飛 iFLYTEK 來做語音文字的轉換。iFLYTEK 為完全針對中文的產品,因此在中文的辨識上能夠有更細緻的判斷,例如各地區的口音也能夠成功辨識,並且能自動做斷句。然而經過幾番測試後還是放棄使用 iFLYTEK,主要原因是主機在中國很難做到即時,並且沒有支援繁體中文。另外莊兼愿提到將來在語音轉文字的部分,希望能做到文字自動矯正,目前也處在 Google 或 IBM Watson 或 Dialogflow 的抉擇中。總之,這部分最後只改了聲音,而在第二次讓使用者測試時,並沒有因此顯著提升語音留言的比例。
在進入聊天室留言的部分,從第一次到第二次有了顯著的提升,從 13% 進步到 49%,而這麼顯著的成長完全來自 UI 介面的改善。莊兼愿說第一次測試的介面太陽春,看起來很像詐騙,導致使用者的使用意願很低,而在做了改善,特別是加入了 Whoscall 的 Logo 後,有了顯著的提升。
其實整場演講內容並沒有特別提到聊天機器人,算是一個產品開發初期的各種嘗試,但可以想見的是將來使用者進入聊天室留言後,能夠由聊天機器人來做對應,我想這會是 Whoscall 下一步的方向,因此也把這部分納入聊天機器人的標題底下。
二、使用少量標記資料訓練聊天機器人的語意模型 / 朱柏憲 優拓資訊 Data Scientist Lead
朱柏憲首先將聊天機器人分為兩類,一類是希望真的能做到擬人化的通用型機器人,跟他說話彷彿在跟真人說話的效果。另一類則是主要要介紹的內容:任務導向型聊天機器人。也就是根據特定任務來回話的機器人,目前運用比較多的應該是客服的部分。
在做任務導向型的聊天機器人,朱柏憲希望能做到有效率的訓練,也就是藉由少量的訓練資料就完成模型的訓練。
嘗試 1:Bag of words + Logistic Regression
- 好處:訓練預測都快,系統容易測試且穩定
- 問題:準確度低,對錯字或抽換字面的辨識不容易學習
- 模型評估:Top-1 Accuracy
嘗試 2:Word2vec + LR, RF, MLP
- 好處:維度小訓練快,對同義字判斷更準確
- 問題:無法捕捉更複雜的語句結構
- 模型評估:Top-1 Accuracy 遠高於嘗試 1
- 在 LSTM, RNN, etc 上碰到了 Overfitting 的問題
- 違背初衷是希望藉由少量資料來做訓練
嘗試 3:Self-taught Learning
- Seq2Seq Auto Encoder by RNN + DNN = Awesome
看到這麼厲害順手 Google 了一下 Seq2Seq:https://google.github.io/seq2seq/
https://github.com/farizrahman4u/seq2seq
- RNN + attention 會讓模型變得太複雜
- Skip-Thoughts
- 模型評估:成果的 Top-1 Accuracy 與微軟的 LUIS、Google 的 Dialogue Flow 效果相當
- 最後成果令人蠻印象深刻的,連這種火星文也有辦法辨識,然後做應對:
中文斷詞的問題上,朱柏憲表示已經有研究顯示如果 Data 夠多,在 Sequence Classification 時,未必需要斷詞,by character 其實也有不錯的效果。
另外在提問中,有人問到少量資料究竟是多少量?朱柏憲說只有幾百筆 Label 過的資料而已。
其他相關資源:
- NER 的部分採用 Transfer Learning,參考 Semi-supervised sequence tagging with bidirectional language models(ACL 2017)
- OpenAI:Unsupervised Sentiment Neuron
https://blog.openai.com/unsupervised-sentiment-neuron/
- Curiosity-driven Exploration by Self-supervised Prediction(ICML 2017)
- 長文分類上,今年提出了一個 doc2vecC,據朱柏憲說效果很好,大致 Google 了一下待研究:
https://openreview.net/pdf?id=B1Igu2ogg
https://arxiv.org/pdf/1707.02377.pdf
https://github.com/RaRe-Technologies/gensim/issues/1159