一、算法題目
通常神經網絡可以分兩種,一是生物神經網絡,一是人工神經網絡。
生物神經網絡:
一般指生物的大腦神經元、細胞、觸點等組成的網絡,它產生生物的意識,幫助其進行思考和行動。
人工神經網絡:
它是一種模仿動物神經網絡行為特徵的算法數學模型。
二、算法思維分析
這是一道考察神經網絡基本原理的題目,一般來說生物神經網絡和人工神經網絡基本沒關係,但是它有助於理解人工神經網絡。如果沒有見過類似題目的人,可能覺得有點難度。以下為思維線索分析(如果已經有所了解,請跳過):
1、生物神經網絡是可以學習的,那麼人工神經網絡是不是也可以學習呢?
2、如果生物神經網絡學習的內容是各種事物、對事物的思考、及思想意識的思考等等,那麼人工神經網絡學習的內容是啥呢?
3、如何使人工神經網絡產生的結果更像人類做出的結果呢?因為計算機的結果一般都是可以數學計算的,但人類的很多事物(如感情)不好通過數學計算。
三、算法推演
1、案例數據,讓人工神經網絡在照片上分辨出狗和貓。
2、化繁為簡,用一個2X2的二維表表示一個簡單的神經網絡。
在網絡層1中輸入狗和貓,在網絡層2輸出是狗或是貓的概率。
3、負反饋相關算法
神經網絡第一次輸出是狗或貓的概率,一般結果不準確,需要把誤差反向告訴網絡(下圖綠色的箭頭)進行調整。
循環訓練這個網絡,調整誤差,直至結果符合人類的認知誤差。
一個最簡單的神經網絡就這樣設計完成了。
四、深入推演
1、線性問題
上述神經網絡中,層1到層2參數傳遞是線性的,可以簡單理解為一元一次方程即:y=wx+b(w為係數,b為偏移量)。
在實際神經網絡模型中,層數和節點數量都是很多。但無論這個網絡多麼龐大,節點到節點的傳遞都是線性變換。但這和人類認知的事物大都是非線性的事實不符。這時候就需要激活函數登場了。
激活函數有點類似於人類神經元的抑制與激活概念。其正常為線性輸出,達到某一臨界值時,突然變為非線性輸出,進而符合人類的認知習慣。
下面來看一個激活函數長的樣子。常見的激活函數還有Sigmoid函數、Tanh函數等等,這裡不做介紹。
2、欠擬合及過擬合
如果神經網絡節點過少、網絡層少、訓練數據少、使用函數等因素,造成數據結果不準確。在使用該網絡時,就會造成識別錯誤率高等問題。這種現象叫欠擬合,可以通過增大相關參數的值來調整。
如果上述參數因素都合適,參數調整堪稱"完美",在使用該網絡時,也有可能出現識別錯誤高等問題。這種現象叫過擬合,可以通過以下在網絡中隨機減少節點,進行訓練。
但一般而言,過擬合的問題要好於欠擬合,因為過擬合可能通過隨機減少節點(其實還有很多中方式)等方式方便的調整。
3、深入優化
實際應用中,一般神經網絡輸入層(第一層)和輸出層(最後一層)的節點個數是固定的,但中間網絡的層數和每層的節點個數是根據實際情況確定的。
神經網絡優化的維度:
a、增加樣本數據量和樣本數據種類,如在本示例中增加狗貓照片的數量及增加兔子、老鼠等動物種類。這也是為什麼大數據在神經網絡、人工智慧等領域流行的原因了。
b、增加網絡層及每層的節點,優化激活等類型(還有損失函數、優化器函數等)的函數
c、增加訓練次數、測試擬合等等
c、神經網絡的遷移疊加,即在已建好的神經網絡上構建新的神經網絡,這就更複雜了。
五、神經網絡的本質
剛開始學習神經網絡時可能需要學習很多概念,像隨機深林、決策樹、支持向量機等等,太多了。這裡面有許多數學公式,看看就頭大,感覺學好神經網絡遙遙無期。
但神經網絡的本質,前面提到過,一元一次方程y=wx+b,就是求w(權重),b(偏移量)組成的矩陣。這個矩陣現階段人類不可讀,因為它的維度及每個維度的長度都是神經網絡自己組建的。這也和生物神經網絡類似,至今人類無法將生物神經網絡解析清楚。
本文為神經網絡算法簡單入門介紹。若有不足,還望批評指正!