神經網絡是如何工作的
前言
計算機所在的在本質上都是一系列的加法操作,只是計算機運行速度要快很多。但是有些任務對於人來說很簡單,對於計算機來說卻很困難(比如圖像識別)。
預測器
神經網絡和計算機一樣,對於輸入和輸出都做了一些處理,當我們不知道這些是什么具體處理的時候,可以使用模型來估計,模型中最重要的就是其中的參數。
對於以前所學的知識都是求出特定的參數,而在這里是使用誤差值的大小去多次指導參數的調整,這就是迭代。
誤差值=真實值-計算值
分類器
預測器是轉換輸入和輸出之間的關系,分類器是將兩類事物划分開,只是預測器的目的是找到輸出在直線上,分類器是找到輸出分為兩類各在直線的上下方。但其實都是找到一個合適的斜率(只考慮簡單情況下)
分類器中的誤差值E=期望的正確值-基於A的猜測值得到的計算值$ E=t-y \quad E=(ΔA)x $這就是使用誤差值E得到ΔA$$ΔA=E/x$$,再將ΔA作為調整分界線斜率A的量
但是這樣會存在一個問題,那就是最終改進的直線會與最后一個訓練樣本十分匹配,近視可以認識忽略了之前的訓練樣本,所以要采用一個新的方法:采用ΔA幾分之一的一個變化值,這樣既能解決上面的問題,又可以有節制地抑制錯誤和噪聲的影響,該方法如下$$ΔA=L(E/x)$$此處的L稱之為調節系數(學習率)
使用學習率可以解決以上問題,但是當數據本身不是由單一線性過程支配時,簡單的線性分類器還是不能實現分類,這個時候就要采用多個線性分類器來划分(這就是神經網絡的核心思想)
神經網絡中追蹤信號
對於一個輸入,神經元不會立即反應,而是會抑制輸入,只有當輸入增強到了一定程度,才可以觸發輸出,並且神經元前后層之間是互相連接的。
神經元的輸入和輸出一般采用S函數(sigmoid function)$$y=\frac{1}{1+e^{-x}}$$。因為神經元存在多個輸入,所以需要將輸入的總和作為S函數的輸出。要控制最后的輸出結果,最有效的方式就是調整節點之間的連接強度,這就要使用到矩陣點乘。
一般神經網絡分為三層,第一層是輸入層,無需任何計算;第二層是隱藏層;最后是輸出層。
總體過程如下:(特別注意:權重矩陣是不一樣的)
1.輸入層接收信號,通過權重比例輸出到隱藏層,此處遵守公式
$$X=W•I$$
$$
\begin{pmatrix}
w_{1,1} & w_{2,1}\\
w_{1,2} & w_{2,2}
\end{pmatrix}
\begin{pmatrix}
input1\\
input2
\end{pmatrix}
$$其中W是權重矩陣,I是輸入矩陣,X是組合調節后的信號
2.隱藏層使用S函數(激活函數)對輸入進行處理,然后輸出到輸出層
3.按照同樣的公式,先經過權重的組合調節再適用S函數(激活函數)得到最后的輸出
反向傳播誤差
誤差=期望的輸出值-實際的計算值,所以根據誤差來調整權重。誤差一般使用不等分誤差,就是按照權重的比例分割誤差。
使用權重,將誤差從輸出向后傳播到網絡中,被稱為反向傳播。
$$\begin{pmatrix} a & b\\ c & d \\ \end{pmatrix} \quad \begin{bmatrix} a & b \\ c & d \\ \end{bmatrix}$$