教機器去感受:表情符號&深度學習

 2016-08-05 20:30:00.0

雷鋒網(公衆號:雷鋒網)按:CSDN周建丁責編,聊天機器人Dango是基於神經網絡開發的,開發者已經用幾百萬個範例對神經網絡進行訓練,讓程序更好地理解表情符號的意義。

最近,神經網絡成爲了解決一系列計算機科學難題的一種選擇:Facebook使用神經網絡來識別圖像中的人臉,谷歌使用它們來識別圖像中所有東西。蘋果公司使用它們來理解你對Siri說的話,IBM則用來操作業務單元的協同作用。

這太令人印象深刻了。但對於實際問題呢?神經網絡可以在你需要的時候幫你找到你需要的任何表情符號嗎?

哎呀,是的。它們可以。

這篇文章將概述Dango背後的一些工程原理,它可以讓我們從數以億計的現實世界的符號表情使用情況中自動學習,從而產生了一款輕量快捷的工具,用來在手機上實時爲你預測表情符號。

教機器去感受:表情符號&深度學習


Dango是什麼?

Dango是一款運行在手機上的浮動助理,它會根據你與你朋友在任何應用中所寫的東西來預測表情符號,貼圖和GIF圖片。這使得你在任何應用中都有同樣豐富的對話:Messenger,Kik,Whatsapp,Snapchat等。(單單在所有應用中都實現這樣的功能就是一大挑戰了,不過這不屬於這裏要討論的)。

教機器去感受:表情符號&深度學習



推薦表情符號很困難:Dango必須理解你正在寫的語句的意思,然後才能爲你推薦你想使用的表情。在覈心部分,Dango的預測由神經網絡來實現。神經網絡是一種計算結構,有上百萬的可調參數,以類似人腦神經元的連接方式相互連接。

隨機對這些參數初始化來訓練神經網絡,然後輸入從互聯網上抓取的數以百萬的現實世界表情符號使用案例,比如:

教機器去感受:表情符號&深度學習


最開始,網絡只是隨意猜測,但是隨着新的訓練樣例的輸入,它輕微調整那百萬個參數,因此它會在那個樣例上表現更好。在頂級GPU上訓練了幾天之後,網絡開始輸出更具意義的推薦了:

教機器去感受:表情符號&深度學習


我們從表情符號中學到的東西

這種由數據驅動的表情符號預測方法意味着Dango比我們更瞭解表情符號。Dango教我們使用新的俚語,以及世界各地人們使用表情符號講述故事的新方式。

例如:如果你寫「Kanye is the」,Dango將會預測一個山羊表情。這隻山羊當然表示Greatest of All Time(G.O.A.T),這是Kanye在今年早些時候的自稱:

教機器去感受:表情符號&深度學習

在他意識到他是當代以及所有時代最偉大的藝術家時說的。

— KANYE WEST (@kanyewest)2016-02-14


Dango可以通過多表情符號來表示事物。例如,如果你居住在不列顛哥倫比亞或科羅拉多,並享受生活,Dango就會這麼推薦表情。 

教機器去感受:表情符號&深度學習

如果你對某人生氣,希望他們滾出去。Dango會很樂意讓它們出去: 

教機器去感受:表情符號&深度學習

Dango同樣從網絡文化中學習到了豐富的知識。它瞭解模因和趨勢。例如,如果你看過在喝茶的Kermit青蛙的圖片「但這不關我事(but that’s none of my business)」那就知道了。

教機器去感受:表情符號&深度學習


教機器去感受:表情符號&深度學習



Dango還了解許多其他的細微引用和笑話,而且它總是在學習,以跟上潮流

教機器去感受:表情符號&深度學習


當然還有許多我們沒發現的。

不僅僅是表情符號

由於Dango在表情符號上訓練,可能一開始會意識到它可以理解和表示的概念數目很小——在寫這篇文章的時候,Unicode協會擁有1624個標準化表情符號,儘管對字體設計師來說這個數目是個頭疼問題,但仍然數目相對較少。

然而,這並不意味着只有1624種含義。你在使用表情符號的時候,它們的意義是根據它們的外形以及使用的上下文來定義的——這些意義會高度多樣化。

教機器去感受:表情符號&深度學習

可能表示「舉手擊掌」或者「謝謝」或者「拜託了」。 
教機器去感受:表情符號&深度學習

可能專門表示茄子。


此外,表情符號可以結合使用來表達新的概念。例如:

教機器去感受:表情符號&深度學習

表示親吻臉頰,但是 

教機器去感受:表情符號&深度學習
表示吹口哨, 
教機器去感受:表情符號&深度學習

表示吐煙霧。


這些表情符號的組合可能變的非常複雜:

教機器去感受:表情符號&深度學習


這意味着Dango可以表示的語義概念的數量比單個表情符號可以表示的數量多得多。這是一個強有力的概念,因爲它賦予了Dango理解各種各樣的一般概念的方法,不管Unicode協會是否認可。

Dango因此同樣可以推薦貼圖和GIF。上面已經提到,Dango能夠理解滾出去: 

教機器去感受:表情符號&深度學習

它同樣可以爲你推薦GIF:

教機器去感受:表情符號&深度學習



深入瞭解

讓我們深入瞭解下它的工作原理。

一種樸素的推薦表情符號的方法(我們在Dango中首次嘗試的方法)可以直接將一些詞彙映射成類似如下的表情符號: 

教機器去感受:表情符號&深度學習

但是這種方法具有侷限性,它並沒有反映表情符號(和語言)的實際使用情況。許多由詞彙組成的微妙組合不可能用簡單的映射來描述。

教機器去感受:表情符號&深度學習


爲了處理這些情況,Dango使用了遞歸神經網絡(RNN)。RNN是一種特別的神經網絡架構,非常適用於連續輸入,因此常常用於自然語言處理,語音處理和金融時間序列分析等領域。在這裏我將快速過一遍什麼是RNN,想更深入瞭解的話可以看看Andrej Karpathy的一篇很棒的概述。

教機器去感受:表情符號&深度學習教機器去感受:表情符號&深度學習


RNN通過維護一個內部狀態來處理順序輸入,一種記憶機制,使他們能夠跟蹤之前看到的數據。這對於區分我很開心的表情以及我不開心的表情很重要。

多個RNN也可以彼此堆疊:每層RNN接收輸入序列,然後將它轉換成一個新的,更抽象的表示,然後將它輸入給下一層的RNN,以此類推。這些網絡堆疊的越深,它們可以表示的功能種類越複雜。順便說一句,這就是現在流行的「深度學習」由來。一些難題的重大突破部分是因爲單純地使用了更深層的網絡層堆疊。

Dango的神經網絡最終輸出一個有上百個數字的列表。這個列表可以表示成高維度空間中的點,就像三個數字可以表示點在三維空間中的x,y,z座標值。

我們可以稱這種高維空間爲語義空間,把它想象成一個多維的網格,不同的點表示不同的思想。在這個空間中,相似的思想靠的更近。深度學習先驅Geoff Hinton將這種空間稱爲「思想向量」。Dango在訓練過程中學習到的是,如何將自然語言語句和表情符號轉換爲這種空間中單獨的向量。

所以,當Dango接收到某一文本時,它將這個文本映射到這個語義空間中。爲決定推薦哪些表情符號,它將每個表情符號的向量投射到這個語義向量上。投射是一項簡單的操作,它會給出兩個向量相似度的度量。然後Dango推薦有最長投影的那個表情符號——這些是與輸入文本意義最接近的表情符號。

可視化語義空間

對於那些通過視覺來思考的人來說,這種空間隱喻是一個強大的工具,可以幫助我們通過直覺來了解和談論神經網絡。(在Whirlscape,我們非常沉迷於空間隱喻;看看我們早期的一篇關於Minuum鍵盤算法的文章)。

爲幫助我們想象Dango的語義空間,我們可以使用一項可視化高維度空間的流行技術,叫做T分佈隨機鄰近嵌入,簡稱t-SNE。這種技術試圖將每個高維度點放置到二維空間中,並確保在原來空間中鄰近的點在二維空間中仍保持鄰近。雖然這個映射不完美,但是它仍然可以告訴我們很多信息。我們現在使用t-SNE來將表情符號在語義空間中可視化出來:

教機器去感受:表情符號&深度學習

打開交互式地圖並探索

注意語義相似的表情符號是如何在這個空間中自動聚集在一起的。例如,大多數臉部表情聚集在「臉部半島」區域。

高興的表情在一個區域: 

教機器去感受:表情符號&深度學習

憤怒的表情在另一個區域。 

教機器去感受:表情符號&深度學習

所有的心形表情都聚集在山峯右邊附近,我們稱之爲「愛之頂點(Point Love)」。

再隨着尾巴往後看,你可以發現一些其他有趣的分組:籃球、橄欖球、排球、足球表情都相互靠近,帶有頭髮的臉部表情符號與沒有頭髮的臉部表情相互分離(這與他們是否想出門有關)。在右邊的盡頭處,你可以看到一些旗幟表情和一些冷門的表情,比如文件櫃和快進。

此外,Dango從來沒有明確的被告知臉部與心形,或啤酒,或農村動物有不同之處。Dango從互聯網上使用數以億計的現實世界表情使用樣例來訓練模型,之後生成這種語義映射。那麼我們這裏說的訓練是什麼意思呢?

在訓練前,初始化一個神經網絡;輸入一些或多或少的隨機值;本質上是從清潔狀態開始。句子被隨機映射到語義空間,其中,表情符號是隨機分散的。

要訓練一個神經網絡,我們定義一個目標函數;這基本上是評估網絡對給定樣例性能的方式。目標函數輸出一個分數值,告訴我們Dango對樣例預測情況的好壞。分數越小越好。然後我們使用一個非常簡單的算法,叫做梯度下降。對於每個訓練樣例,梯度下降在最能減小目標函數的方向上,輕微地調節神經網絡中百萬個參數的值。

在GPU上訓練了幾天之後,目標函數不能進一步優化了——Dango已經訓練完成,能夠派上用場了!

語言的未來

語言正在變得可視化。表情符號、貼圖以及GIF大受歡迎,儘管以高級的方式使用它們仍需要大量勞動。表情愛好者爲每一種情況創建了個人收藏圖像,並記住了表情符號鍵盤的每一頁,但我們其餘的人依靠「最常用」菜單來立即使用表情符號,有時候是GIF。

這種可視化語言已經與技術一起成熟了,並且這種共生關係還將繼續,新技術引發新語言,反過來,新語言催生新技術。未來的通信將會使用到人工智能工具,幫助你無縫對接圖像和文字,Dango爲處在這方面的前沿而感到自豪。

希望你能從中獲得靈感,並和我們一樣,將你的語句投射在語義空間的某處,被上百個表情符號包圍。也許你開始玩轉自己的神經網絡。請讓我們知曉!

最後,請試試我們的Dango並給予反饋。每當你琢磨着:我應該使用什麼表情?Dango將會給你答案。

教機器去感受:表情符號&深度學習

文章來源:雷鋒網