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