第一次讓 neural networks 大展身手的領域是在計算機視覺,因為需要分析圖像跟聲音
幾個例子能讓我能了解到 deep learning 與 大型 neural networks 是如何被應用在計算機視覺的領域中
想了解這個我們必須熟知圖像特徵這個概念
在計算機視覺中,圖像特徵相當於局部的探測器,將這些探測器綜合起來做出的預測就是圖像識別
假設今天我想預測圖像是否為人臉,此時就需要神經元探測器來識別,比如:鼻子探測器、眼睛探測器....
當所有的探測器都探測到對應的東西,你的 neural networks 就會預測這是一張人臉
這只是個例子,實際上我們並沒有這樣的東西,我們所擁有的就是被稱為圖像特徵的東西或者 interesting points
這些點有不同的稱呼,必須找到圖像的局部單元或片段,這些東西包含著明顯的特徵
也許是眼角或鼻子周邊,若是你有這種角落探測器,它便能偵測出眼睛、鼻子、嘴巴...
當你檢測到足夠多的角落按一定規律排列,你就可以得到人臉
有很長一段時間描述這些局部特徵的探測器都是手工完成
sift(Scale-invariant feature transform) 特徵就是一個非常流行演算法,它大大改變了計算機視覺的面貌
當然在個基礎之上還有許多的演算法來提高精度,接著我們來看看這個演算法如何被應用在圖像識別
我們在圖像中執行 sift 這些特徵會在圖像中各點開花(眼角、嘴角...),接著我們造一個向量來描述這個圖像
其依據的是 sift 開花的地方(開花=1,反之=0),這個跟尋找一篇文章的單字很像
得到這些資訊後,我們將它導入到一個識別器,舉例來說用之前學的 classifier ,藉由它來預測這是不是一張人臉
這對計算機視覺的意義極其重大,因為建構這些人工的圖像特徵,需要非常多的資源跟成本
而 neural networks 可以自動發現和識別這些特徵,我們將一個圖像輸入到一個三層 neural networks
你會發現與識別局部特徵探測器好比 sift 一樣,每一層都會發現這些特徵,每個探測器都探測不同的東西
在不同的層次探測不同的圖像性質,第一層你可能會看到 kinda 探測器,它會透過這些局部的片段,探測到對角線的結構
所以第一個探測器就是找到對角線的邊緣、中間的探測器則是從那一個方向抓對角的邊緣最後一個則是抓取過度特徵以及從深色到綠色的變化
而下一層你會把對角線邊緣綜合起來形成更複雜探測器,你可以從中得到比如發現了彎彎曲曲的線或某種特徵器剛好對應到探測圖像的角
最後一層將可針對各種不同的圖像造出,諸如識別:軀幹、臉部的探測器,所以在 neural networks 當中,能抓取不同的特徵做到自動學習
Deep learning 能夠從圖像中學習複雜的特徵,我們可以先看看早期的例子
比如識別交通號誌,使用 Deep neural networks 它能達到99.5%的精準度,在google的街景車所拍的圖片中即便是複雜的圖片它也能夠達到97.8%的正確率
但真正讓人興奮的是2012年的一個名為ImageNet的比賽,在那場比賽中他們收集了120萬張圖片涵蓋了1000個類別
比賽內容為是否能對圖片做正確的方類,其識別的項目不單單是問,這張圖片是否為一隻狗,而是它是黃金還是拉不拉多
下面是前三名的隊伍,前兩名使用了 SIFT 的演算法而第一名採用了 Deep neural networks 使其正確率大大超越了前兩名
他們的結果大大的提高了大家在計算機視覺的領域中使用 Deep neural networks 的興趣
因為只要指定一些特徵然後 Deep neural networks 就會自動學習這些特徵
這個團隊使用的方法名為 AlexNet neural network ,你可以從下圖中看到它包含了八層六萬個參數
這方法之所以可行要歸功於新的訓練演算法(基於GPU),它能夠處理大量的圖片和參數
SuperVision 這個團隊用1.5分鐘透過 deep learning 完美的從1000個類別中預測出一張圖片的類別
接下來我們來看看它們那些分類和預測的成功率為何
我們用 AlexNet neural network 用來作為一個網頁上查詢的 server
每次我點擊圖片,它就會傳輸到GPU這樣會更快運算並返回結果
你可以發現它的第一個預測是 screen 第二順位為 montor,完全沒受到桌布的影響,甚至是狗的品種
不只是這些,其實它可做得更好,比方說圖片的解析
我們可以針對圖像中的每一個像素進行分類並發現特定的區域(sky、road.....)