致敬羅永浩:自然語言互動的背後是機器人大腦
*此篇文章由氖星智慧彭軍輝供稿
昨天偶然看到一篇文章,盤點羅永浩先生這幾年做過的產品,我才發現原來他竟然和我有著共同的夢想,那就是革新人機互動的方式,讓人機自然語言互動成為主流。
在 2013 年的錘子Smartisan OS 釋出會上,錘子做了一個語音助手的 Demo。後來成了錘子手機的語音搜尋功能。
在2016 年的釋出會上,錘子手機加入了科大訊飛的語音輸入法,還同步釋出了 One Step 和 Bigbang。“基於這三個工具,羅永浩表示,「希望用未來 6 到 12 個月的時間把在手機上用語音輸入大量文字、再去做編輯處理的效果和效率,達到跟桌面電腦一樣,甚至超過」。”
2017 年 5 月,錘子正式推出了「閃念膠囊」。除了語音記事本功能外,還支援提醒記錄、查電話、播放音樂、發微信/微博/子彈簡訊、查路線、查天氣等多種應用。
2018年 5 月份錘子在鳥巢的這場釋出會上釋出了年度最具爭議產品 TNT,可以說是一個語音互動的個人電腦。
那麼羅永浩先生搞不定的事情,我能搞定嗎?
十多年前,我開始研究怎麼讓機器理解人類語言。我從漢語語法開始,探求語言的規律,期望把它變成機器可以理解的規則。我本身是學歷史的,後來自學了程式設計。如今我們自然語言處理的演算法都是我自己寫的。
我們看羅永浩先生髮布的產品,基本沒有技術上的創新,只有功能上的創新。有人評論說羅永浩先生的產品只有語音,沒有智慧。
可以說羅永浩先生是個產品經理,我是個程式員。
那麼自然語言互動的核心問題是什麼呢?
肯定不是個產品問題,是個技術問題。
自然語言互動的特點是:不規範、不穩定、不完整。
你跟機器人說“前進”,機器人能識別成“天津”“強勁”“千金”。識別錯了就不能正確處理了,這肯定是不行的。即便文字輸入,也有不規範的。比如說“你吃飯了嗎”,有人就會說“你飯吃了嗎”“你把飯吃了嗎”“你吃了嗎”“吃飯了嗎”“吃了嗎”“飯吃啦嗎”“飯吃啦嗎你”“吃了嗎你”“沒吃吧”“吃沒”等等。如果讓人家只說“你吃飯了嗎”就不是自然語言了,就是命令式處理了。
自然語言是不穩定的。同一句話,在不同情況下可能表達的意思是不一樣的。比如“中國乒乓球誰也打不過。”這句是表揚中國乒乓球。可是過很多年後,也許中國乒乓球就是人見人欺了。這時我們還可以說這句話,語言沒變,語義變了。有個小故事,一女生苦追班裡一男神。有一天男神正在圖書館看書。女生突然表白。男神說,“我喜歡上一個人。”請問,這句話到底是什麼意思?
通常我們說話時,為了節省時間未必要把話說完整,尤其是我們漢語。
比如,漢語通常說“是什麼?”省略了主語。翻譯成英語是“What’s this?”
漢語說“吃了嗎?”翻譯成英語是“Didyou have your meal? ”
漢語說“遇到陌生人,要離得遠點。”翻譯成英語是“When you meetstrangers, stay away from them.”
其實交流是個過程,語言是一個整體。我們跟熟悉的人交流就比和陌生人順暢。遇到陌生人,先要了解對方。這是順暢交流的開始。一句話,只有把它和上下文以及對話的背景聯絡起來才能準確理解;甚至有時候我們還要考慮對方的情況。比如,跟一箇中國說“神讓我這樣做的”,他會想到佛祖、菩薩或者土地爺爺、財神爺爺。跟一個西方人說這句話,他想得的可能是上帝或者宙斯。再如,跟一個人說“日本人把你家的地瓜分了。”是地瓜被分了還是土地被分了?如果對方是個飢餓的人,估計先想到的是地瓜;如果是其他人可能先想到的是土地。
不管是語音輸入還是文字輸入,都是自然語言輸入。 如果允許使用者用自然語言輸入,系統就必須面對自然語言存在的這些問題。
我們知道語音識別已經有很高的準確率了。但他們解決的問題只是把語音變成了文字。變成了文字不等於機器就能處理了。語音識別解決不了自然語言不規範、不穩定、不完整的問題。
自然語言互動還有很多障礙需要突破。
自然語言互動的核心問題是語義理解的問題,就是怎麼通過使用者的自然語言表達,理解使用者的意圖。這就需要機器人大腦。機器人大腦對自然語言輸入的處理是個思辨的過程,只有這樣才能準確理解使用者意圖。
什麼是機器人大腦呢?
基本上可以把機器人大腦和作業系統當成一個層面的東西,它們都解決人機互動的問題。不同的是機器人大腦是人工智慧,作業系統不是。
1.對使用者自然語言輸入,機器人大腦要經過思辨才能給出結果。這種結果指向並不是唯一的。而對於使用者輸入,作業系統的處理是條件反射,反饋結果是唯一的。
比如一個機器人正在往前走,同時還在播放音樂,這時使用者說“停”,機器人就要根據上下文去決定是停止前進還是停止播放音樂。如果跟計算機說“停”,估計計算機會停止所有操作。
2.機器人大腦處理的是使用者意圖,不是使用者輸入。使用者意圖是形而上的,它通過語言文字表達,但不是語言文字本身。而作業系統處理的是語言文字本身。
比如你跟機器人說“前進”,語音識別結果是“天津”,機器人理解你的意圖,依然執行前進的動作。如果給計算機輸入“天津”,它會幫你查天津這個詞條或者從地圖上找到天津。
3.機器人大腦的系統結構是平行結構,而作業系統的系統結構是選單結構。我們對平行結構的要求是想進入就進入、不想進入就不進入、想退出就退出、不想退出就不退出。
比如,我正在讓機器人放音樂。這時我問北京天氣,應該立即播報北京天氣。但如果有一首歌曲的名稱叫《北京天氣》,這時應當播放這首歌。如果這時要進入天氣預報功能,應當說別的比如“上海天氣”“南京天氣”等。不管說什麼,只要使用者意圖表達是清晰的,都應該立即執行。
但在作業系統上做的機器人,各個功能彼此是獨立的,本質上還是個樹狀結構。由於無法用語言去表現這個樹狀結構,於是使用者沒法理解這個結構。樹狀結構從一個功能到另一個功能之間的跳轉要通過使用者介面去完成。自然語言互動時並沒有使用者介面的。所以功能之間的跳轉就變得無法把控。比如,在天氣預報程式裡,說“北京天氣”裝置會播報北京天氣。但如果在音樂播放程式裡,如果有首歌叫《北京天氣》,很多廠商的裝置就會播放北京天氣預報。實際上使用者的意圖是播放《北京天氣》這首歌。
只有使用機器人大腦才能處理好自然語言不規範、不穩定、不完整的問題。
那麼機器人大腦是個產品嗎?
如果泛泛地看,很可能把這個問題看成個產品問題。如果是個產品,羅永浩先生肯定能做好的。
很久以來都有人說我做的東西不過是關鍵字模糊查詢。其實關鍵字模糊查詢和語義理解相差甚遠。用關鍵字模糊查詢做語義理解,正確率能做到20%就不錯了。這樣的機器人基本上就是個智障。
機器人大腦的核心是語義理解,它是個技術門檻很高的事情,也是人工智慧領域做得最差的。這個東西,連大公司都沒做好,羅永浩們更不可能做好。我經常講,做機器人大腦的難度和工程量不亞於登月工程。
我們提出了語義理解的四個標準:差異性、同一性、模糊性、一致性。
差異性就是理解句子之間的細微差異。比如“這是我”“這是我的”,差了個“的”語義不同。很多語義理解廠商是不處理“的地得”的。
同一性就是一個語義的不同表達。比如“你吃飯了嗎”“飯你吃了嗎”“吃了嗎”等等,其實都是一個意思。
模糊性就是使用者輸入錯誤,或者語音識別錯誤,機器還能正確處理。就像剛才舉的例子,把“前進”識別成“天津”機器人一樣執行前進的動作。
一致性就是機器人說的話前後一致。不能先說“我是女孩子”後說“人家是個男的”。只有這樣才是真正的語義理解。
以上四個標準都是技術標準,不是產品標準。我們就是照著這四個標準去不斷完善我們技術的。
要滿足以上四個標準是有相當難度的。
很多廠商用搜索技術做自然語言互動,根本滿足不了以上標準。
搜尋技術對自然語言的處理實質是對符號的處理,不是對語義的處理。自然語言互動需要問答技術。搜尋和問答是完全不同的兩個技術。這個我在別的文章裡有比較詳細的講述,這裡不再多講。
當我們深入做問答技術後才發現分詞技術也是有問題的。市場上的分詞技術都支援一個維度,對一句話只能分出一個結果。但自然語言互動需要根據上下文,根據對話場景對使用者輸入做不同分詞。比如“日本人把你家的地瓜分了”分出來“地瓜”還是“瓜分”都是對的。但要分出來哪個就要根據上下文了。還有“我想聽張三的歌”中“張三的歌”其實是一首歌的名字。傳統的分詞技術分不出來歌曲名稱。於是我們自己研發了分詞技術,為分詞技術加入了上一句和話題兩個維度。這樣當話題是音樂播放時,“我想聽張三的歌”分詞結果就是“我/想/聽/張三的歌”,其他情況就會分成“我/想/聽/張三/的/歌”。
分詞對語義理解的影響並不大,以至於被很多廠商忽略了。但我們依然自己做了分詞。
我們用很多年完善了語義理解演算法,才發現教機器人知識是個更大的坑。一個沒有知識的機器人,就好比一個小孩子沒受過教育一樣。
如果僅僅用語音識別技術就能做好一個自然語言互動產品,科大訊飛可能更容易成功。如果羅永浩先生沒有認識到自然語言互動需要一個機器人大腦,估計還需要走很長的彎路。 我相信我們正走在正確的道路上,然而我也能看到這條道路的艱辛和漫長。好在經過十多年的反覆探索,雖然屢戰屢敗,現在我們已經看到了希望。我們的氖星智慧機器人大腦目前已經有了銷售收入。
誠摯招聘
機器人大講堂招!聘!啦! 編輯、運營兩個全職崗位正在招人!並面向全國招聘大學生兼職寫手! 有才氣,有夢想就別磨蹭!工作地點在北京遠大路附近, 如有意願,請加堂博士微訊號詳聊!