天天看點

深度學習表征的不合理有效性——從頭開始建構圖像搜尋服務(二)

接着上篇 《深度學習表征的不合理有效性——從頭開始建構圖像搜尋服務(一)》 的内容,上次遇到的問題是 搜尋相似圖的時候還是會出現瑕疵,是以本文介紹相關的處理辦法

半監督搜尋

       解決上文問題的常用方法是,首先使用目标檢測模型,檢測貓圖像,然後對原始圖像裁剪之後再進行圖像搜尋,這樣做會很大程度地增加計算開銷,如果可能的話,希望能夠避免這種開銷。

       有一種更簡單的“hacky”方法,包括重新權衡激活值,這可以通過加載最初丢棄的最後一層權重來完成,并且僅使用與正在尋找的類索引相關聯的權重來重新權重嵌入。例如,在下圖中,使用

Siamese cat

類的權重來重新權衡資料集上的激活(用綠色突出顯示)。

深度學習表征的不合理有效性——從頭開始建構圖像搜尋服務(二)

權重嵌入

       根據Imagenet,Siamese cat中的

284

類權衡激活,來研究它是如何工作的。

       正在搜尋類似的圖像

todataset / bottle / 2008_000112.jpg

使用權重特征:

深度學習表征的不合理有效性——從頭開始建構圖像搜尋服務(二)

圖像13

深度學習表征的不合理有效性——從頭開始建構圖像搜尋服務(二)

       可以看到,搜尋一直偏向于尋找Siamese cat的照片,而不再展示任何的瓶子圖像,此外,可能會注意到最後一張照片是一隻羊!這就非常有趣了,此時的模型又導緻了另外一種不同類型的錯誤,但模型更适合目前的任務需求。

       從上面的結果可以看出,通過寬泛方式搜尋類似的圖像,或者通過調整模型所訓練的特定類别,使得模型向前邁出的了一大步,但由于使用的是在Imagenet上預訓練的模型,是以僅限于1000個Imagenet類别。這些類别不能包羅萬象,是以希望找到更加靈活的東西。另外,如果我們隻是在不提供輸入圖像的情況下搜尋貓呢?

       為了做到這一點,使用的不僅僅是簡單的技巧,還需利用一個能夠了解單詞語義能力的模型。

文本-->文本

嵌入文本

       下面進入自然語言處理(NLP)世界,可以使用類似的方法來索引和搜尋單詞。

       從GloVe加載了一組預先訓練的矢量,這些矢量是通過從維基百科上爬蟲并學習該資料集中單詞之間的語義關系而獲得的。

       像之前一樣建立一個索引,這次包含所有GloVe向量。之後就可以在嵌入中搜尋類似的單詞。

       例如,搜尋

said

,傳回[word,distance]清單:

  • ['said', 0.0]
  • ['told', 0.688713550567627]
  • ['spokesman', 0.7859575152397156]
  • ['asked', 0.872875452041626]
  • ['noting', 0.9151610732078552]
  • ['warned', 0.915908694267273]
  • ['referring', 0.9276227951049805]
  • ['reporters', 0.9325974583625793]
  • ['stressed', 0.9445104002952576]
  • ['tuesday', 0.9446316957473755]

           這似乎非常合理,大多數單詞在含義上與我們的原始單詞非常相似,或代表一個合适的概念。最後的結果(

    tuesday

    )也表明這個模型存在一些瑕疵,但它會讓我們這種方法會讓我們開始起步。現在,讓我們嘗試在模型中既包含單詞,又包含圖像。

一個大問題

       使用嵌入之間的距離作為搜尋方法似乎看起來非常合理,大多數單詞在含義上與原始單詞非常相似,但對單詞和圖像的表示似乎并不相容。圖像的嵌入大小為4096,而單詞的嵌入大小為300,如何使用一個來搜尋另一個?此外,即使兩個嵌入大小都相同,它們也會以完全不同的方式進行訓練,是以圖像和相關單詞很可能不會發生有随機相同的嵌入。是以,需要訓練一個聯合模型。

圖像<-->文本

       現在建立一個混合模型,可以從單詞到圖像,反之亦然。

       在本教程中,将第一次實踐自己的模型,模型是從一篇名為DeViSE的優秀論文中汲取靈感。我們的想法是通過重新訓練圖像模型,并改變其标簽的類型來結合這兩種表示。

       通常,圖像分類器被訓練為從許多類中選擇一個類别(Imagenet為1000類)。以Imagenet為例,轉化最後一層為大小1000的一維向量來表示每個類的機率。這意味着模型沒有語義了解哪些類與其他類相似,即将貓的圖像分類為狗導緻與将其分類為飛機的錯誤是一樣的。

       對于混合模型,用我們的類别單詞向量替換模型的最後一層,這允許模型學習到将圖像語義映射到單詞語義,這也意味着類似的類将彼此更接近(因為

cat

的單詞向量比

airplane

更靠近

dog

)。我們将預測一個大小為300的語義豐富的單詞向量,而不是大小為1000的單詞向量,通過添加兩個全連接配接層來實作此目的:

  • 一個大小為2000的中間層
  • 一個大小為300的輸出層(GloVe單詞向量的大小)

           以下是在Imagenet上訓練模型時的樣子:

深度學習表征的不合理有效性——從頭開始建構圖像搜尋服務(二)

       這是修改後模型的樣子:

深度學習表征的不合理有效性——從頭開始建構圖像搜尋服務(二)

訓練模型

       在資料集的訓練集上重新訓練我們的模型,以學習預測與圖像标簽相關聯的單詞向量。例如,對于具有類别cat的圖像,嘗試預測與cat相關聯的300長度向量。訓練需要一些時間,但這仍然要比Imagenet訓練快得多。

       與通常的資料集相比,本文使用的訓練資料(資料集的80%作為訓練集,即800個圖像)是微不足道的(Imagenet有一百萬張圖像)。如果使用傳統的類别訓練技術,我們不會指望模型在測試集上表現得非常好,并且也不會期望它在全新的例子上有不錯的效果。

       一旦模型被訓練好,就可以從上面獲得GloVe單詞索引,并通過運作資料集中的所有圖像,将其儲存到磁盤,建構圖像特征的新快速索引。

标注

       現在可以輕松地從任何圖像中提取标簽,隻需将我們的圖像提供給訓練有素的網絡,儲存出來的大小為300的矢量,并從GloVe中找到英語單詞索引中最接近的單詞。讓我們試試下面這張圖檔——它的類别标簽是瓶子,雖然它包含各種各樣的物品。

圖像16

       以下是生成的标簽:

  • [6676, 'bottle', 0.3879561722278595]
  • [7494, 'bottles', 0.7513495683670044]
  • [12780, 'cans', 0.9817070364952087]
  • [16883, 'vodka', 0.9828150272369385]
  • [16720, 'jar', 1.0084964036941528]
  • [12714, 'soda', 1.0182772874832153]
  • [23279, 'jars', 1.0454961061477661]
  • [3754, 'plastic', 1.0530102252960205]
  • [19045, 'whiskey', 1.061428427696228]
  • [4769, 'bag', 1.0815287828445435]

           這是一個非常好的結果,因為大多數标簽非常相關。這種方法仍然有提升空間,但它可以很好地掌握圖像中的大多數元素。該模型學習提取許多相關标簽,甚至從未經過訓練的類别中提取到的!

使用文本搜尋圖像

       最重要的是,可以使用聯合嵌入,輸入任何單詞都可以搜尋圖像資料庫。隻需要從GloVe擷取預先訓練好的單詞嵌入,并找到具有最相似嵌入的圖像即可。

使用最少資料進行廣義圖像搜尋。

       首先從搜尋

dog

這個詞開始:

深度學習表征的不合理有效性——從頭開始建構圖像搜尋服務(二)

搜尋

dog

術語的結果

       結果相當不錯,但是我們可以從标簽上訓練的任何分類器中都得到這個!

ocean

術語的結果。

       模型了解

ocean

water

類似,并從

boat

類中傳回許多物品。

       搜尋街道又會發生什麼呢?

深度學習表征的不合理有效性——從頭開始建構圖像搜尋服務(二)

搜尋“street”的結果

       從圖中可以看到,傳回的圖像來自各種類别(

car

dog

bicycle

,

bus

person

),但大多數圖像都包含或靠近街道,盡管我們在訓練模型時從未使用過這個概念。因為通過預先訓練的單詞向量,利用外部知識來學習比簡單類别在語義上更豐富的圖像向量映射,是以模型可以很好地概括為外部概念。

無以言表

       英語雖然已經發展了很久,但還不足以為一切都有對應的詞。例如,沒有英文單詞表示“躺在沙發上的貓”,但這是一個對輸入搜尋引擎完全有效的查詢。如果想要同時搜尋多個單詞,就可以使用一種非常簡單的方法,即利用單詞向量的算術屬性。事實證明,總結兩個單詞向量通常是非常有效的。是以,如果隻是通過使用貓和沙發的平均單詞矢量來搜尋我們的圖像,就可以希望獲得非常像貓、像沙發一樣的圖像、或者在沙發上有貓的圖像。

深度學習表征的不合理有效性——從頭開始建構圖像搜尋服務(二)

多個單詞的組合嵌入

       下面使用混合嵌入搜尋

深度學習表征的不合理有效性——從頭開始建構圖像搜尋服務(二)

sofa

+

cat

的結果

       從圖中可以看到,結果不錯。因為大多數圖像都包含一些毛茸茸的動物和一個沙發。我們的模型隻訓練單個單詞,也可以處理兩個單詞的組合,但還沒有建構Google Image Search,但對于相對簡單的架構來說,本文絕對是有用的。

       這種方法實際上可以很自然地擴充到各種域,感興趣的讀者可以應用于各自的領域之中。

結論

       希望讀者能夠發現這篇文章内容的豐富,它揭開了一些基于内容的推薦和語義搜尋世界的神秘面紗,感興趣的讀者快上手試試吧。

數十款阿裡雲産品限時折扣中,趕緊點選領劵開始雲上實踐吧!

作者資訊

Emmanuel Ameisen,AI研究者

個人首頁:

https://twitter.com/EmmanuelAmeisen

本文由阿裡雲雲栖社群組織翻譯。

文章原标題《The unreasonable effectiveness of Deep Learning Representations》,譯者:海棠,審校:Uncle_LLD。

文章為簡譯,更為詳細的内容,

請檢視原文
下一篇: 程序和線程

繼續閱讀