在續(xù)航更久、動力更強(qiáng)、充電更快的硬件之外,造車新勢力們也開始追求更智能的人車交互方式。
在幾小時孤獨的長途路上,在日常通勤的熟悉景色中,在全家團(tuán)聚的探親途中,陪著你的都是身邊的車。而在 Google 發(fā)布的機(jī)器學(xué)習(xí)開源框架 TensorFlow 的幫助下,電動汽車制造商蔚來第一次讓這個人類的好伙伴活了起來,讓車變得“有禮貌、會傾聽、會思考、知冷暖”。
這位好伙伴甚至還有情緒、有人設(shè),它的名字叫 NOMI:
應(yīng)用了基于 TensorFlow 構(gòu)建的自然語言理解模型之后,NOMI 可以學(xué)習(xí)理解用戶發(fā)出的各種復(fù)雜指令:調(diào)節(jié)溫度、開關(guān)車窗、導(dǎo)航定位、監(jiān)控車況……車主在駕駛過程中只需指揮 NOMI 幫自己完成工作,不需要再動手。
在 TensorFlow 的幫助下,為汽車注入靈魂變得不再遙不可及。
萬能 NOMI調(diào)教智能語音助手 NOMI 的第一步,是教會它如何理解人類的語言。
人類的語言非常復(fù)雜,不僅可能因語境不同而產(chǎn)生歧義,有時還“話里有話”,不能像計算機(jī)指令一樣簡潔明了地表達(dá)需求。因此,對于機(jī)器而言,“理解”的過程就是把自然語言分解成各種小任務(wù)的過程。
而對于 NOMI 來說,來自車主的千奇百怪的指令可以大致分為三種:單任務(wù)、多任務(wù)和多輪對話。
單任務(wù)是最簡單的一環(huán),比如“NOMI,把車窗打開”,或者“NOMI,把播放器音量調(diào)高”等指令,NOMI 可以自動判斷并執(zhí)行操作。此外,對于一些模糊的指令,NOMI 也可以分析識別用戶隱藏意圖。當(dāng)車主提出:“NOMI,太陽太刺眼了”,NOMI 會自動打開遮陽簾;車主提出“NOMI,車快沒電了”,NOMI 可以理解車主的充電需求,并自動尋找周邊的充電站。
多任務(wù)則涉及到一句話中的一連串指令,比如“打開副駕駛座椅加熱和按摩功能”。
對于 NOMI 來說,這些指令都只是剛剛?cè)腴T,NOMI 以及其他的智能語音助手面對的真正挑戰(zhàn)其實是多輪對話。多輪對話不僅涉及多方面知識的抽取、推理和應(yīng)用(如語言知識、情感信息、常識知識等),還涉及對包括自然語言理解在內(nèi)的其他人工智能核心技術(shù)(如用戶畫像、對話管理等)的綜合利用。
人工智能和人工智障往往只有一線之隔,如果智能語音助手對于指令的理解僅僅停留在單句層面而無法聯(lián)系上下文,就會出現(xiàn)“車轱轆話來回說”的情況:
想要加入人類的聊天,語音助手首先需要理解用戶主要說了什么,怎么說的以及對話的邏輯流程。為了做到這一點,工程師需要對之前一輪甚至更多輪的對話進(jìn)行建模,把上文中有用的槽值繼承下來,以便理解上下文意圖。想做到這一點實在不太容易,目前較為成熟的商用語音助手都曾經(jīng)在多輪對話上翻過車。
為了讓智能助手“更聰明”,用更多的數(shù)據(jù)訓(xùn)練是一個提高預(yù)測性能的好方法。如果訓(xùn)練數(shù)據(jù)不足,會造成擬合不足;如果網(wǎng)絡(luò)模型參數(shù)太少,只會得到低精度的模型……但更多的數(shù)據(jù)也意味著更沉重的計算負(fù)擔(dān),一次完整的訓(xùn)練動輒用去數(shù)天,甚至幾周、幾個月的時間。
因此,在過去很長一段時間里,智能語音助手都是少數(shù)幾個大廠才做得起的“奢侈品”。然而 TensorFlow 的出現(xiàn)大大提高了語音助手的開發(fā)效率,讓語音助手不再遙不可及。
蔚來利用 TensorFlow 豐富的預(yù)訓(xùn)練模塊開發(fā) NOMI,其中包括而不限于雙向循環(huán)神經(jīng)網(wǎng)絡(luò)(Bi-LSTM)、文本卷積特征(CNN)、注意力機(jī)制(Attention Mechanism)、自注意力機(jī)制(Self-Attention)、條件隨機(jī)場(CRF)等。
同時,蔚來利用支持的多機(jī)多卡分布式訓(xùn)練的 TensorFlow 2.0 多機(jī)并行縮減訓(xùn)練時間,讓 NOMI 站在“前輩們”的肩膀上,達(dá)到更高的表現(xiàn)水準(zhǔn)。
在 TensorFlow 的框架下,NOMI 的語義理解該系統(tǒng)對用戶的指令(Query)進(jìn)行建模,并能通過多層次的表示學(xué)習(xí)提取用戶指令中隱藏的信息,其中包括域信息(Domain)、意圖(Intent)、槽位(Slot)、句式信息(Ques_type)等抽象信息。除此之外,NOMI 還保留了上一輪對話的指令信息(Query),通過兩輪更加豐富的信息輸入,讓 NOMI 具有了聯(lián)系上下文的能力。
如今,NOMI 已經(jīng)可以和車主進(jìn)行非常復(fù)雜的多輪對話。
以駕駛過程中的溫度調(diào)節(jié)為例:
用戶query:Hi Nomi,主駕溫度調(diào)到20度
結(jié)果反饋:好的,主駕溫度即將調(diào)到20度
用戶query:再高點兒
結(jié)果反饋:好的,馬上調(diào)整主駕到22度
用戶query:還是關(guān)了吧
結(jié)果反饋:正在關(guān)閉前排空調(diào)
在這個例子中,NOMI 自動抽取了前一輪對話中的主語,即“主駕溫度”,在車主追加“再高點兒”的指令時,自動理解到車主指的是上文中提到的主駕空調(diào),從而自動進(jìn)行調(diào)整。在第三輪任務(wù)中,NOMI 繼續(xù)保留著從前兩輪對話中繼承到的主語,不需要用戶多費口舌。
此外,NOMI 還有個性化的、基于知識圖譜的智能問答功能。傳統(tǒng)汽車附帶的厚厚的一本用戶手冊,已經(jīng)全部存在了 NOMI 的“大腦”里,隨時可以通過語音調(diào)用 ,再也不需要費勁搜索。
比如當(dāng)用戶提出:“Hi Nomi,教教我怎么充電”,NOMI 會自動反饋:“ES6有直流和交流兩種充電插口:交流慢充口位于車輛主駕側(cè),直流快充口位于車輛副駕側(cè)”。
把強(qiáng)大的算力,放進(jìn)“小盒子”里善解人意的 NOMI 雖好,但距離實際應(yīng)用還有最后一步:工程師需要把依賴強(qiáng)大算力的 NOMI 塞進(jìn)汽車?yán)?/strong>。
然而車機(jī)端資源非常有限,無論是計算能力還是內(nèi)存數(shù)量,都不能與 PC 相比,因此哪怕 NOMI 做得再好,也有可能出現(xiàn)“帶不動”的情況。
為了把大 NOMI 裝進(jìn)小汽車,必須要對模型進(jìn)行結(jié)構(gòu)裁剪、壓縮和復(fù)雜的參數(shù)調(diào)節(jié),這個工程的繁瑣和復(fù)雜程度不亞于重新構(gòu)建一個小的自然語言處理模型。
好在 TensorFlow 早就為模型的部署留好了后路。
為了讓 NOMI 在嵌入式環(huán)境運行,蔚來在訓(xùn)練階段就使用了較低精度的 INT8 量化訓(xùn)練。訓(xùn)練后,可以方便地在 TensorFlow 平臺上把模型轉(zhuǎn)化為專為移動設(shè)備設(shè)計的輕量級的 TersorFlow Lite,省去了冗雜的裁剪壓縮過程。
在實際運用過程中,NOMI 在云端和本地的兩個大腦會并行進(jìn)行計算。云端部署完整模型,計算能力較強(qiáng),本地部署壓縮模型,算力相對有限,在本地連接云端超時的情況下,計算會自動轉(zhuǎn)入本地進(jìn)行。
在 TensorFlow 的幫助下,語音助手表現(xiàn)更智能、訓(xùn)練更高效、壓縮更簡單。未來當(dāng)用戶有需求時,可供選擇的不再只是老熟人 Alexa 和 Siri,更個性化、更專業(yè)的語音助手將會變得更多。
目前,我們?nèi)栽谡骷嘟艹龅腡ensorFlow應(yīng)用案例,你可以掃描海報下方二維碼或點擊“閱讀原文”提交案例參與我們的報道!
或者你對這個項目感興趣,想要了解更多關(guān)于項目的報道,也可以掃描下方二維碼或搜索微信號:pingwest-live 添加品玩助手一起聊聊!