以下部分內容摘抄自書《神經網路與深度學習》
對於上面感知器的輸入x1,x2,x3..xn
,我們引入權重w1,w2..表示相應輸入對於輸出重要性的實數,最終由權重總和∑
wjxj
大於或者小於某個閾值決定終輸結果為1或
這就是感知器所要做的所有事情!
以下面的例項為例,死宅小可週末打算要去參加城市舉辦的動漫展,但是可能有些因素會影響到其行程:
1.天氣好嗎?
2.女朋友會不會陪同去?
3.這個展覽舉辦的地點是否靠近地鐵站點
(死宅無車)?
小可會對每個因素設定乙個重要權重,比如w1=6,w2=2,w3=4,天氣權重選擇
w1=6表示小可很在意當天的天氣狀況,而
w2=2對死宅小可來說,女朋友是無所謂的啦。假設將感知器的閾值設為
5,只要天氣好,小可定會去,或天氣不好,但是附近有地鐵且女朋友會陪同,小可也定會去。對於設定不同的權重,則可以獲得不同的模型。
便於描述,我們把∑wjxj
記為wx,然後把閾值移到另一邊並用b=-threshold代替,而這個b我們暫時稱其為偏置,那麼上面的公式可以表示如下:
現在最簡單的感知器已經介紹完了,解析來分析下它的不足之處:首先它的輸入輸出只有兩個值01;其次輸出的結果跳動太大,比如對於所有的xw+b>0會輸出1,反之輸出0。如果可以平滑下這種跳動,或者把輸出設定為某種概率會不會更加優秀呢?答案是肯定的!
在wx+b的基礎上包裹乙個函式,如σ(wx+b),
這裡的σ稱為啟用函式,定義為
上面的這個式子通常稱為sigmoid函式或者logistics函式,其函式影象如下
看上面的平滑的曲線,y剛好在0-1之間,完全符合我們的物件要求。重點來了,對於給定的x和結果y,如何求得最合適的權重w和偏置b呢?
同樣以書上的例子為例,假如要識別0-9的手寫
(28*28畫素)
,為了方便可以把輸入x看作
28*28=784
維的向量,其值為畫素的灰度值。用
y=y(x)
表示對應的期望輸出。比如手寫若是6,則
y(x)=(0,0,0,0,0,1,0,0,0,0)
t,希望有種方法,對於給定的x和
y可以讓我們找到合適的權重和偏置,記
a=σ(wx+b)
來近似擬合
y(x)
。為了實現這個目標,我們引入了乙個代價函式
(損失函式
其中||表示求摸操作,只要我們讓c(w,b)最小化,其擬合的效果就最佳,哪有什麼方法在c最小時,求得w和b?沒錯,就是之前我們介紹的梯度下降法。只不過之前是一元函式,這裡是二元函式,但原理是一元的。
從不同的角度,可以發現很多有趣的東西,比如這篇博文,就從空間變換的角度來討論感知器wx+b,他認wx實現公升維/降維放大/縮小/旋轉,+b實現平移,而啟用函式σ實現了空間的彎曲,進而把線性不可分的東東轉化成了線性可分(svm原理)
最後總結下:從本文來看,感知器就是利用訓練權重和偏置來近似擬合想要的結果。
書籍參考:
神經網路(單層感知器)
感知器是神經網路中的乙個概念,在1950s由frank rosenblatt第一次引入。單層感知器是最簡單的神經網路。它包含輸入層和輸出層,而輸入層和輸出層是直接相連的。與最早提出的mp模型不同,神經元突觸權值可變,因此可以通過一定規則進行學習。可以快速 可靠地解決線性可分的問題。單層感知器由乙個線...
神經網路 單層感知器
神經網路是非常重要的且用途廣泛,通過模擬人體的處理資訊方式來解決問題,下面就來介紹一下單層感知器。import numpy as np import matplotlib.pyplot as plt 輸入資料 x np.array 1,3,3 1,4,3 1,1,1 1,0,2 標籤y np.arr...
神經網路之 感知器
在神經網路中,我們主要使用的是一種稱為s型神經元的神經元模型。感知器就是我們所謂的 人工神經元 那麼感知器怎麼工作的呢,接下來我們來談談。1.感知器工作機制 上圖中有x1,x2和x3輸入,一般情況下我們可以引入權重w1,w2和w3來表示輸入對輸出的重要性,這時可以計算w1 x1 w2 x2 w3 x...