[轉載]神經網絡偏置項(bias)的設置及作用
原文來自:https://www.cnblogs.com/shuaishuaidefeizhu/p/6832541.html
1、什么是bias?
偏置單元(bias unit),在有些資料里也稱為偏置項(bias term)或者截距項(intercept term),它其實就是函數的截距,與線性方程 y=wx+b 中的 b 的意義是一致的。在 y=wx+b中,b表示函數在y軸上的截距,控制着函數偏離原點的距離,其實在神經網絡中的偏置單元也是類似的作用。
因此,神經網絡的參數也可以表示為:(W, b),其中W表示參數矩陣,b表示偏置項或截距項。
2、bias的計算方式?
神經網絡結構中對偏置單元的計算處理方式有兩種,
(1)設置偏置單元=1,並在參數矩陣 Θ 中設置第 0 列對應偏置單元的參數,對應的神經網絡如下:
其中,x0 是第一層的偏置單元(設置為1),Θ(1)10 是對應該偏置單元 x0 的參數;a(2)0 是第二層的偏置單元,Θ(2)10 是對應的參數。
在計算激活值時按照(以a(2)1為例):
相當於bias本身值為1,但它連接各個神經元的權重不為1,即---整個神經網絡只有1個bias,對應有多個不同的權重(權重個數等於hide層和out層神經元的個數)
(2)設置偏置單元,不在參數矩陣中設置對應偏置單元的參數,對應的神經網絡如下:
其中,b(1) 是 W(1) 對應的偏置單元向量,b(2) 是 W(2) 對應的偏置單元向量,b(1)1 是對應 a(2)1 的偏置單元。注意,此時神經網絡的參數表示更改為:(W, b)
在計算激活值時按照:
相當於bias連接各個神經元的所有權重都為1,但bias本身不為1,即---有多個bias,但所有的bias對應的權重都為1(bias的個數等於hide層和out層神經元的個數)
綜上,
兩者的原理是一致的,只是具體的實現方式不同。
其實在大部分資料和論文中看到的神經網絡的參數都是表示為:(W, b),其中W代表weight,b代表bias。包括在UFLDL Tutorial中也是采用 (W, b) 表示,只是在Coursera上Andrew Ng老師的在線教程中看到將神經網絡參數表示為 Θ,個人還是更喜歡 (W, b) 這種表示,很清晰。
原文來源:https://blog.csdn.net/xwd18280820053/article/details/70681750
加入我們激活函數用的是 sigmoid 函數,它的圖像如下:
我們很容易看到 sigmoid 函數的作用是將輸入映射到一個 (0,1) 的輸出范圍
現在我們還是有一個簡單的任務,需要將下面三角形和圓形進行分類:
利用上面神經元訓練可以得到一個直線,去線性分開這些數據點. 方程如下:
w1x1+w2x2+b=0,我們就可以得到下面這條類似的直線去線性分割好倆種不同類型的數據點.
那么這條邊界找到了. 而這個邊界是 w1x1+w2x2+b=0 的方程,而 w1x1+w2x2+b 是作為激活函數 sigmoid 的輸入處理.
激活函數將這個輸入映射到 (0,1) 的范圍內. 那么可以增加一個維度來表示激活函數的輸出.
我們認為 g(x)>0.5 就為正類(這里指圓形),g(x)<0.5 就為負類,這里指三角形類. 得到的三維圖如下:第三維 z 可以看成是一種類別!(比如圓形就是 + 1、三角形就是 - 1)
圖來自:Hugo Larochelle 課程 ppt
那么就可以真正的可視化說明一下 w.b 等參數的作用在圖中是怎么體現的~
我們從上圖很容易得到,當我們將這個三維圖進行投影的時候,就是我們上個用直線分割好倆類的平面圖,三維圖中的那個分割平面投影下來就是方程 w1x1+w2x2+b=0.
右邊輸出為 1 的部分就是說 w1x1+w2x2+b>0, 導致激活函數輸出 > 0.5,從而分為正類( 圓形類), 左邊輸出為 - 1 的部分就是說 w1x1+w2x2+b<0, 導致激活函數輸出 < 0.5,從而分為負類( 三角形類)
1 w 參數的作用
其中 w 參數的作用,我們可以得到,是決定那個分割平面的方向所在. 分割平面的投影就是直線 w1x1+w2x2+b=0
我們解釋如下,在二個輸入中,可以得到 w=[w1,w2], 令方程 w1x1+w2x2+b=0,那么該直線的斜率就是 - w1/w2。隨着 w1,w2 的變動,直線的方向也在改變,那么分割平面的方向也在改變~
2 b 參數的作用
其中 b 參數的作用,是決定豎直平面沿着垂直於直線方向移動的距離,當 b>0 的時候,直線往左邊移動,當 b<0 的時候,直線往右邊移動.
我們通過例子解釋如下:首先我們可以肯定是直線方向不變,因為我們沒有動斜率的任何參數,只是改變 b,要說明的就是為什么當 b>0 的時候,直線往左邊移動,當 b<0 的時候,直線往右邊移動.
假設我們有直線方程 x1+x2-3=0, 畫出這個圖像如下:
此時我們將 b 減小到 0,圖像變為如下:
我們從上面圖像中很容易得到結論:
當 b>0 的時候,直線往左邊移動,當 b<0 的時候,直線往右邊移動.
有了 b 參數可視化作用之后,我們很容易解決我一開始的問題. 每個神經元為什么要加上偏置 b, 不加又有什么后果呢?下面通過二維可視化圖來直觀說明一下它們的作用:
3 每個神經元為什么要加上偏置
我先不說為什么一定要加入偏置 b, 就還是上面的分類問題,假如我現在的樣本點是如下這種:
原文來自:https://www.cnblogs.com/shuaishuaidefeizhu/p/6832541.html
1、什么是bias?
偏置單元(bias unit),在有些資料里也稱為偏置項(bias term)或者截距項(intercept term),它其實就是函數的截距,與線性方程 y=wx+b 中的 b 的意義是一致的。在 y=wx+b中,b表示函數在y軸上的截距,控制着函數偏離原點的距離,其實在神經網絡中的偏置單元也是類似的作用。
因此,神經網絡的參數也可以表示為:(W, b),其中W表示參數矩陣,b表示偏置項或截距項。
2、bias的計算方式?
神經網絡結構中對偏置單元的計算處理方式有兩種,
(1)設置偏置單元=1,並在參數矩陣 Θ 中設置第 0 列對應偏置單元的參數,對應的神經網絡如下:

其中,x0 是第一層的偏置單元(設置為1),Θ(1)10 是對應該偏置單元 x0 的參數;a(2)0 是第二層的偏置單元,Θ(2)10 是對應的參數。
在計算激活值時按照(以a(2)1為例):

相當於bias本身值為1,但它連接各個神經元的權重不為1,即---整個神經網絡只有1個bias,對應有多個不同的權重(權重個數等於hide層和out層神經元的個數)
(2)設置偏置單元,不在參數矩陣中設置對應偏置單元的參數,對應的神經網絡如下:

其中,b(1) 是 W(1) 對應的偏置單元向量,b(2) 是 W(2) 對應的偏置單元向量,b(1)1 是對應 a(2)1 的偏置單元。注意,此時神經網絡的參數表示更改為:(W, b)
在計算激活值時按照:

相當於bias連接各個神經元的所有權重都為1,但bias本身不為1,即---有多個bias,但所有的bias對應的權重都為1(bias的個數等於hide層和out層神經元的個數)
綜上,
兩者的原理是一致的,只是具體的實現方式不同。
其實在大部分資料和論文中看到的神經網絡的參數都是表示為:(W, b),其中W代表weight,b代表bias。包括在UFLDL Tutorial中也是采用 (W, b) 表示,只是在Coursera上Andrew Ng老師的在線教程中看到將神經網絡參數表示為 Θ,個人還是更喜歡 (W, b) 這種表示,很清晰。
原文來源:https://blog.csdn.net/xwd18280820053/article/details/70681750
加入我們激活函數用的是 sigmoid 函數,它的圖像如下:

我們很容易看到 sigmoid 函數的作用是將輸入映射到一個 (0,1) 的輸出范圍
現在我們還是有一個簡單的任務,需要將下面三角形和圓形進行分類:

利用上面神經元訓練可以得到一個直線,去線性分開這些數據點. 方程如下:
w1x1+w2x2+b=0,我們就可以得到下面這條類似的直線去線性分割好倆種不同類型的數據點.

那么這條邊界找到了. 而這個邊界是 w1x1+w2x2+b=0 的方程,而 w1x1+w2x2+b 是作為激活函數 sigmoid 的輸入處理.
激活函數將這個輸入映射到 (0,1) 的范圍內. 那么可以增加一個維度來表示激活函數的輸出.
我們認為 g(x)>0.5 就為正類(這里指圓形),g(x)<0.5 就為負類,這里指三角形類. 得到的三維圖如下:第三維 z 可以看成是一種類別!(比如圓形就是 + 1、三角形就是 - 1)

圖來自:Hugo Larochelle 課程 ppt
那么就可以真正的可視化說明一下 w.b 等參數的作用在圖中是怎么體現的~
我們從上圖很容易得到,當我們將這個三維圖進行投影的時候,就是我們上個用直線分割好倆類的平面圖,三維圖中的那個分割平面投影下來就是方程 w1x1+w2x2+b=0.
右邊輸出為 1 的部分就是說 w1x1+w2x2+b>0, 導致激活函數輸出 > 0.5,從而分為正類( 圓形類), 左邊輸出為 - 1 的部分就是說 w1x1+w2x2+b<0, 導致激活函數輸出 < 0.5,從而分為負類( 三角形類)
1 w 參數的作用
其中 w 參數的作用,我們可以得到,是決定那個分割平面的方向所在. 分割平面的投影就是直線 w1x1+w2x2+b=0
我們解釋如下,在二個輸入中,可以得到 w=[w1,w2], 令方程 w1x1+w2x2+b=0,那么該直線的斜率就是 - w1/w2。隨着 w1,w2 的變動,直線的方向也在改變,那么分割平面的方向也在改變~
2 b 參數的作用
其中 b 參數的作用,是決定豎直平面沿着垂直於直線方向移動的距離,當 b>0 的時候,直線往左邊移動,當 b<0 的時候,直線往右邊移動.
我們通過例子解釋如下:首先我們可以肯定是直線方向不變,因為我們沒有動斜率的任何參數,只是改變 b,要說明的就是為什么當 b>0 的時候,直線往左邊移動,當 b<0 的時候,直線往右邊移動.
假設我們有直線方程 x1+x2-3=0, 畫出這個圖像如下:

此時我們將 b 減小到 0,圖像變為如下:

我們從上面圖像中很容易得到結論:
當 b>0 的時候,直線往左邊移動,當 b<0 的時候,直線往右邊移動.
有了 b 參數可視化作用之后,我們很容易解決我一開始的問題. 每個神經元為什么要加上偏置 b, 不加又有什么后果呢?下面通過二維可視化圖來直觀說明一下它們的作用:
3 每個神經元為什么要加上偏置
我先不說為什么一定要加入偏置 b, 就還是上面的分類問題,假如我現在的樣本點是如下這種:

此時我們希望得到的線性方程分割線是下面這種,能夠正確的將倆類進行分開:
到這個時候,我想我們已經明白了,如果沒有偏置的話,我們所有的分割線都是經過原點的,但是現實問題並不會那么如我們所願. 都是能夠是經過原點線性可分的。
==