so
phis
tica
teda
lgor
ithm
≤sim
plel
earn
inga
lgor
ithm
+goo
dtra
inin
gdat
a. σ
(z)=
11+exp(−
z)注意一點,在神經網路引入sigmoid型函式的目的是避免,對權重乙個微小的改變可能對輸出帶來的顯著的改變,這一情況的發生(以此我們來進行微調)。σ(
⋅)完美地將整個實數域的值對映到(0
,1) 區間(對應著概率probability?)。
也即是將函式作用於向量中的每乙個元素得到的輸出再組合成乙個向量。舉例說明:
a′
=σ(w
a+b)
其中w 是乙個二階權值矩陣(代表前後兩個layer中的神經元之間的權重),
a是乙個向量(表示前一層每乙個神經元的輸出組成的向量),
b 表示上一層向下一層的偏置,σ(
⋅)是sigmoid型函式
。
def sigmoid(z):
return 1/(1+np.exp(-z))
# 此時sigmoid接收的是乙個向量,sigmoid(z)的做法正是一種vectorize 的做法
a = sigmoid(w.dot(a)+b)
單層神經網路的增廣(augmentation)形式
z=w1
x1+w
2x2+
…+wd
xdϕ(
z)={
0ifz
≤θ1i
fz>
θ
為了形式的簡單和統一,可將上式轉換如下形式:
z′==
=−θ+
w1x1
+w2x
2+…+
wdxd
w0x0
+w1x
1+…+
wdxd
wtx
也即是:
⎛⎝⎜⎜
⎜⎜x1
x2⋮x
d⎞⎠⎟
⎟⎟⎟d
⇒⎛⎝⎜
⎜⎜⎜⎜
⎜⎜x0
x1x2
⋮xd⎞
⎠⎟⎟⎟
⎟⎟⎟⎟
d+1
⎛⎝⎜⎜
⎜⎜w1
w2⋮w
d⎞⎠⎟
⎟⎟⎟d
⇒⎛⎝⎜
⎜⎜⎜w
0w1⋮
wd⎞⎠
⎟⎟⎟⎟
d+1
ϕ(z′
)={0
ifz′
≤θ1i
fz′>
θ
轉換後的形式是原來形式的增廣形式,即分別對特徵向量
x 和權值向量做一維的增廣,w0
=−θ,
x0=1
neuron單輸出還是多輸出?
答案是單輸出(single output)
通常我們看到的關於多層感知機(perceptron)網路的圖示如上圖。然而,這樣的圖有一種「迷惑性的」一點是,對於每乙個神經元節點(neuron)而言,它們都是多輸入和單輸出,雖然從乙個神經元出來的箭頭指向下一層的每乙個節點,其實輸出的每乙個值都是相等的,這樣做只是出於乙個直觀的需要。
人工神經元從perceptron到sigmoid neuron
引入sigmoid neuron(s
型神經元)的目的是避免對權值(w1
,…,w
d )或者偏置(bias,w0
)的小幅修改可能對最終的輸出造成的比較大的變化,比如分類問題中,將-1
判斷為1
,手寫識別例子中將8
錯分為9
。 z
=wtx
σ(z)
=11+
e−z σ(
⋅)實現了原始輸入(−
∞,∞)
向(0,1
) 的對映(map),實現了一種值域的收縮,也可實現降低輸入(weigts、bias)的小幅修改對輸出可能造成的影響,如此我們可放心地調整引數,實現更優的結果,而不會出現,因輸入的變化可能造成的結果的跳變。
MySQL的邊角料
1查詢對應資料庫所有的表 select from information schema.tables where table schema 資料庫名 2 查詢資料庫所有資料表的字段 select from information schema.columns where table schema 資...
轉貼 大公司的邊角料人才
我曾去過兩家軟體公司做顧問,一家比較有規模的公司 簡稱a 另外一家是20人不到的小公司 b公司 在這期間我見識到了他們對於 人才 使用 或者稱利用 發揮 儲備 what ever 的乙個有趣現象。a和b其實做的軟體業務型別是差不多的,只不過a實力雄厚 人脈廣闊 老闆高富美白靚。b公司剛起步,老闆矮窮...
linu應用邊角料5 exec族函式
1 為什麼需要exec函式 1 fork子程序是為了執行新程式 fork建立了子程序後,子程序和父程序同時被os排程執行,因此子程序可以單獨的執行乙個程式,這個程式巨集觀上將會和父程序程式同時進行 2 可以直接在子程序的if中寫入新程式的 這樣可以,但是不夠靈活,因為我們只能把子程序程式的源 貼過來...