【AI筆記】百度UNIT平臺上手

weixin_33782386發表於2018-03-14

一、百度UNIT簡介

上週體驗了訊飛的AIUI後,接著來體驗下百度的UNIT,繼續瞭解各家在人機對話領域的開放平臺。

UNIT是百度AI開發平臺中開放的一項人機對話能力,官方解釋如下

隨著AI技術和理念的興起,很多產品都希望採用對話式的人機互動方式。然而對話系統的研發對於大多數開發者而言卻是一個很困難的工作,對技術和資料的要求都很高。

為此,百度將積累多年的自然語言理解與互動技術對外開放,推出了可定製的對話系統開發UNIT(Understanding and Interaction Technology),將業界領先的技術能力輸出給廣大的開發者,以便降低對話系統的研發門檻。


wiki:https://ai.baidu.com/docs#/UNIT-guide/top

教學視訊:https://ai.baidu.com/support/video#video-category-unit


二、百度UNIT結構

· 整體結構

因為我對流程很重視,所以不僅會關注UNIT實際訓練出chatbot的效果,還會關注它的使用流程,所以會畫上流程圖說明。

我一直認為一個好的流程是“美”的,高效的。百度UNIT流程如下:

1060404-3c81bc0f975fcb7c.png

要在百度的UNIT建立一個可用的chatbot,主要有6大步驟

1. 建立場景:根據業務需要建立場景,一個場景即一個可對外輸出使用的功能

例如“控制電視場景”、“辦理信用卡場景”等


2. 建立技能:技能是功能的最小單位,用於識別使用者意圖。

例如“控制電視”的場景中,技能(或意圖)可以是“切換頻道”,“調整音量”,“開關機”等


3. 準備訓練資料:技能建立好之後,只是一個空殼

還是“控制電視”的場景,我們只是腦中想好了一個功能是“切換頻道”,但是需要準備好資料,讓machine去學習,什麼是“切換頻道”


4. 訓練技能:當技能空殼建立好後,資料也準備好了,扔進去一鍋亂燉即可,訓練技能


5. 驗證技能:當machine訓練好後,我們要看下machine學的好不好,需要考考他,互動下

例如發出“切換CCTV5”,結果執行了“關機”,你就一臉懵逼了,這時候就要再調整,再訓練……


6. 釋出場景:訓練好技能,就可以釋出上線見客人了


這整個過程和做產品特別的像

   · 建立場景(UNIT)  ->  發起專案(PM)

   · 建立技能(UNIT)  ->  擬定Fearture List(PM)

   · 準備訓練資料(UNIT)  ->  撰寫PRD文件(PM)

   · 訓練技能(UNIT)  ->  投入研發(PM)

   · 驗證技能(UNIT)  ->  驗收需求(PM)

   · 釋出場景(UNIT)  ->  專案上線(PM)

是不是有點意思:P


百度的整個框架剛開始使用不好上手,具體講講每個環節

1060404-dd59496ea57230ad.png


三、UNIT六大步驟

1)建立場景 (場景管理模組)

1060404-8717de44fa4f4eb9.png

進入UNIT,通過場景管理先建立場景,場景的定義

一個場景對應一個獨立完整的對話系統,通常按垂類劃分(例如,天氣場景、電視遙控器場景等)。

場景中包含了一系列對話單元用於完成該場景下的所有對話任務(例如,查溫度、換臺等)。

場景內可以含有一系列的“對話單元”,和訊飛AIUI的“應用”內可以建立各式“技能”相似。


1. 模型

模型是場景的屬性,同app版本的概念,每一次訓練後都會產生一個模型,可以不斷的迭代模式,或者修改訓練的技能或素材,對比不同模型的優劣。


2. 沙盒

沙盒是模型使用的場所,必須將模型放入沙盒內才能使用,每次僅會有一個模型在沙盒內生效。

1060404-5636980e622394a7.png

模型和沙盒的關係,和app的版本與手機的關係相同,一個手機只能裝一個app的某個版本,app在手機上執行;一個沙盒只能裝載一個模型,模型在沙盒上執行。


2)建立技能 (技能管理模組)

建立場景完後,就需要去建立場景的技能列表

1060404-8be67c2866f5c836.png

技能分為兩大類

對話單元技能問答單元技能,這兩個和此前文章提到的訊飛AIUI的“非問答類技能(自定義技能+開放技能)”與“問答類技能(自定義問答庫)”類似


1. 自定義技能-對話單元技能 

對話單元代表著產品能夠執行的某個特定任務

對話單元分為3部分

1060404-b103fbb6bb05de91.png

1.1 意圖

假設使用者的每一句對話都有明確的目的(具體來說,就是讓系統執行某個操作),而意圖(intent)就代表了對話系統對使用者對話目的的理解

例如在一個詢問天氣的場景中,使用者目的可以是想知道某個城市某天的颳風狀況,那意圖就可以是“查詢風速”

1060404-b028fa4c804ee907.png


1.2 詞槽

此前在文章《【AI筆記】Chatbot中的填槽(Slot Filling)》中,我們聊過詞槽,就是某一類詞語的抽象聚類,可以用來當做條件,當詞槽填充完整(條件滿足)即代表當前的意圖匹配上了使用者的目的。

1060404-8ed9879218465a15.png


1.3 澄清話術

澄清話術即當前詞槽如果沒有填充的時候,應該如何引導使用者補充資訊

例如“查詢北京的風速情況”,這裡只有“位置”的詞槽,但是不知道時間,所以澄清,引導使用者“什麼時間呢?”,使用者回覆“週二”,那麼詞槽就填充完整了

   “time”=“週二”

   “los”=“北京”

1060404-e58ee6277bb91368.png


1.4 回覆方式

當意圖滿足後,即識別出使用者的目的,就要回應使用者,響應他的目的

那如何算是滿足了條件呢?

1.4.1觸發規則

通過設定觸發規則來觸發回覆內容。這裡點贊下百度的觸發規則設定,通過條件組的或,條件組間條件的與和條件本身可設定為非,組成了一套與或非,具有極大的靈活性。

1060404-faebf9e61cb97c7f.png

條件的設定範圍,這裡給了三個

   · 會話過程中:即在整個session過程中,填充進入了就算,適用於多輪對話

   · 當前使用者輸入:指使用者輸入的上一句,填充進入了才算,此前隔了幾個對話說的內容不算

   · 上輪對話意圖:即之前的對話滿足/不滿足某個意圖後,才能觸發符合這個條件

1060404-d94f4cddd972f684.png

1.4.2回覆方式

設定的觸發規則匹配上了,這時候需要響應使用者的目的,響應的方式有三種

    · 直接回復

例如直接回復某個文字,或者執行某個寫好的函式

1060404-56b010cbf3225d18.png


    · 引導對話單元

符合條件後,引導使用者詢問更多的對話單元

例如當使用者問了風速的時候,還可以引導使用者問是否下雨

1060404-0bda7a899e0d5566.png


這個功能適用於目的相似的對話單元之間互相關聯,以展示更多可能意圖給使用者選擇。

或者用於推薦廣告,例如詢問“瘦臉針是什麼”,可以推薦關聯的商品問答單元

1060404-2898e5c0a2ba75aa.png


    · 引導問答單元

類似引導到對話單元,引導問答單元是引導到某個固定的問答上,匹配中某個問答,然後回覆固定的文字內容。

1060404-122e7a82f737ae89.png


1.4.3 響應的順序

這三種響應方式並非單選,可根據需要選擇,但是當觸發條件都相同,同時符合了三種響應的時候,就按照設定的響應順序取優先順序最高的響應。

1060404-9485f5c2e33d7345.png


2. 自定義技能-問答單元技能

問答技能就是逐字全匹配功能,使用者的一類聚類的意圖,且是問題是固定的,可以直接建立問答技能匹配使用者的問題。

1060404-3cf72357b36341a7.png

    · 優點是,建立快速,只要問題全匹配上了,100%回覆;

    · 缺點是,呆板,不能變動,只要問題有一個字沒有匹配上問題,那麼就匹配不上。


3. 預置技能

除了自己建立自定義技能外,還可以使用官方提供的預置技能,不過這個預置技能更像是在演示體驗用的,期待後期開放更多的實用技能或其他開發者開源的技能。

(PS:和訊飛的AIUI不同,即使是預置技能,UNIT中也可以再訓練)

1060404-4acaea859b127908.png


3)準備對話資料 (資料中心模組)

當我們建立好了技能空殼後,接著就要準備訊訓練的對話資料了。

好比確定了產品的Fearture List後,就這就是寫具體的需求文件,之後才能進行開發。

1060404-6c3e9754e7b0c3ad.png


對話資料統一在資料中心錄入和管理

其中 對話單元使用“對話樣本集”和“對話模板集”資料訓練

問答單元使用“問答集”資料訓練

1060404-88484a8fe95100dd.png


1. 對話樣本集

對話樣本集是對話樣本的集合,可自定義新增,且支援匯入功能(nice!)

· 對話樣本

對話樣本,即需要機器真正進行學習的資料,需要將訓練的資料和對應的對話單元關聯起來,才能進行監督學習(structured learning)。


進入對話樣本集,對所需標註的對話樣本進行標註

1060404-8ba8a74b69f26e3e.png

為進行監督學習,所以每一條對話樣本都必須和之前設定好的對話單元(意圖)相關聯!並設定好語句中哪些命中了詞槽。


· 正例和負例

並非每條對話樣本都是符合意圖的,例如“吃了嗎?”和“氣象查詢”的場景八竿子打不著,如果不告訴機器這兩者是沒有關係的,機器可能會直接將“吃了嗎?”當做某個意圖,從而澄清問“你想問的是哪個城市的天氣”


所以需要有負反饋,告訴machine哪些內容是無關的,這些和場景無關的樣本就稱為負例

同理,正例就是和場景相關的對話樣本的標註


負例標註時,選擇意圖為SYS_OTHER

1060404-19be9fb10e32f69b.png

· 

2. 對話模板集

對話模板集是對話模板的集合

對話模板實際和問答特別像,只是問答是100%逐字全匹配,而對話模板則是動態匹配。


2.1 詞類

先講講UNIT新出現的一種詞,特徵詞

在UNIT中,句子中的詞語可以分為三種型別“特徵詞”、“詞槽”、“普通詞語”

2.1.1 特徵詞(槽)

是一類詞的聚類集合,用一個命名符號表示這一類詞。


· 特徵詞(槽)和詞槽的區別在於

1. 特徵詞不會被識別到json的結果中,僅用來方便機器進行匹配使用;

2. 特徵詞的顆粒度可以很粗,例如“我想查詢”,“幫我查詢下”,“查詢”,“查”都可以歸為“使用者意願”這個特徵詞中,但是詞槽一般會分的較細

· 特徵詞建立/編輯

1060404-1c03c773fdded1b8.png

僅能通過批量上傳的方式上傳,這點不是很友好。


2.1.2 詞槽

即在對話單元中設定的詞槽


2.1.3 普通詞語

除了“特徵詞”和“詞槽”以外的詞



2.2 對話模板

對話模板="選擇意圖"+"設定對應的句子公式"

machine直接拿使用者的問題,去匹配這個句子公式,匹配上了就用,匹配不上就不用。

格式即為上述三種型別詞之間任意組合。


看一個案例

1060404-6d02ac6c8ee13f9b.png


上面的模板

“[W:0-10][D:user_sys_los][W:0-3][D:user_sys_time][W:0-10]”

是用來匹配“xxx地點xx時間會不會下雨”,其中[W:0-6]是萬用字元的意思,即可以是0~6個字元,一個漢字算兩個字元。


如果使用者問“你好,北京這地方明天會下雨嗎?”能匹配上模板

但是如果使用者問“你好,明天北京這地方會下雨嗎?”模板就gg了,因為使用者問的內容和模板
xxx地點xx時間”
的語句順序匹配不上。


所以模板讓機器學會語言的匹配規則,規則非常死板,和套用公式相同,難以變動。

但是優勢可以快速建立,且通過萬用字元,能讓對話模板具有一定的擴充泛化匹配的能力。


3. 問答集

問答集是的問答對的集合。

問答對就是對問題的文字逐字匹配,100%匹配的時候,回覆對應的內容。


1個問答集可建立多個問答對

一個問答對可支援多對多的回答,如果有多個答案的時候,隨機回覆一個答案


1060404-c1d5e49c420c4821.png


以上就是技能空殼的設定和準備技能訓練資料的模組

1060404-9eb91c377b558333.png


4)訓練技能(訓練與驗證模組)

技能殼和對話資料準備好了之後,就可以進入訓練,生成真正的技能

1060404-7346afc5075df203.png

1. 沙盒與模型

正如前文提到的,模型需要訓練,每次訓練都是重新開始,新生成一個版本,新生成的模型需要放入沙盒中才能運作。

1060404-a92abc4fc770a039.png


2. 訓練新模型

1060404-6c608eae3a771daf.png

訓練的時候,“問答集”、“對話模板集”和“對話樣本集”是分開訓練的,其中“對話模板”和“對話樣本集”可選擇是否新訓練。

從這裡可以看出,實際這兩個是不同的技能,使用的學習的方式也不同,對話模板的訓練僅是設定好“匹配的模板”;

而對話樣本集,則是真正的使用RNN進行訓練,耗時較長,差不多,5-10分鐘+100條樣本/分鐘才能訓練好。


通過僅新訓練某一技能的方式,可以方便針對不同的調整進行訓練,同時對比訓練的結果。


資料的來源就是此前準備的各種資料

1060404-91adfd757e811a5f.png


3. 隱藏技能-生成訓練資料

UNIT有一個隱藏的技能——直接幫你生成訓練資料,非常強大!

在對話中直接“@UNIT 推薦對話樣本”,讓機器建立對話樣本集(未標註的)

生成需要一定時間,可通過“@UNIT 查詢推薦狀態”查詢進度

1060404-9ed2b83b347ebcef.png


5)驗證技能 (訓練與驗證模組)

訓練好技能後,直接和chatbot瞎聊,看看有沒有訓練歪了,有“體驗模式”和“學習模式”兩種

1060404-e96786f1f22e4785.png

1. 體驗模式

體驗模式就是和chatbot瞎聊,對話內容不會加入到“對話樣本集”中的“預設集”,期間可以@chatbot修改意圖,詞槽等

1060404-4494a2b66e57537f.png

2. 學習模式

學習模式,即與chatbot對話內容會加入到“對話樣本集”中的“預設集(預設的對話樣本集)”的模式,此外,還會直接將chatbot識別的結果作為對話樣本的標註結果一同加入到“預設集”中。

1060404-9ffffbef07230f07.png


6)釋出場景 (場景釋出模組)

1060404-d30ef3666f56eb5b.png

場景訓練好了之後,可以通過百度雲呼叫,也可以使用DuerOS使用。

1. 百度雲呼叫

在百度雲控制檯中建立應用,將場景新增到具體的應用中,之後可以呼叫應用的API使用應用內容的場景功能。


2. DuerOS使用

訓練好的自定義技能,還可以釋出到DuerOS開放平臺中,供使用者直接使用通過語音對話的方式,喚起技能和使用技能。

DuerOS技能開放平臺,英文全稱DuerOS Bots Platform,是DuerOS為第三方開發者提供的一整套技能開發、測試、部署工具的開放平臺。第三方開發者可以在平臺上,通過視覺化介面,簡單、高效地開發各類個性化技能。


整體講完,再回過頭看下,百度UNIT的結構還是很清晰的

1060404-dd59496ea57230ad.png



三、評價下百度UNIT

1)優點

1. “真·Machine Learning”

使用對話樣本集訓練資料,真正的使用RNN去train,最終表現結果不錯,讓人欣喜。通過封裝和圖形化的互動,讓不懂人工智慧底層技術的使用者也能訓練出自己想要的模型,大大降低了訓練任務型chatbot的入門門檻。


2. 支援多輪對話,操作簡單

看過其他平臺的多輪對話,需要自己設定複雜的路徑,太過繁瑣,而UNIT結果清晰,通過響應條件與或非的設定,再加上詞槽的澄清,使得建立一個多輪對話變得很簡單。


3. 百度全開放的AI能力

在PC時代,大家瘋狂的吐槽百度的“惡”,其中的“百度全家桶”臭名遠揚,但是在AI上,百度真的誠意滿滿!

1060404-0df162a177461566.png

AI幾大領域,ASR,TTS,CV,NLP,AR均有開放,同時還開放了開源的資料集,良心!

配合百度的雲應用和DuerOS,整個大開放平臺上,技能的從生成、訓練、上線、呼叫、維護都可以在平臺上完成,這樣強大的賦能,為開發者節省了大量的時間。


2)缺點

1. 頁面結構功能強大,但較為複雜,不好上手

功能強大,剛看到的時候很懵,不知道如何下手,看了兩遍教學視訊才弄懂了,感覺頁面結構較為混亂。

1060404-25079e21662cc2a3.png


如果修改為頂部欄一級導航和側邊欄二級導航,可能會更好理解點

1060404-dd1c9f25241ed9d8.png

· 一級導航,頂部欄代表關鍵的環節

“技能與資料設定”  -》“訓練與驗證”  -》“更多設定”  -》“場景釋出”

· 二級導航,將該環節的細分步驟列出

例如“技能與資料”設定中,僅放入“技能管理”和“技能資料管理”


再吐槽一點,很多二級頁面沒有返回,點選進入三級頁面要再返回的時候,沒有入口,需要再點選一級入口跳轉…


2. 標註資料過程耗時耗力,需優化互動

資料標註量太大時,耗時很長,會很痛苦,互動需要優化以提高效率。

1060404-5a0f48cd36650474.png

例如意圖多的時候,下拉互動就很不友好,要麼新增查詢意圖,要麼修改為多標籤展示,提高標註效率。

再比如訓練的時候,@chatbot的方式修改意圖,不方便,直接將入口放出來可點選效率更高


3. 無法做批量的Testing

現有的介面只能和chatbot一句話一句話對話,而且沒法統計正確率,效率很低且不知道什麼時候準確率是符合預期(例如準確率達到95%以上)可以上線了。

之後如果能批量上傳Testing的資料(設定好對話文字,意圖,詞槽),將Testing給chatbot的對話文字識別出的結果和上傳的資料進行對比,形成報表,就能知道目前的準確率,這點需要優化。


4. 等待時間較長

每個模型實際都用資料去train,所以訓練時間較長…不過也能理解,畢竟是真的在train。

1060404-69dc6bf9f19d6030.png


3)總結

雖然UNIT的頁面的結構剛開始用容易暈,但熟悉後,整體上從建立場景到最終場景釋出,整個流程還是比較順暢的。

百度決心All in  AI,投入了大量的人力打磨,加上百度本身的技術,目前的開放平臺功能已經很強大,對比此前體驗的訊飛AIUI,拉開訊飛很大的距離。

而平臺封裝了大量底層機器學習演算法,圖形化介面的操作,大大降低了AI使用門檻,良心良心良心!


我自己有個判斷,再過3年,大廠的AI基礎設施也就搭建完畢了,之後就是看誰能利用好大廠的附能,形成強大的節點,收割新一波的流量。

5-10年,隨著技術不斷成熟,不斷的封裝介面化,應用層會有一波大爆發,期待ing…


慣例打個分

· 易用性:4星

· 智慧性:4星

· 開放性:5星



#推薦閱讀

-【AI筆記】訊飛人機智慧互動平臺(AIUI)的武林祕籍

-【AI筆記】Chatbot中的填槽(Slot Filling)

相關文章