小米小愛團隊負責人王剛:語音互動背後,有多少人工就有多少智慧

AI科技大本營發表於2018-04-18

整理 | Just,阿司匹林

出品 | AI科技大本營(公眾號ID:rgznai100)


【導語】近日,在英特爾與 O'Reilly 聯合主辦的中國人工智慧大會上,小米的小愛團隊負責人王剛分享了他們在語音互動技術上的進展以及面臨的困境,其一是有些使用者需求的處理方式仍然是“有多少人工就有多少智慧”,其次對於使用者行為反饋結果如何去做更好對話模型的理解問題,他希望引起學界和業界人士的重點關注。王剛希望,通過不斷探索,最終能構建一個具有自主學習能力的對話系統。



640?wx_fmt=png&wxfrom=5&wx_lazy=1


以下為王剛演講內容實錄,AI科技大本營整理:


整個小愛同學的研發,應該是在 2016 年的年底開展的,在 2017 年的 3 月份,我們首次把小愛同學放在了電視中了,然後在 2017 年的 7 月份,(我們把)小愛同學放在了音響上,然後在今年的 3 月份的 小米 MIX 2S 的釋出會上,我們把小愛放到了手機裡。


到目前為止,小愛同學已經在 10 多款生態鏈的裝置裡面存在了。


大概 2 年時間的研發,我覺得自己還是蠻幸運的,因為首先我們開始進入到電視這個領域,電視的場景比較單一,使用者的主要需求就是搜片。除了搜片以外,其實它的一些場景,比如一些電視控制類的,都相對比較簡單。


而音響裡面本身沒有螢幕,所以使用者主要需求是聽音樂、內容類的,然後還有其它的一些娛樂類、控制類的轉換,所以本身會使得這個音響在這個(語音)領域比電視更近一步,它本身的複雜度也沒有那麼高。最後放在手機上就比較複雜了,這裡面像音樂、視訊、電臺、人物等功能其實非常厲害。


因此,在各種多輪對話的場景下,怎樣去把體驗去做好,會面臨到非常大的問題。


現在小愛同學所輸出的多種裝置當中,基本上可以分成三種標準形式:無屏、有屏以及觸控式螢幕,不同的裝置對小愛同學的要求不一樣。


從本身的功能上來說,分出了 9 大類別,當然這不是非常嚴格的定義,它會不斷去延伸,然後成互動形式,對應到不同任務場景下。

640?wx_fmt=png



語音互動和搜尋的區別


在做語音互動這麼長時間之後,大家也能理解到為什麼語音互動其實是跟搜尋有非常大的區別。

640?wx_fmt=png

第一,語音互動其實是完成更廣泛的任務。在手機上我要給家人打一個電話,或者上一個鬧鐘,它本身要去完成的除了資訊查詢以外,還有裝置控制,有內容消費、生活服務。它本身被認為是幫助使用者去完成特定任務,並且不出錯。而在這種情況下,搜尋還是相對比較單一的。

640?wx_fmt=png

第二,語音互動基本只有一次跟使用者交流的機會。不像搜尋有更豐富的展示,可以在多條結果裡面進行選擇。例如,語音互動對使用者的話理解錯了之後,使用者基本上會感到很失望,就像大家經常說的是“你不懂我”,就覺得它比較傻。

640?wx_fmt=png

第三,語音互動其實是很複雜的一個情況。首先它要考慮上下文,與使用者上一輪說話方式是很相關的。比如說我想給一個同事發訊息,然後它就問你要發什麼訊息,這時我說,“提醒我下午三點鐘去開會”;或者我直接跟小愛同學說,“提醒我下午三點鐘去開會”,這兩件事都是提醒我開會,但一個是發訊息的內容,一個是上鬧鐘,它跟上下文是相關的。


剛才說的是一個短期的上下文對話,它還可以再去延展,跟一個使用者長期對話的上下文是相關的,智慧助理在跟你不斷的對話過程當中,它可以瞭解了比如說你家裡有沒有車牌,或者說你想問它限行的時候,它可以告訴你今天或者明天你會不會被限行,它可能去了解你家裡有幾口人,家裡有沒有寶寶,這樣的話,可以越來越聰明地幫你完成一件事。

640?wx_fmt=png

第四,就是使用者行為反饋。語音互動比搜尋難,搜尋裡面最重要的訊號就是給使用者的點選模型,當搜尋第一天發明出來的時候,所有的搜尋結果是工程師去進行的校調和排序,但只要有使用者不斷去用這個結果,第 1 條結果他不點開,他點了第 2 條,他一定是認為第 2 條結果肯定比第一條好,他點了第 2 條之後又點了第 3 條,那可能他對第 2 條的結果不是很滿意,他覺得第 3 條可能更好。所以搜尋裡面通過大量的使用者點選返回資料去調整搜尋排序。


目前大家看到的是比較成熟的技術,使用者點選反饋已經在搜尋質量排序當中超過 60% 的重要性,但在語音互動這邊,使用者的反饋它是一種很隱式的,可能使用者覺得你沒聽懂他,可能就會去換一種說法再問一下。


怎麼樣讓使用者反饋進入到這個模型中,幫助小愛同學去變得更聰明?實際上,目前世界上還沒有看到工業界和學術界與之相關的研究成果出來。


小愛同學可以認為它是一個語音助理,一個技術整合者,不存在一種通用技術,可以去解決所有問題。所以說針對每一個領域,它所解決問題的方法,所面對的困難都是不一樣的。


我主要講三大方面,就是小愛同學整體構建時所採用的技術:第一,語音技術;第二,自然語言理解;第三,使用者行為反饋。


語音技術

640?wx_fmt=png


首先,就整個架構來說,在任何一個終端上,使用者跟小愛同學說的話先是前端的一些訊號資料,主要是聲學技術,進去之後就是變成了一個純使用者的聲音,通過語音識別轉換成文字,然後通過語義理解,去了解使用者真的想要什麼,然後去服務的線上分發,最後進行語音合成,告訴使用者希望什麼樣的結果。


具體展開而言的話,語音技術的難點,其實還挺複雜的。首先是前端包括喚醒技術、回聲消除和聲源定位,大家用了小愛同學,可以發現其實它在這方面其實還是有許多問題的。

640?wx_fmt=png

第一,小愛同學喚醒還是比較容易,但經常會發生誤喚醒,可能還沒有說“小愛同學”,它就喚醒了,甚至你說什麼小白同學、小賴同學,也可能會喚醒。

所以喚醒技術本身就很複雜,小愛同學現在已經訓練有接近 1 年時間了,但做得還不是很好,其實使用者還想要更多的喚醒詞來去叫醒它。


當一個喚醒詞我們花了 1 年的時間訓練,怎麼樣把一個喚醒詞的技術更加通用化、能讓使用者自定義自己的喚醒詞就好了。例如我的小孩叫丹丹,我們可以直接跟音響說,“丹丹你好”,使用者有這樣的需求,但我們的技術現在沒有做到。


第二,語音識別。語音識別有噪音環境,聲音混雜,不同的人有不同的方言,我們整合了國內所有語音技術的提供商,但現在沒有任何一家有特別好的使用者體驗。


第三,語音合成。兩年前,語音合成在整個中國一年產出的人才不超過 20 個,所以現在做語音合成的人才,在語音互動的場景裡炙手可熱。


語音合成裡面有非常多的問題,一個是合成實體詞。比如使用者自己說,這個“618”要促銷了,就是我們自己知道“618”什麼意思,但機器看不到“618”,它不知道你說的是 6、1、8 還是 618(六百一十八),它看到的字是一樣的,但是它念出來——如果說六百一十八要促銷——大家就會覺得很奇異,因為它背後有很多的知識。


那麼,通過知識怎麼樣去融合進來,做語音合成,這又很複雜,包括中英文混雜,使用者情感怎麼樣處理,這點上其實小冰做得比較好,它的合成聲音帶著情感,這個技術其實目前看也是最好的。


語音識別的話,其實我們後面已經有 11 家技術供應商,來給我們提供語音識別的效果。在不同裝置上,不同場景下哪一家語音識別怎麼樣,我們都有評測。


然後,我們也進行了一個融合策略,一個使用者的語音發給多家技術提供商,有些結果譬如說有中英混雜的,可能是這家識別的好,對方言來講,可能是訊飛識別的好,而對某些裝置的廠商,它可能是另外一家提供的好。所以我們的融合策略,在不同的裝置下,可以顯著提升一個共同的好結果。


自然語言理解


自然語言理解這件事情其實還是挺難的,因為第一要素就是首先要有一個清晰的產品定位。比如,使用者直接跟音響說雷軍,和跟手機說雷軍,可能它的意思就是不一樣了。


在手機上,我們輸入雷軍直接就是人物介紹,但在音響上直接說雷軍,比如小愛同學,就直接蹦“ Are you OK ”了。因為我們認為音響是一個無屏裝置,所以它說雷軍的時候,就直接放雷軍的歌,可能使用者感覺很好。


首先要有一個清晰的產品定義。


自然語言理解的背後我們認為這個 query 應該給什麼樣的使用者結果,使得這個產品給使用者的體驗最好。

640?wx_fmt=png

當使用者將一個 query 發給小愛同學的時候,它有 4 種應答方式:


1.我們有一個叫內建垂域,比如查天氣、定鬧鐘都是小愛同學內部自己的團隊來去定義的。


2.我們會把這個能力開放給裝置開發者,包括我們自己的裝置,譬如在手機上說開啟手電筒,就是裝置所獨有的,它不是一種通用能力。譬如說一個電視,連線 HDMI ,我們相信小愛同學自己是做不了的,所以我們就把這個能力開放出來,交給裝置開發者,由他們自己去定義。


3.開放平臺。大家對這個行業瞭解一下就應該知道,它本身是一個作業系統,它上面可以有無數多的 APP,很多的開發者願意在小愛同學上面去開發 APP,譬如像開發菜譜,開發成語接龍、開發冒險世界這種語音互動類的這種遊戲,在亞馬遜的內容已經有接近 3-4 萬了,在小愛同學上面現在有 100-200 種。


4.小愛的訓練計劃。這個我們看到大家用的最多的,第一個就是逗小孩或者逗家人,比如世界上最美的是誰啊?直接把你老婆的名字念出來,世界上誰聰明啊?把自己小孩念出來……針對自定義的去說出自己希望說的話,也就是把高度定製化的能力交給使用者。


使用者可以自己訓練小愛,小愛剛開始運作起來也是挺傻的,但你如果有耐心去訓練它,讓它能夠跟你作伴,這其實是整個小愛同學的一個產品。


其次,就是垂域的深度優化。


垂域理解就是每一個垂域用的演算法、方法都是不一樣的,譬如說北京明天天氣怎麼樣?北京明天晴轉多雲。單說這句話其實是一個天氣類的,但你直接前頭加入一下“翻譯”兩個字,它就變成了一個翻譯類的。

640?wx_fmt=png



下一個例子就是韓磊《南山南》,本身韓磊沒唱過《南山南》,所以就把它糾錯成張磊。為什麼我們知道韓磊沒有唱過《南山南》呢?因為它本身是帶有知識庫的,所以要做好這個領域的話,首先不光要知道相應的詞表,必須得需要相應的知識,知道使用者想找音樂,然後到知識庫裡去判斷它到底是歌手還是歌名,看看有沒有這個歌手和歌名,然後找到相應的歌給使用者。


最後一個是使用者閒聊的需求,例如使用者問“天貓精靈怎麼樣”,這種 query 是很難回答的,我們也不知道怎麼回答,我們這一塊其實就是通過有多少人工就有多少智慧的方式。把這種 query 能運營好,但我們也希望儘可能通過演算法能讓這個人工的方式更智慧,所以後面可以稍微期待一下。


語義的垂域理解,這塊還是挺複雜的,每一個垂域自己的知識庫和領域都是很複雜的。要理解這種使用者的複雜查詢的話,一定要對後臺的知識庫,甚至是使用者有深度的理解,所以針對視訊這一塊,非常簡單列了一下,我們有 25 個相應的知識欄位去構建知識庫,只有這樣的話,才能把使用者複雜的查詢構建好。

640?wx_fmt=png



總的來說,小愛同學它是一個非常複雜的系統,要去融合無數的技術,技術是我們外部的合作伙伴給我們的,有些功能是我們自己內部研發的,但自己內部研發也不是一種通用的解決辦法,而是針對不同類的問題來找解決辦法。


我們把一些具有代表性的東西拿出來列一列,詞網格其實是我們一個比較基礎的自然語言理解模組,這個裡面在我們的分詞和詞道用的非常多。


平時使用者說開啟臥室的燈,但是由於口音問題,或者是距離的問題,就是 AI 在識別的時候,它經常會“開啟臥室地燈”,或者“大開臥室的燈”,識別出不同可能性出來。這是語音識別的結果給 NLP 的輸入,基於這個輸入,我們通過詞網格的方式,去尋找一種最優路徑,去構建出它最優的可能性。

640?wx_fmt=png



另一個例子是,我想看功夫電影和我想看周星弛的電影《功夫》,就功夫這個詞在第一個 query 裡面,它其實想表達一類電影,我想看周星弛的功夫電影,它就是找這種有功夫類的電影,然後我想看周星弛的電影《功夫》,那我就是想找名字叫《功夫》的電影,這個就要根據它前面串的和後面串的一個這種相似度,在歷史的統計資料裡面去找到最有可能匹配的路徑,這個就是詞網格。

640?wx_fmt=png



上下文無關文法,這是一位史丹佛教授提出來的,這個在很多那個垂直領域其實是很有關係的。剛剛我們看到的詞網格的模型,它本身是基於一種有限狀態思維邏輯,但是上下文無關文法是有下推的思維邏輯,它會無限的去擴充套件,構建出現在的模型出來。譬如,親戚計算器,不知道大家知不知道小愛這個功能:爸爸的爸爸的爸爸叫什麼?小愛同學會回答:你可以喊他高祖父。我們要解決這類問題,一定要選擇相應方法。

640?wx_fmt=png



知識庫的搜尋就剛才說的那個韓磊唱了《南山南》的歌。我們首先要去判斷這個領域去搜尋知識庫,然後找到相應特徵,發現它可能在現有特徵裡,比如在歌名和歌手不滿足的情況下,怎麼去進行相應的匹配,從而找到一個最優的結果。

640?wx_fmt=png



問答對匹配,比如說天貓精靈怎麼樣?就是說使用者以後說天貓精靈好不好這樣類似的說法,我們都希望能匹配到。雖然我們是有多少人工就有多少智慧,但也希望在人工一定的投入下有最大的智慧。


所以其實就是這種模糊匹配的技術,我們還是投入了蠻大經歷去做,就是使用者的 query 是這樣的,那我們匹配的 query 比如小豆包漂亮嗎?小豆包長的漂亮嗎?我們希望它們是一個意思。這樣的話,當有多少人工有多少智慧的時候,可能快速的去做泛化。


但是,可以看到這裡面紅的這塊是錯誤的,我想聽《好想你》,然後直接匹配成一個叫“我好想你”這個 query 了。就本來是聽音樂的意圖,它直接匹配成了我好想你這樣的閒聊了,雖然聽起來好像沒有差太遠。


“不說再見”,是我不想跟你再見,和“不說了,再見”,其實語義完全不一樣了。


字的差別非常小,而且它可能就是一些語氣助詞,但它的語義會完全轉,所以我們希望在語意不變的情況下,去做(直接匹配),但有些情況下,是語意轉的情況下,我們要及時發現。


最後,就是全域性的統一策略。


我們就發現中控全域性判別這件事越做越複雜。譬如,北京天氣怎麼樣?翻譯“北京天氣怎麼樣”?對於天氣而言的話,它就發現它前面多了兩個詞,它也不認識翻譯,因為對於每一個垂域來講,它都是區域性的資訊,很難去知道全域性性的,它前面多了個翻譯,自己的轉換就不管了。


640?wx_fmt=png



所以每個轉換都是深度去理解自己的資訊,但是它發現前頭多了兩個字的時候,它並不可能把世界上所有的知識,放在每一個垂域去做判斷,所以就是儘量先理解自己的知識,然後上傳給一箇中控模組,然後通過全域性資訊去做最後的決策。


當全域性決策發生的時候,我們發現每一個領域的區域性資訊最後要儘可能的交給中控,中控不光要維護所有的特徵,而且它要維護全域性的熱度資訊、使用者行為資訊等,從而更好的幫助全域性判斷。


譬如播放《超級飛俠》,在我們的音響裡面有 2 種選擇,一種是給小孩直接放《超級飛俠》的歌,一種是找一個《超級飛俠》的故事。小孩說播放《超級飛俠》的時候,大部分的使用者確實是喜歡聽故事,但有些確實是想聽歌。那我們怎麼知道使用者想聽歌呢?當發現使用者說播放《超級飛俠》,音響緊接著給它放故事了之後,他會再去給它說播放《超級飛俠》的歌,他會就去糾正這句話。


通過這種方式就會發現之前的判斷是有誤的,也就是通過使用者行為的完聽率,去探索怎麼樣用使用者行為來幫助 AI 更好的理解人話。



640?wx_fmt=png



就像《超級飛俠》這個歌如果使用者耐心的聽完了,我們就認為他對這個歌的投票是滿意的,但如果他聽這個歌沒有聽完,我們就認為他對這個歌不滿意,也就是我們定義的完聽率。


通過完聽率去判斷使用者是不是對這 query 滿意,所以當播放《超級飛俠》這個歧義的問題,我們希望通過使用者後期的行為資料,來判斷、糾正我們怎麼樣去更好的理解這句話。


另外一個就是多輪的對話管理。譬如播放一首歌,然後使用者說第 2 個,他其實想說第 2 首歌;我想說導航到附近麥當勞,它說為你找到以下附近的麥當勞,你想它說直接第 2 個麥當勞。所以我們希望在中控裡面,有一種全域性的、多輪對話管理來保證使用者的持續對話。


使用者行為反饋


最後是使用者行為反饋,就是怎麼樣根據使用者的結果去指導我們去做更好對話模型的理解。它在搜尋裡很有用,但在語音互動系統裡,其實是一個非常值得去研究的問題。我特別希望不管是學術界還是工業界能高度關注的這個問題,因為這是一個嶄新的領域。

640?wx_fmt=png



現在使用者對結果的滿意和不滿意,在搜尋裡面是非常直接的。我跳過這個結果,可能就表示對這個結果就不喜歡,但在語音對話裡,就像我們正常的對話裡,我可能跟你聊了兩句話不投機,但我可能還是比如說嬉皮笑臉的就走了,你可能都不知道我到底對你的話投不投機。


或者假如我內向一點,也不是那種要攀仰別人的人,我跟你聊著就可能沒有主動表達我對你的讚賞,這個時候用直接對話系統去表示對你的滿意或不滿意,其實是很隱諱的,這件事情一直是困擾我們的一個難題。

640?wx_fmt=png



現在,我們在內容類的上面做了一點工作,就是通過首條完聽率來判斷它有沒有把這首歌理解的對不對,我們也看到了一些資料,確實發現當我們判斷出一些音樂意圖,但是完聽率又比較低的時候,這些 query 看起來就不像音樂了。


所以我們就通過不斷的探索研究、構建具有自主學習能力的對話系統,這是我們的目標和理想,但現在看起來還是很難的。


展望未來 5-10 年,我相信語音互動在每個人的家裡都會是成為你非常得力的助手,語音互動的接收終端,現在可能是我們的手機、音響,未來你家裡面一扇鏡子、鬧鐘都可能成為終端,然後你隨時需要吩咐它辦什麼事情,都可以去幫助你,提醒你做重要的事情。我們希望通過語音互動給每一位使用者帶來最好的體驗。


招聘

AI科技大本營現招聘AI記者和資深編譯,有意者請將簡歷投至:gulei@csdn.net,期待你的加入


AI科技大本營讀者群(計算機視覺、機器學習、深度學習、NLP、Python、AI硬體、AI+金融、AI+PM方向)正在招募中,和你志同道合的小夥伴也在這裡!關注AI科技大本營微信公眾號,後臺回覆:讀者群,新增營長請務必備註姓名,研究方向。

640?wx_fmt=gif

640?wx_fmt=jpeg

640?wx_fmt=png


640?wx_fmt=png

AI科技大本營公眾號ID:rgznai100640?wx_fmt=jpeg


☟☟☟點選 | 閱讀原文 | 檢視更多精彩內容

相關文章