天天看點

演講稿丨李磊 深度學習讓計算機和你我說話對答

       今天碰到了很多以前的同僚以及徐偉老師。我非常有幸兩年之間跟徐偉老師和餘凱博士有非常親密的合作,跟他們學到了非常多的東西。今日頭條是一個内容的生成平台以及分發平台。我們需要鼓勵更多的人來參與内容的創造,在這個平台上面會有比傳統平台更多的内容,每天可能會有上百萬的内容,是以這個平台更需要通過人工智能機器學習的方法,來給每個使用者推薦個性化的,你所喜愛的,你所需要消費的内容。

       我今天會圍繞深度學習的了解和視訊分析方面的應用。66年前計算機領域的一位前驅在一篇很有名的文章《計算機和智能》當中提出了一個問題,說“計算機會不會思考?機器會不會思考?”當時他沒有給出一個評判,但是他給了一個評判的方法,就是大家衆所周知的圖靈測試。基本的想法是說如果計算機能夠做出跟人差不多水準的任務的話,你就可以認為計算機基本上會思考。那我們看看計算機現在到底在哪些方面會思考。

       比如說圍棋,上個月alphago已經在棋盤上戰勝了人類的頂尖高手,她利用了深度學習,以及蒙特卡羅樹搜尋的方法。還有剛才徐偉老師提到的通過深度學習的方法來認識圖檔,最後能夠像人一樣來描述這張圖檔。雖然現在這個描述可能非常簡單,但是我相信以後可能像人一樣,看到一張圖檔或一段視訊後能講出一段完整的故事出來。

       最近我還發現了一個非常有意思的應用,叫“彩雲天氣”,他們的團隊做的事情非常有趣:用深度學習的方法來分析雲層的運動變化,能預測下一個小時裡分鐘級别的降雨情況。這樣就非常有用,我非常喜歡跑步,我有時候跑步之前就可以看一下這個app,後面十分鐘、二十分鐘會不會下雨,能精确到周圍一兩公裡的情況,這樣的話對我安排我的活動非常有幫助。

       我們再看看深度學習在哪些類的問題上非常有效呢?過去的經驗表明深度學習在有監督的問題上面是非常成功的,那什麼是監督學習呢?我們有一組資料x,然後我們有一組标注y,監督學習是要學習從x到y這樣一個函數映射關系。這個映射有可能是線性的,也有可能是非線性的。如果輸入的x是一個圖像,輸出是一個類别,就是一個圖像分類問題,我們衆所周知的已經有很多機關能做出比人還高的準确率。如果這個輸入是一句中文的文本,輸出是英文的文本,就是機器翻譯,現在也有深度學習的模型能夠從端對端的訓練出一個機器翻譯系統出來,比傳統的翻譯系統要好。如果這個輸入是一張圖檔,輸出是一段文字,這就是圖檔文本描述的問題。當然輸入還可以是一段語音,輸出是一段文字,那就是語音識别的問題。但也可以反過來,輸入是文字,輸出是語音,那就是語音合成的問題。

       深度學習為什麼能做得這麼好呢?是因為深度學習的模型應用了一個原則,根本建構原則是深度學習的系統是有非常多小的單元建構起來的。每個單元本身都非常簡單,可能隻能做非常小的事情,而每一個單元是根據人腦的神經元的工作原理建構出來的。當然我們并不知道人腦的神經元真正的工作方式是什麼。我們做了一個仿神經單元,它接收多個輸入之後會做一個線性變化,每個輸入都會乘上一些權重,這些會加起來,之後再做一個非線性變化,例如用softmax這個非線性就适合做分類的問題。

       神經網絡是把好多個這樣簡單的單元給它串聯起來,進而解決一些複雜問題。比如說這是輸入是一個圖檔,輸出的是這個圖檔裡面的數字到底是幾。這裡顯示的是一個非常簡單的單隐層的神經網絡。我們當然可以把這個隐層的層數加深,這樣就有了深度神經網路。

       下面簡單介紹一下深度神經網絡在語言了解方面有哪些進展。語言了解方面的問題,可以分成兩大類。一類是簡單的了解,淺層的了解。另一類是比較深層的了解。淺層的了解包含什麼呢?比如說包含詞法分析、句法分析這樣結構性的分析,也包含一些淺層的語義了解,比如徐偉老師提到的語義角色分析(semantic role labelling)以及分析商品的評論情感傾向之類。這樣一些淺層的東西,不需要對句子的完整做一個了解。相對這個而言有另外一類比較難的問題,可能需要對整個句子,對上下文有比較好的了解,才能夠有合理的預測。這樣的問題第一個是語言的生成,比如做一個模型自動就能夠寫一篇新聞,這是非常難的一件事情,雖然現在有一些嘗試。第二個是閱讀了解,那我們很多人都考過gre這種考試,就是一篇文章有一個問題,需要你回答。現在有一些深度學習的模型已經能夠做一些相對簡單的智力測試,以及類似gre考試這樣的問題。第三個就是比較寬範圍的知識性問答,這是非常非常難的事情。

       最後一個是通用型的對話,不光是問答,問答可能隻是對話的一方面,可能是随便的聊天,滿足交流的需求。

       後面我會簡單介紹一下,舉幾個例子介紹一下深度學習在這些問題上面的應用。

       第一個例子是怎樣用深度學習做淺層的語義了解。比如說“武漢大學附近的拉面館”。我們要了解這句話,其實不需要了解整句句子,隻需要把關鍵的地方找出來。比如說知道中心點是武漢大學,需要查的關鍵字是拉面館,有這兩個已經足夠了解這句話表達的意思了。另外一個例子,比如說“1774年麻省武裝力量和英國正規軍在雷克星頓和康考德開戰。”要了解這句句子中提到的時間、地點、人物、事件,如果隻需要把這些識别出來的話,我們并不需要對整個句子有了解,需要把關注到這些點的地方标注出來。這兩類問題都可以用深度學習來做。我們去年提出了一個模型做中文專有名詞識别,在最大的一個公開的資料集(ontonote 5.0)上面取得了最好的成果。

       更難的一個問題是如何生成自然的對話,如果能夠生成對話就會非常有用。比如現在有一些智能的個人助理(如助理來也),他通過對話的方式給你提供服務。另外網上有一些問答的平台,如果能夠自動回答的話,那就不需要很多的人去時時刻刻回答。

       我們去年做了一個工作,做了一個神經網絡對話生成器,這是我們系統生成的一些回答。上面白色的是我們的輸入,下面藍色的部分是系統生成的。比如輸入是:你喜歡一見鐘情還是日久生情,系統生成的應答是一見鐘情吧。另外一個例子:土豪我們做朋友吧,應答:我不是土豪。但是我們的系統不僅僅可以接受一些簡單的輸入,也可以接受比較長的輸入,同樣可以給出一個比較合理的回答。比如對周星馳大話西遊電影裡面最有名的台詞的回應是:“願你安好”。

       這個工作原理到底是什麼呢?這是通過一個模型叫循環神經網絡。可以根據輸入的資訊不斷的去生成句子裡面的每一個詞。根據前一個詞生成下一個詞。華為諾亞方舟實驗室的李航老師以及谷歌vinyals和le之前都做個類似的對話模型。我們對這個模型做了一個拓展,給它加入了更多情感資訊,使得這個模型也能夠生成一些帶有情感色彩的回答,這樣可以根據你的喜怒哀樂來給你做出相應的回答。

       更有趣的一個問題是自動問答,比如說知識類的問題,“七重外殼是誰寫的?”你先要了解問句提到的名字本身指的是什麼,他要問的是什麼,如果這兩個能從問句當中識别出來,你就可以從知識庫裡面找出相應的答案。

       這樣一個問題是非常難的,難在兩個方面,一是同樣的問題有語言上表達的複雜性,可以用多種表述方式。二是同樣一個實體名字或者同樣一個關系名字,有多種實際的對象對應,比如說麥克喬丹有打籃球的,也有機器學習的。我們用了一個深度網絡來做自動回答。其中核心模型是帶門循環單元,之前提到過,基本的原理是它能夠像人一樣選擇性的來記住長時以及短期的記憶,同樣也會選擇性的遺忘。我們把這個模型疊加起來,變成有很多層同時做正向和反向的網絡,結合起來以後我們發現效果非常好,可以準确識别問題當中涉及到的一些實體,涉及到的關系。這是一些例子,是我們系統自動回答出來的一些問題,比如問“哈利波特在哪兒上的學?”,我們的模型可以找出羅琳。

       另外一件事情我們剛剛在頭條開始做,就是基于視訊内容的搜尋,需要對視訊内容本身做一個了解。這是怎麼做到的呢?我們是選擇性的選了一些視訊當中的關鍵幀,然後把關鍵幀通過深度學習的神經網絡學出一些關鍵特征,然後我們再通過雜湊演算法到一定的有意義的值,然後最後來計算相似度。我們在建深度學習網絡的過程當中碰到的最大挑戰是,我們通常訓練一個深度學習網絡,我們需要大規模的機器,或者是gpu,需要消耗非常大的能量,而我們很多的應用需要把它下載下傳到手機端,手機端計算能力有限,能量也有限,是以我們通過需要對移動端做優化。我的同僚文林福帶領的團隊最近做了一個工作,把深度學習的圖像分類網絡優化壓縮之後放到手機端,在準确率損失比較小的情況下,取得了比較快的計算效果。

       過去幾年的經驗告訴我們深度學習或者機器學習,需要怎麼樣才能成功,它的成功其實取決于一個循環。首先要有資料,我們有資料可以訓練出更好的模型,有模型可以設計出更好的産品,有了更好的産品我們可以給使用者提供更好的使用者體驗,同時獲得更好更優質的資料,這樣一個循環。這個循環走得越快的話,我們的産品就會做得越好,我們的機器學習就會越成功。

       我們現在過去幾年深度學習已經取得非常大的成功,之前徐偉老師也提到說未來深度學習有幾方面還需要進步的。我也提幾個覺得是非常重要的方面。

       第一,深度學習或者機器學習還需要更多的可解釋性。我們現在的深度學習模型不管它成功了還是失敗了,分類對了還是分錯了,很難知道為什麼,尤其是分錯的情況,我們不能說這個參數不對,或者說這個神經元的輸出高了一點點,是以分錯了,這樣的解釋不太夠的,也不能幫助我們改善提高整個系統。我覺得未來的話需要更多的,可解釋性的機器學習。一個思路就是機率生成式模型。

       第二,我覺得現在的機器學習或者深度學習欠缺的地方是(邏輯)推理。因為我們過去關注的最多的問題是監督式的學習,監督式的學習裡面比較少的(邏輯)推理,我們需要讓機器達到人的智能的話,非常重要的一個方面就是讓機器學會推理,而這方面現在是欠缺的。一個思路就是剛才前面一位梁家恩先生提到的,機率程式語言。過去在這方面也做了一些工作,最近我和加州大學伯克利的一項成果是能夠用機率編譯的方法把機率程式推理做得非常快。

       第三,機關能量消耗内的智能。現在深度學習訓練和預測都是需要非常非常多的能量的消耗的。這個實際上比人的智力的話,剛才蘇中博士也提到,人的推理能耗,人大腦的運作隻需要大概20瓦,但是我們的gpu,一個普通的gpu可能就需要250瓦,這顯然消耗了太多太多的能量,那我覺得後面需要做的是怎麼樣把能量消耗降下來,把機關能量消耗内的智力提高上去。

謝謝大家。

本文來源于"中國人工智能學會",原文發表時間"2016-04-27

繼續閱讀