產品經理能看懂的深度學習筆記一:什麼是神經網絡Neural Network

我們不妨以一個經典的實際問題來開篇:如何讓機器自動識別手寫的數字?

比如:

產品經理能看懂的深度學習筆記一:什麼是神經網絡Neural Network

儘管它們有著各種不同的形態,即便是同一數字,也有各種變體,我們的大腦卻依然可以毫不費力的認出這些數字。那麼我們如何讓機器認出這些數字而不受變體的干擾呢?

隨意寫一個數字3,使用低像素:比如:28*28 pixels

產品經理能看懂的深度學習筆記一:什麼是神經網絡Neural Network

如果現在由你編程去識別出來這是個3?你會怎麼做?

產品經理能看懂的深度學習筆記一:什麼是神經網絡Neural Network

是不是感到這個不光是繁瑣,還異常的難?這個時候不禁又要敬佩一下我們的大腦,怎麼那麼牛!

產品經理能看懂的深度學習筆記一:什麼是神經網絡Neural Network

我們的大腦由千億規模的神經元(Neurons)構成,他們之間通過軸突(Axon)與突觸(Synapse)互相連接探測和傳播我們接收的各種信息並分發到不同區域最終形成我們的感知。(值得注意的是大腦中將近一半的神經元都是服務於我們的視覺系統的)

學者們於是想到模仿大腦的神經網絡來構建機器的神經網絡(注意只是模仿,實際機器的學習與人腦完全不同)。

回到我們的問題,我們可以這樣來分解我們的手寫識別問題了:

我們將每一個像素作為一個輸入,也就是一個神經元:

產品經理能看懂的深度學習筆記一:什麼是神經網絡Neural Network

每個神經元裡的數字表示像素的灰度值,比如我們設定它是在0和1之間的任意值,0表示黑色,1表示白色,0和1之間數值表示黑白之間的灰度值,這就是我們定義的神經元。那麼28*28 pixels就是784個神經元,每個神經元裡的數值我們稱之為一個激活(Activation):

產品經理能看懂的深度學習筆記一:什麼是神經網絡Neural Network

這就構成了我們神經網絡的第一層,就這麼簡單。

產品經理能看懂的深度學習筆記一:什麼是神經網絡Neural Network

我們稱之為輸入層(Input layer),然後我們來建立最後的輸出層(Output layer),10個神經元,每一個代表0-9中的一個數字,每一個神經元裡同樣有一個數值(Activation),代表機器認為最終識別結果是該數字的概率,例如:

產品經理能看懂的深度學習筆記一:什麼是神經網絡Neural Network

最終結果中0.97的可能性此數字是3

我們已經擁有了神經網絡的第一層和最後一層,處於第一層和輸出層之間我們稱為隱藏層(Hidden Layers),這些隱藏層就是在回答究竟機器是如何識別這些數字的過程,你可以視這些隱藏層為黑盒子,並不影響我們理解一個簡單的神經網絡就這樣搭建好了。

產品經理能看懂的深度學習筆記一:什麼是神經網絡Neural Network

剩下的就是工程師的事了,哈哈,為了防止工程師打你,我們繼續探尋這中間層的美妙,為了讓大家能夠初步的對於神經網絡建立概念,我們以下的實現講解本著最簡化原則,目的只是讓大家清晰整個神經網絡的工作原理,當然如今的技術發展已經迅速而強大,這個留待我們在陸續的筆記中慢慢道來。

在這個例子中,我們不妨選擇兩層隱藏層,原因是這樣利於理解不繁瑣,而每層我們都選擇是16個神經元,為什麼是16個?你理解為我就只有畫16個圓的耐心就對了。

那麼為什麼要分層呢?為什麼通過分層這種結構可以達成我們預期的智能效果呢?

我們不仿問下自己:你最期望這些隱藏層做點什麼呢?

也許是如下這樣:

產品經理能看懂的深度學習筆記一:什麼是神經網絡Neural Network

數字9可以分解成為一個“上半圈”和“右下線”

產品經理能看懂的深度學習筆記一:什麼是神經網絡Neural Network

數字8可以分解為“上半圈”和“下半圈”

產品經理能看懂的深度學習筆記一:什麼是神經網絡Neural Network

數字4可以分解成為幾條線

那麼我們可以期望第三層神經元是由這些分解的子組件相對應,這樣當我們給出一個圖片時,如果有一個類似9或者8那樣的“上半圈”,就會在第三層有一個明確的“上半圓”神經元的Activation接近1,這還並不能說明任何類似的圖片提供時,都會在第三層映射出這種“上半圈模式(pattern)”,但是對於第三層到最後一層,我們至少可以說0到9的數字都可以是第三層這些組件的一種組合,第三層只需要學習怎樣的組合對應哪一個數字就行了。

產品經理能看懂的深度學習筆記一:什麼是神經網絡Neural Network

當然了,聰明的你一定會發問了:即便是這樣,那麼就算一個“上半圈”,又怎麼識別呢?或者更進一步,在第三層的這些個子組件正確的模式(pattern)應該是什麼呢?

我們繼續想象,一個“上半圈”也許可以再分解出來多個邊線(edge):

產品經理能看懂的深度學習筆記一:什麼是神經網絡Neural Network

產品經理能看懂的深度學習筆記一:什麼是神經網絡Neural Network

那麼我們的整個期望應該是:當數字9輸入後,第二層可以將它分解成為多個邊線edge(圖中的各種顏色段),第三層這些邊線edge又形成了像“上半圈”那樣的多個子組件,最後一層組件的組合對應了具體的數字。

產品經理能看懂的深度學習筆記一:什麼是神經網絡Neural Network

hm,想一想,還是挺有道理的,如果機器可以這樣來識別這些edge和pattern,那差不多可以最終給你一個靠譜的結果咯。

改作業:

機器的識別過程完全不是按照我們以上想象的這種邊線和半圈來的!

但是以上的演示有一個道理是正確的:每一層的激活是和它的上一層緊密相關的。這是神經網絡機制的核心所在。

再想簡單點:

假設我們只是需要在第二層尋找一個神經元,對於第一層輸入的各種圖片,檢查是否擁有一個邊線(edge),如圖所示,

產品經理能看懂的深度學習筆記一:什麼是神經網絡Neural Network

面對不同的圖片輸入,我們怎麼來找這個邊線(edge)呢?給第一層的每一個神經元引入一個權重(weight)的概念,這個權重只是一個數值, 舉個例子,如果讓全部的輸入為0,只讓邊線區域的權重為正數,那麼所有像素權重的總和恰好相當於我們要找的區域中的像素值:

產品經理能看懂的深度學習筆記一:什麼是神經網絡Neural Network

機器可以不斷的調整權重參數去找到邊線:

產品經理能看懂的深度學習筆記一:什麼是神經網絡Neural Network

在我們建立的這個神經網絡中,我們希望activation的數值是在0-1之間,引入sigmoid函數(實際應用中一般是採用的RELU函數,sigmoid計算量太大效率很差很難達成好的效果),在實際的權重求和計算中,有時你也許並不希望總和超過一定範圍,通過bias或者我們叫閾值(Threshold)來調控限制。:

產品經理能看懂的深度學習筆記一:什麼是神經網絡Neural Network

產品經理能看懂的深度學習筆記一:什麼是神經網絡Neural Network

權重weights告訴你第二層中的這個神經元正在拾取的像素模式,偏值bias告訴你在這個神經元開始獲取有價值的激活之前加權和的界限,好了,我們第二層的這個神經元的激活就有眉目了。這只是第二層的一個神經元,同理確定第二層的其他神經元。於是,這其實已經變成了一個線性代數的矩陣求解了:

產品經理能看懂的深度學習筆記一:什麼是神經網絡Neural Network

n=784, m=16

就這個簡單的神經網絡,算一下總共的權重和偏值居然有:

產品經理能看懂的深度學習筆記一:什麼是神經網絡Neural Network

這13002個權重和偏值的調試將會讓這個神經網絡表現出非常不同的結果,我們說機器學習,就是指讓機器去尋找正確的權重和偏值,最終正確的識別我們的目標結果。

想想看你自己做下來開始手動調試這13002個參數?你就明白機器的優勢了。

那麼我們如何訓練數據呢?我們將在下一篇文章中分解。

思考:只是一個28pixel的低像素手寫圖片,我們就需要調整大約13002個參數來學習,2000*2000的高清圖片需要多少參數?機器算的過來嗎?

比如下圖:

產品經理能看懂的深度學習筆記一:什麼是神經網絡Neural Network

小燈點亮八卦:

上世紀60年代MIT組織成立了專門研究計算機視覺的夏季課題,當時人們很樂觀,覺得人眼識別一張圖片太容易了,毫不費力,機器也不會差到哪裡去,沒想到這一研究就是幾十年,1998年任職貝爾實驗室的Yang LeCun成功解決了識別手寫數字的問題,提出了CNN(Convolutional Neural Network),直到2012年計算機識別圖像才有了飛躍的突破和發展,可見科技突破的不易,直到今天,依然還需要更大的努力去突破和解決各種問題。

CNN的提出和應用完美的解決了圖像識別的問題,我們將在後續解析CNN,今天讓我們記住CNN的重要奠基人:

產品經理能看懂的深度學習筆記一:什麼是神經網絡Neural Network

https://www.youtube.com/watch?v=aircAruvnKk&t=995s

http://shukra.cedt.iisc.ernet.in/edwiki/Neural_Network_based_classification_of_traffic_signs

https://blog.goodaudience.com/artificial-neural-networks-explained-436fcf36e75

https://en.wikipedia.org/wiki/Neural_network


分享到:


相關文章: