【AI筆記】百度UNIT平臺上手
一、百度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流程如下:
要在百度的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
百度的整個框架剛開始使用不好上手,具體講講每個環節
三、UNIT六大步驟
1)建立場景 (場景管理模組)
進入UNIT,通過場景管理先建立場景,場景的定義
一個場景對應一個獨立完整的對話系統,通常按垂類劃分(例如,天氣場景、電視遙控器場景等)。
場景中包含了一系列對話單元用於完成該場景下的所有對話任務(例如,查溫度、換臺等)。
場景內可以含有一系列的“對話單元”,和訊飛AIUI的“應用”內可以建立各式“技能”相似。
1. 模型
模型是場景的屬性,同app版本的概念,每一次訓練後都會產生一個模型,可以不斷的迭代模式,或者修改訓練的技能或素材,對比不同模型的優劣。
2. 沙盒
沙盒是模型使用的場所,必須將模型放入沙盒內才能使用,每次僅會有一個模型在沙盒內生效。
模型和沙盒的關係,和app的版本與手機的關係相同,一個手機只能裝一個app的某個版本,app在手機上執行;一個沙盒只能裝載一個模型,模型在沙盒上執行。
2)建立技能 (技能管理模組)
建立場景完後,就需要去建立場景的技能列表
技能分為兩大類
對話單元技能和問答單元技能,這兩個和此前文章提到的訊飛AIUI的“非問答類技能(自定義技能+開放技能)”與“問答類技能(自定義問答庫)”類似
1. 自定義技能-對話單元技能
對話單元代表著產品能夠執行的某個特定任務
對話單元分為3部分
1.1 意圖
假設使用者的每一句對話都有明確的目的(具體來說,就是讓系統執行某個操作),而意圖(intent)就代表了對話系統對使用者對話目的的理解
例如在一個詢問天氣的場景中,使用者目的可以是想知道某個城市某天的颳風狀況,那意圖就可以是“查詢風速”
1.2 詞槽
此前在文章《【AI筆記】Chatbot中的填槽(Slot Filling)》中,我們聊過詞槽,就是某一類詞語的抽象聚類,可以用來當做條件,當詞槽填充完整(條件滿足)即代表當前的意圖匹配上了使用者的目的。
1.3 澄清話術
澄清話術即當前詞槽如果沒有填充的時候,應該如何引導使用者補充資訊
例如“查詢北京的風速情況”,這裡只有“位置”的詞槽,但是不知道時間,所以澄清,引導使用者“什麼時間呢?”,使用者回覆“週二”,那麼詞槽就填充完整了
“time”=“週二”
“los”=“北京”
1.4 回覆方式
當意圖滿足後,即識別出使用者的目的,就要回應使用者,響應他的目的
那如何算是滿足了條件呢?
1.4.1觸發規則
通過設定觸發規則來觸發回覆內容。這裡點贊下百度的觸發規則設定,通過條件組的或,條件組間條件的與和條件本身可設定為非,組成了一套與或非,具有極大的靈活性。
條件的設定範圍,這裡給了三個
· 會話過程中:即在整個session過程中,填充進入了就算,適用於多輪對話
· 當前使用者輸入:指使用者輸入的上一句,填充進入了才算,此前隔了幾個對話說的內容不算
· 上輪對話意圖:即之前的對話滿足/不滿足某個意圖後,才能觸發符合這個條件
1.4.2回覆方式
設定的觸發規則匹配上了,這時候需要響應使用者的目的,響應的方式有三種
· 直接回復
例如直接回復某個文字,或者執行某個寫好的函式
· 引導對話單元
符合條件後,引導使用者詢問更多的對話單元
例如當使用者問了風速的時候,還可以引導使用者問是否下雨
這個功能適用於目的相似的對話單元之間互相關聯,以展示更多可能意圖給使用者選擇。
或者用於推薦廣告,例如詢問“瘦臉針是什麼”,可以推薦關聯的商品問答單元
· 引導問答單元
類似引導到對話單元,引導問答單元是引導到某個固定的問答上,匹配中某個問答,然後回覆固定的文字內容。
1.4.3 響應的順序
這三種響應方式並非單選,可根據需要選擇,但是當觸發條件都相同,同時符合了三種響應的時候,就按照設定的響應順序取優先順序最高的響應。
2. 自定義技能-問答單元技能
問答技能就是逐字全匹配功能,使用者的一類聚類的意圖,且是問題是固定的,可以直接建立問答技能匹配使用者的問題。
· 優點是,建立快速,只要問題全匹配上了,100%回覆;
· 缺點是,呆板,不能變動,只要問題有一個字沒有匹配上問題,那麼就匹配不上。
3. 預置技能
除了自己建立自定義技能外,還可以使用官方提供的預置技能,不過這個預置技能更像是在演示體驗用的,期待後期開放更多的實用技能或其他開發者開源的技能。
(PS:和訊飛的AIUI不同,即使是預置技能,UNIT中也可以再訓練)
3)準備對話資料 (資料中心模組)
當我們建立好了技能空殼後,接著就要準備訊訓練的對話資料了。
好比確定了產品的Fearture List後,就這就是寫具體的需求文件,之後才能進行開發。
對話資料統一在資料中心錄入和管理
其中 對話單元使用“對話樣本集”和“對話模板集”資料訓練
問答單元使用“問答集”資料訓練
1. 對話樣本集
對話樣本集是對話樣本的集合,可自定義新增,且支援匯入功能(nice!)
· 對話樣本
對話樣本,即需要機器真正進行學習的資料,需要將訓練的資料和對應的對話單元關聯起來,才能進行監督學習(structured learning)。
進入對話樣本集,對所需標註的對話樣本進行標註
為進行監督學習,所以每一條對話樣本都必須和之前設定好的對話單元(意圖)相關聯!並設定好語句中哪些命中了詞槽。
· 正例和負例
並非每條對話樣本都是符合意圖的,例如“吃了嗎?”和“氣象查詢”的場景八竿子打不著,如果不告訴機器這兩者是沒有關係的,機器可能會直接將“吃了嗎?”當做某個意圖,從而澄清問“你想問的是哪個城市的天氣”
所以需要有負反饋,告訴machine哪些內容是無關的,這些和場景無關的樣本就稱為負例
同理,正例就是和場景相關的對話樣本的標註
負例標註時,選擇意圖為SYS_OTHER
·
2. 對話模板集
對話模板集是對話模板的集合
對話模板實際和問答特別像,只是問答是100%逐字全匹配,而對話模板則是動態匹配。
2.1 詞類
先講講UNIT新出現的一種詞,特徵詞。
在UNIT中,句子中的詞語可以分為三種型別“特徵詞”、“詞槽”、“普通詞語”
2.1.1 特徵詞(槽)
是一類詞的聚類集合,用一個命名符號表示這一類詞。
· 特徵詞(槽)和詞槽的區別在於
1. 特徵詞不會被識別到json的結果中,僅用來方便機器進行匹配使用;
2. 特徵詞的顆粒度可以很粗,例如“我想查詢”,“幫我查詢下”,“查詢”,“查”都可以歸為“使用者意願”這個特徵詞中,但是詞槽一般會分的較細
· 特徵詞建立/編輯
僅能通過批量上傳的方式上傳,這點不是很友好。
2.1.2 詞槽
即在對話單元中設定的詞槽
2.1.3 普通詞語
除了“特徵詞”和“詞槽”以外的詞
2.2 對話模板
對話模板="選擇意圖"+"設定對應的句子公式"
machine直接拿使用者的問題,去匹配這個句子公式,匹配上了就用,匹配不上就不用。
格式即為上述三種型別詞之間任意組合。
看一個案例
上面的模板
“[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個問答集可建立多個問答對
一個問答對可支援多對多的回答,如果有多個答案的時候,隨機回覆一個答案
以上就是技能空殼的設定和準備技能訓練資料的模組
4)訓練技能(訓練與驗證模組)
技能殼和對話資料準備好了之後,就可以進入訓練,生成真正的技能
1. 沙盒與模型
正如前文提到的,模型需要訓練,每次訓練都是重新開始,新生成一個版本,新生成的模型需要放入沙盒中才能運作。
2. 訓練新模型
訓練的時候,“問答集”、“對話模板集”和“對話樣本集”是分開訓練的,其中“對話模板”和“對話樣本集”可選擇是否新訓練。
從這裡可以看出,實際這兩個是不同的技能,使用的學習的方式也不同,對話模板的訓練僅是設定好“匹配的模板”;
而對話樣本集,則是真正的使用RNN進行訓練,耗時較長,差不多,5-10分鐘+100條樣本/分鐘才能訓練好。
通過僅新訓練某一技能的方式,可以方便針對不同的調整進行訓練,同時對比訓練的結果。
資料的來源就是此前準備的各種資料
3. 隱藏技能-生成訓練資料
UNIT有一個隱藏的技能——直接幫你生成訓練資料,非常強大!
在對話中直接“@UNIT 推薦對話樣本”,讓機器建立對話樣本集(未標註的)
生成需要一定時間,可通過“@UNIT 查詢推薦狀態”查詢進度
5)驗證技能 (訓練與驗證模組)
訓練好技能後,直接和chatbot瞎聊,看看有沒有訓練歪了,有“體驗模式”和“學習模式”兩種
1. 體驗模式
體驗模式就是和chatbot瞎聊,對話內容不會加入到“對話樣本集”中的“預設集”,期間可以@chatbot修改意圖,詞槽等
2. 學習模式
學習模式,即與chatbot對話內容會加入到“對話樣本集”中的“預設集(預設的對話樣本集)”的模式,此外,還會直接將chatbot識別的結果作為對話樣本的標註結果一同加入到“預設集”中。
6)釋出場景 (場景釋出模組)
場景訓練好了之後,可以通過百度雲呼叫,也可以使用DuerOS使用。
1. 百度雲呼叫
在百度雲控制檯中建立應用,將場景新增到具體的應用中,之後可以呼叫應用的API使用應用內容的場景功能。
2. DuerOS使用
訓練好的自定義技能,還可以釋出到DuerOS開放平臺中,供使用者直接使用通過語音對話的方式,喚起技能和使用技能。
DuerOS技能開放平臺,英文全稱DuerOS Bots Platform,是DuerOS為第三方開發者提供的一整套技能開發、測試、部署工具的開放平臺。第三方開發者可以在平臺上,通過視覺化介面,簡單、高效地開發各類個性化技能。
整體講完,再回過頭看下,百度UNIT的結構還是很清晰的
三、評價下百度UNIT
1)優點
1. “真·Machine Learning”
使用對話樣本集訓練資料,真正的使用RNN去train,最終表現結果不錯,讓人欣喜。通過封裝和圖形化的互動,讓不懂人工智慧底層技術的使用者也能訓練出自己想要的模型,大大降低了訓練任務型chatbot的入門門檻。
2. 支援多輪對話,操作簡單
看過其他平臺的多輪對話,需要自己設定複雜的路徑,太過繁瑣,而UNIT結果清晰,通過響應條件與或非的設定,再加上詞槽的澄清,使得建立一個多輪對話變得很簡單。
3. 百度全開放的AI能力
在PC時代,大家瘋狂的吐槽百度的“惡”,其中的“百度全家桶”臭名遠揚,但是在AI上,百度真的誠意滿滿!
AI幾大領域,ASR,TTS,CV,NLP,AR均有開放,同時還開放了開源的資料集,良心!
配合百度的雲應用和DuerOS,整個大開放平臺上,技能的從生成、訓練、上線、呼叫、維護都可以在平臺上完成,這樣強大的賦能,為開發者節省了大量的時間。
2)缺點
1. 頁面結構功能強大,但較為複雜,不好上手
功能強大,剛看到的時候很懵,不知道如何下手,看了兩遍教學視訊才弄懂了,感覺頁面結構較為混亂。
如果修改為頂部欄一級導航和側邊欄二級導航,可能會更好理解點
· 一級導航,頂部欄代表關鍵的環節
“技能與資料設定” -》“訓練與驗證” -》“更多設定” -》“場景釋出”
· 二級導航,將該環節的細分步驟列出
例如“技能與資料”設定中,僅放入“技能管理”和“技能資料管理”
再吐槽一點,很多二級頁面沒有返回,點選進入三級頁面要再返回的時候,沒有入口,需要再點選一級入口跳轉…
2. 標註資料過程耗時耗力,需優化互動
資料標註量太大時,耗時很長,會很痛苦,互動需要優化以提高效率。
例如意圖多的時候,下拉互動就很不友好,要麼新增查詢意圖,要麼修改為多標籤展示,提高標註效率。
再比如訓練的時候,@chatbot的方式修改意圖,不方便,直接將入口放出來可點選效率更高
3. 無法做批量的Testing
現有的介面只能和chatbot一句話一句話對話,而且沒法統計正確率,效率很低且不知道什麼時候準確率是符合預期(例如準確率達到95%以上)可以上線了。
之後如果能批量上傳Testing的資料(設定好對話文字,意圖,詞槽),將Testing給chatbot的對話文字識別出的結果和上傳的資料進行對比,形成報表,就能知道目前的準確率,這點需要優化。
4. 等待時間較長
每個模型實際都用資料去train,所以訓練時間較長…不過也能理解,畢竟是真的在train。
3)總結
雖然UNIT的頁面的結構剛開始用容易暈,但熟悉後,整體上從建立場景到最終場景釋出,整個流程還是比較順暢的。
百度決心All in AI,投入了大量的人力打磨,加上百度本身的技術,目前的開放平臺功能已經很強大,對比此前體驗的訊飛AIUI,拉開訊飛很大的距離。
而平臺封裝了大量底層機器學習演算法,圖形化介面的操作,大大降低了AI使用門檻,良心良心良心!
我自己有個判斷,再過3年,大廠的AI基礎設施也就搭建完畢了,之後就是看誰能利用好大廠的附能,形成強大的節點,收割新一波的流量。
5-10年,隨著技術不斷成熟,不斷的封裝介面化,應用層會有一波大爆發,期待ing…
慣例打個分
· 易用性:4星
· 智慧性:4星
· 開放性:5星
#推薦閱讀
相關文章
- 跨平臺同步筆記工具筆記
- 上手百度地圖--開放平臺必懂API使用場合(PC端)地圖API
- 京東量化平臺學習筆記筆記
- 百度智慧雲釋出曦靈-AI手語平臺AI
- 快速上手雲原生安全平臺 NeuVector
- 跨平臺雲筆記的安裝筆記
- SQL Server工作平臺學習筆記SQLServer筆記
- ai開放平臺AI
- 部署AI平臺-OllamaAI
- rh131筆記---unit1-system initialization筆記
- rh131筆記---unit2-package management筆記Package
- rh131筆記---unit3-kernel services筆記
- rh131筆記---unit4-system services筆記
- rh131筆記--unit6-filesystem managemen筆記
- webpack 學習筆記:上手就來Web筆記
- Ficow 的 AI 平臺快速上手指南(ChatGPT, NewBing, ChatGLM-6B, cursor.so)AIChatGPT
- 用 ai 自動生成 unit testAI
- 折騰筆記[2]-跨平臺打包tauri程式筆記
- AI雲平臺介紹AI
- 百度雲打造“最落地”AI解決方案 釋出業界唯一AI to B平臺AI
- 2小時上手Spring Boot 筆記Spring Boot筆記
- Maven快速上手使用指南的筆記Maven筆記
- JVM筆記 -- Java跨平臺和JVM跨語言JVM筆記Java
- Dubbo | Dubbo快速上手筆記 - 環境與配置筆記
- Spring Boot 學習筆記(1):快速上手Spring Boot筆記
- AI學習筆記AI筆記
- 解析百度Apollo自動駕駛平臺自動駕駛
- 百度雲平臺使用說明
- 如何處理SAP雲平臺錯誤訊息 there is no compute unit quota for subaccount
- 百度釋出全球首款支援 OAI 標準和液冷的 AI 計算平臺AI
- 【NLP教程】用python呼叫百度AI開放平臺進行情感傾向分析PythonAI
- CDH5大資料實驗平臺搭建筆記H5大資料筆記
- 精通C#學習筆記--C# 與 .NET平臺C#筆記
- 【讀書筆記】Android平臺的漏洞挖掘和分析筆記Android
- linux平臺開發自學筆記(一)-環境搭建Linux筆記
- 初步上手Git軟體及GitHub平臺:基本操作方法Github
- Linux平臺上手動解除安裝Oracle資料庫LinuxOracle資料庫
- AI開放平臺-科大訊飛AI