神經網絡的結構
當你看到這三個“3”的時候,其實它們還是有着不小的區別,但是我們的大腦可以分辨出來。

現在我們提出一個小問題:一個N*N像素的方格,我們來編寫程序判斷里面的數字到底是什么?
要解決這個問題,我們首先來學習一下什么是神經網絡。

神經網絡: 它是一種模仿動物神經網絡行為特征,進行分布式並行信息處理的算法數學模型。這種網絡依靠系統的復雜程度,通過調整內部大量節點之間相互連接的關系,從而達到處理信息的目的。
首先通過名字來理解;神經(元)網絡,神經(元)可以理解為一個裝有數字的容器,放着許多的0到1之間的數字。

看一個例子:這個28*28=784的像素點存放着許多神經元,每一個神經元存着各自的灰度值(0表示全黑,1表示全白),我們把神經元里面的數字叫做激活值,這784個神經元就構成了網絡的第一層。


中間會有一些隱含層,里面進行着數據處理的具體工作,最后一層得激活值對應着是這個數字的可能性。上一層的激活值影響着下一層的激活值。所以神經網絡的核心就是:一層得激活值是怎么通過運算得出下一層的激活值。

現在我告訴你們了,我們是這樣做的,現在我們來討論一下我們為什么可以通過這種層狀的結構來做到智能判斷。
例如在這個數字的例子中:我們可以看到0-9這些數字就是由一些“0”或者“1”等幾個簡單的組件構成的,同理這些小的組件又可以由更小的組件構成,這就是我們的每一層。更一步的擴展,我們可以將這個思想拓寬到圖像識別,語音識別等更有意思的領域。世界上的各種人工智能的任務,都可以轉化為抽象的元素,一層一層的抽絲剝繭。
知道了每一層的含義后,我們就可以通過給每一種小組件賦予不同的權重以及偏置來計算,來推斷。
在神經元中,output = sum (weights * inputs) + bias。偏置實際上是對神經元激活狀態的控制。

然后對於這個計算過程,我們可以簡化為一個矩陣計算,所以我們可以看到機器學習和線性代數是不分家的。

最后簡化成代碼就非常的優雅了。

下一章節就更新我們到底是怎樣獲取合適的權重和偏置。
梯度下降法
深度學習

更新中~~
