目錄
- 神經網絡的結構
- 梯度下降法
- 深度學習
當你看到這三個“3”的時候,其實它們還是有着不小的差別,但是我們的大腦可以分辨出來。

現在我們提出一個小問題:一個N*N像素的方格,我們來編寫程式判斷裡面的數字到底是什麼?
要解決這個問題,我們首先來學習一下什麼是神經網絡。
神經網絡: 它是一種模仿動物神經網絡行為特征,進行分布式并行資訊處理的算法數學模型。這種網絡依靠系統的複雜程度,通過調整内部大量節點之間互相連接配接的關系,進而達到處理資訊的目的。
首先通過名字來了解;神經(元)網絡,神經(元)可以了解為一個裝有數字的容器,放着許多的0到1之間的數字。
看一個例子:這個28*28=784的像素點存放着許多神經元,每一個神經元存着各自的灰階值(0表示全黑,1表示全白),我們把神經元裡面的數字叫做激活值,這784個神經元就構成了網絡的第一層。
中間會有一些隐含層,裡面進行着資料處理的具體工作,最後一層得激活值對應着是這個數字的可能性。上一層的激活值影響着下一層的激活值。是以神經網絡的核心就是:一層得激活值是怎麼通過運算得出下一層的激活值。
現在我告訴你們了,我們是這樣做的,現在我們來讨論一下我們為什麼可以通過這種層狀的結構來做到智能判斷。
例如在這個數字的例子中:我們可以看到0-9這些數字就是由一些“0”或者“1”等幾個簡單的元件構成的,同理這些小的元件又可以由更小的元件構成,這就是我們的每一層。更一步的擴充,我們可以将這個思想拓寬到圖像識别,語音識别等更有意思的領域。世界上的各種人工智能的任務,都可以轉化為抽象的元素,一層一層的抽絲剝繭。
知道了每一層的含義後,我們就可以通過給每一種小元件賦予不同的權重以及偏置來計算,來推斷。
在神經元中,output = sum (weights * inputs) + bias。偏置實際上是對神經元激活狀态的控制。
然後對于這個計算過程,我們可以簡化為一個矩陣計算,是以我們可以看到機器學習和線性代數是不分家的。
最後簡化成代碼就非常的優雅了。
下一章節就更新我們到底是怎樣擷取合适的權重和偏置。
更新中~~