在機器學習里面,有一大類叫做神經網絡。神經網絡里面,大名鼎鼎的有卷積神經網絡CNN,循環神經網絡RNN。其中,卷積神經網絡在圖形圖像處理方面,有著很出色的成果。例如識別圖像的功能,通過基于CNN的深度學習技術,現在機器已經可以識別出很多東西了。下面這個圖是電視劇《三生三世 十里桃花》的劇照,使用Tensorflow和ImageNet,機器告訴我們,這張圖是 kimono(和服)的可能性是 0.86。gown(長外衣;外罩)0.05.
如果是一些簡單的圖片,例如鍵盤,鼠標,水杯等,識別準確度還是蠻靠譜的。
神經網絡的如果要用圖來表示的話,應該就是下面這個樣子的。最左邊的是輸入,最右邊的是輸出。然后中間有很多隱藏層。
這個圖中隱藏層只有一層,但是大部分用于真實計算的神經網絡,都會有很多隱藏層。
無論是簡單的,還是復雜的神經網絡,其中最小的單元就是感知器。
對于感知器的介紹,可以參考網絡上的文章:
零基礎入門深度學習(1) - 感知器
既然是白話,那么我們就用講故事的方法來說一下。(假設讀者已經閱讀了上面的文章)
假設有一次考試,分為語文,數學,英語,滿分都是100分。但是,語文,數學,英語占的權重(weight)不一樣。同時,我們還需要根據考試難度,在最后總分上面,進行一些加分或者減分的調整(bias)。最后,根據一個標準(激活函數 Step Function)來定考試合格或者不合格(output)。
如果教務處說,我們是外國語學校,對于英語成績比較看重,則我們給予這樣的英語比較高的權重。
X1:語文成績 W1:0.3
X2:數學成績 W2:0.2
X3:英語成績 W3: 0.5
然后,由于這次考試難度比較高,則每個人都加5分 (這個其實叫做 偏置項 bias)
X0 = 1 W0 = 5
成績 = X0 * W0 + X1 * W1 + X2 * W2 + X3 * W3
然后,如果成績為60分及以上則為合格。(激活函數 Step Function)
如果 成績 >= 60 ,則合格
成績 < 60 ,則不合格
OK,這樣一個簡單的感知機就做成了。在權重(W0,W1,W2,W3)和 Step Function(合格標準)定下來的時候,它可以根據輸入(各科成績),求得輸出(是否合格)了。
例如:
語文成績 50 * 0.3 = 15
數學成績 40 * 0.2 = 8
英語成績 80 * 0.5 = 40
附加分 5
成績 15 + 8 + 40 + 5 = 68 =>合格
語文成績 80 * 0.3 = 24
數學成績 50 * 0.2 = 10
英語成績 40 * 0.5 = 20
附加分 5
成績 24 + 10 + 20 + 5 = 59 => 不合格
當然,一般來講,感知機往往是激活函數(StepFunction)是事先決定的,作為訓練數據的輸入,輸出是已知的,權重則是需要通過機器學習來獲得的。我們的例子中,合格標準是事先決定的,60分及格,然后給出一部分數據:某些人的語文成績,數學成績,英語成績 ,是否合格,然后通過機器學習,將各科的權重計算出來,獲得一個模型。然后利用這個模型,通過輸入 語文成績,數學成績,英語成績,來判定是否合格。
當然,如果在訓練數據比較少的時候,這個權重可能計算的不是很準確,數據越多,權重越準確。
語文成績 50 數學成績 40 數學成績 40 附加分 5 合格
語文成績 80 數學成績 50 數學成績 40 附加分 5 不合格
能夠滿足這樣條件的權重有很多很多,所以機器學習的結果可能不是很好。
但是如果有足夠的數據,則權重的計算結果則會非常理想。
最后再回來說一下,為什么叫感知機,其實最簡單的,最原始的時候,感知機的輸出就是 0(不合格) 或者 1(合格).結果能被感知,或者不能被感知。當然,隨著研究的深入,則輸出形式也越來越豐富了,不僅限于是否,也可以是數值或者其他形式的東西。例如,感知機做線性回歸的時候,則是數值作為輸出。