在這篇文章當中,我們就來簡單**一下神經網路當中的非線性單元
通常用的非線性單元有兩類sigmoid非線性單元,rulu非線性單元
這個問題其實涉及到乙個非常基本的問題:神經網路為什麼可以用來做分類?
sigmoid函式是這樣乙個函式
函式影象是這樣的
這個函式可以把
範圍當中的值對映到[0,1]
有興趣的同學可以看一下這段**,自己嘗試著畫一下sigmoid的函式
import numpy as np
import math
import matplotlib.pyplot as plt
from scipy.misc import imread, imresize
def sigmoid(x):
return [ (1.0 / ( 1.0 + math.exp( i * -1 ) )) for i in x ]
def main():
x = np.arange(0,1, 0.01)
w = 10
b = -5
z = w * x + b
print z
y = sigmoid( z )
plt.plot(x,y)
plt.show()
if __name__ == '__main__':
main()
如果我們考量輸入的變數t,再把它進一步分解成神經網路的輸入的話,公式就變成了這樣
這個式子是非常有意思的,如果我們改變w和b的值,就可以改變函式的形狀
在這個式子中,如果改變w的值,就會改變sigmoid函式的形狀,w越大,變化越都快函式形狀越陡峭;改變b的值可以改變函式的位置。 而且如果我們關注
這個值的話,就會發現這個值就是s(t)=0.5的位置,我們可以通過控制這個值來控制函式的位置
當w和b的值很大的時候,函式就會變成乙個離散的階越函式,就像這樣
而我們可以通過構造兩個階越函式來實現乙個階越,就像這樣
the code is here
import numpy as np
import math
import matplotlib.pyplot as plt
from scipy.misc import imread, imresize
def sigmoid(x):
num = x.shape[0]
for i in range(num):
x[ i ] = (1.0 / ( 1.0 + math.exp( x[i] * -1 ) ))
return x
def main():
x = np.arange(0,1, 0.01)
w1 = 300
b1 = -100
z1 = sigmoid(w1 * x + b1)
h1 = 1
a1 = z1 * h1
w2 = 600
b2 = -400
z2 = sigmoid(w2 * x + b2)
h2 = -1
a2 = z2 * h2
y = a1 + a2
plt.plot(x,y)
plt.show()
if __name__ == '__main__':
main()
這段**可以實現乙個bump,而我們可以通過這個bump來逼近分類的邊界函式。當然乙個bump是極其不精確的,我們需要增加神經元的數量,以及層數(因為增加了層數就增加了非線性單元)來實現逼近。理論上來講,只要神經元足夠多,就可以足夠逼近,達到我們的要求
relu的全稱是rectified linear units(修正線性單元),它的函式表示式非常的簡單
就是說小於0的部分全部置為0,其他的維持原來不變
這樣做有幾個好處
第一,計算方便
尤其是我們要在back propagation的階段要計算偏導的時候,如果是要計算sigmoid的偏導,那就是
但是計算relu的偏導就是
第二,不會出現dead neuron
在訓練神經網路的時候,有時候會出現dead neuron的情況,就是說某個neuron出現了特定的值,導致不管怎麼訓練它的值都不會發生太大的變化。這是因為如果使用了sigmoid的啟用函式的話,我們可以看到在x足夠大的時候,函式的值接近1,趨向於飽和,這個時候x的值可能發生了變化,但是表現在啟用函式的輸出上可能根本不明顯,所以才會出現不管怎麼訓練都沒有效果的情況
線性與非線性
就是變數是一次的就叫做線性,否則就是非線性。不過每個具體問題都不盡相同。1.比如線性函式,就是自變數都是一次的,f x1,x2,xn a0 a1x1 a2x2 anxn 線性 與 非線性 常用於區別函式y f x 對自變數x的依賴關係。線性函式即一次函式,其影象為一條直線。其它函式則為非線性函式,其...
非線性優化
問題的一般表達 x 是 n 維實向量 x x x t in r n,s是 r n 的子集,f 0 x f m x 是x相關的實值函式。我們所要解決的主要是以下最小問題的變體 min f 0 x s.t.f j x 0,j 1.m,x in s,其中 可以是 geq,leq or f 0 是問題的目標...
時間非線性
時間非線性 2011年12月31日 現在 我的面前時一堆白紙黑字,那麼多人的心情要我體會,那麼多人的思考要我識辨,然後用最準確的方式寫在卷子上,署上我的名字,接下來的考試,就是這個形式,似乎到了大學也就考試的時候享受那種筆力風劍的刀光血影了,寫完是一陣得酣暢淋漓,寫之前是一陣得鬧心。寫作是文人的生活...