iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 22
0

Searching for images: A case study in deep learning

接下來這個章節將會談到機器學習中的一個新領域 deep learning

我們會透過展示照片的相似度來選購商品,來談它

假設今天我輸入"西裝鞋",所能找到的東西其實大同小異

What is a visual product recommender?

現今有許多的購物方式,最常見的是關鍵字搜尋,透過搜尋引擎幫我們找我們要的商品

但接下來我想談談什麼是基於相似度的推薦

假設你姐姐是個時裝設計師,今天她生日快到了,你想挑件裙子送給她

當你使用關鍵字搜尋時,你會發現一堆裙子
https://ithelp.ithome.com.tw/upload/images/20180108/20107448l2FIaO7eBA.jpg
假設我知道他對花朵的圖案有偏好,我就可以加入一些關鍵字"floral"
https://ithelp.ithome.com.tw/upload/images/20180109/20107448WbCZFvQ1f8.jpg
可是即便如此我可以選擇的還是太多了,我沒辦法更具體的描述

假設我在挑選的過程中,看到一條我認為應該是她風格的裙子,接下來我就可以點擊她

接著我就可以看到一堆,基於圖像風格非常相似的裙子了

https://ithelp.ithome.com.tw/upload/images/20180108/201074488DXZUhli9B.png

Learning very non-linear features with neural networks

剛才的技術是建立在 neural networks 的基礎之上,但在開始之前我們先談資料表現的形式

前面的章節提到了tf-idf的文字資料表現形式、還有詞袋模式,那圖片要怎麼表示呢?

這些資料我們稱為特徵,是機器學習中很重要的部分

我們一般在談到機器學習時會有一些輸入值,比如我們用分類做情緒分析,輸入一個句子通透分類器模型,來判斷這個句子的評價是正面還是反面

而在圖像分類中,我們的目標是從一張圖片出發,它的 pixels(像素) 就是模型的輸入值,將透過分類器模型

舉個例子,我們想要分辨一隻狗的品種
https://ithelp.ithome.com.tw/upload/images/20180108/20107448Ko2ye53mc2.jpg

我們把它當中輸入送入分類器,對圖片來說,也有許多表現形式,今天要來談 neural networks

neural networks 提供了一種非線性的資料表現形式

讓我們先回到分類法複習一下

https://ithelp.ithome.com.tw/upload/images/20180108/20107448oVUcUGhlyh.jpg

我們之前講到線性分類會創造一條直線或一個線性決策邊界,來區分正向/負向,只要一個夠好的函數,我們就可以把正向與負向分類

在神經網路中,我們將用圖形來代表這樣的分類器,對每一個特徵量,我們都有一個與之對應的節點
https://ithelp.ithome.com.tw/upload/images/20180108/20107448JvszZNdmFq.jpg

想像一下,所有的權值w0~wd與各自特徵量x1~xd以及常數1相乘,來求得最後值,其值大於零輸出值等於1,反之則為0

這就是一個只有一層的小型 neural networks 範例

我們將一個小型的線性分類器稱為一個 neural networks 或一個單層 neural networks

https://ithelp.ithome.com.tw/upload/images/20180108/201074488cHLSj58qq.jpg

如同圖示一般,跟著AND或OR的邏輯對其權值做相乘並做出邏輯的判斷即可,那什麼東西是線性分類器無法表示的呢?

這裡有個例子,在這個例子裏面沒有那條線可以把加號與減號區分開來

https://ithelp.ithome.com.tw/upload/images/20180108/20107448SWYX5ZsXbI.jpg

而如果使用XOR就可以很輕鬆做到了,我們在這個例子中可以看到線性的極限,但對於 neural networks 則是小菜一碟

對 neural networks 來說該如何表達它呢?

為了不透過x1與x2來預測y,我們將其包成z1與z2這兩個中間值來預測y

我們該如何用一個 neural networks 預測z1,同上面的方法一樣,因為是not x2 所以將 -1 放到 x2 的邊上

對z2也用相似的方法,在 x1 的邊上放上 -1,最後用得到的z1 與 z2 來求出y

https://ithelp.ithome.com.tw/upload/images/20180108/201074482aVsQh6ies.jpg

這就是最簡單的 deep neural networks,總結來說 neural networks 指的就是對你的資料進行多層次的轉換

然後透過這些變換後的資料來建立非線性的特徵集,這在計算機視覺領域相當常見

neural networks 發展至今大概50年了,但大約在90年代它就失寵了

當時的科學家發現在 neural networks 中獲得較高的準確度非常的困難

但這件事情最近這兩年改變了,一來是資料大量的增加,因為 neural networks 有非常多層,你得倚靠大量資料來訓練每層 neural networks ,一個夠強的 neural networks 它有將近6000個參數

而第二是因為計算能力的增強,因為我們需要處理更大的 neural networks 與更多的資料

人們發現GPU非常適合用於創造和使用著大量資料的 neural networks

因為GPU這些 deep neural networks 變的可能

Reference:


上一篇
[day 20] 推薦系統 -實做
下一篇
[day 22] 深度學習-2
系列文
到底是在learning什麼拉30

尚未有邦友留言

立即登入留言