啟用函式是用來加入非線性因素的,解決線性模型所不能解決的問題。
下面我分別從這個方面通過例子給出自己的理解~
@lee philip@顏沁睿倆位的回答已經非常好了,我舉的例子也是**於他們,在這裡加入了自己的思考,更加詳細的說了一下~
開講~
首先我們有這個需求,就是二分類問題,如我要將下面的三角形和圓形點進行正確的分類,如下圖:
利用我們單層的感知機, 用它可以劃出一條線, 把三角形和圓形樣本分割開:
上圖直線是由
得到,那麼該感知器實現**的功能步驟如下,就是我已經訓練好了乙個感知器模型,後面對於要**的樣本點,帶入模型中。
如果y>0,那麼就說明是直線的右側,也就是正類(我們這裡是三角形)。
如果y<0,那麼就說明是直線的左側,也就是負類(我們這裡是圓形),雖然這和我們的題目關係不大,但是還是提一下~
好吧,很容易能夠看出,我給出的樣本點根本不是線性可分的,乙個感知器無論得到的直線怎麼動,都不可能完全正確的將三角形與圓形區分出來,那麼我們很容易想到用多個感知器來進行組合,以便獲得更大的分類問題,好的,下面我們上圖,看是否可行:
好的,我們已經得到了多感知器分類器了,那麼它的分類能力是否強大到能將非線性資料點正確分類開呢~我們來分析一下:
我們能夠得到
哎呀呀,不得了,這個式子看起來非常複雜,估計應該可以處理我上面的情況了吧,哈哈哈哈~不一定額,我們來給它變個形.上面公式合併同類項後等價於下面公式:
嘖嘖,估計大家都看出了,不管它怎麼組合,最多就是線性方程的組合,最後得到的分類器本質還是乙個線性方程,該處理不了的非線性問題,它還是處理不了。
就好像下圖,直線無論在平面上如果旋轉,都不可能完全正確的分開三角形和圓形點:
既然是非線性問題,總有線性方程不能正確分類的地方~
那麼拋開神經網路中神經元需不需要啟用函式這點不說,如果沒有啟用函式,僅僅是線性函式的組合解決的問題太有限了,碰到非線性問題就束手無策了.那麼加入啟用函式是否可能能夠解決呢?
在上面線性方程的組合過程中,我們其實類似在做三條直線的組合,如下圖:
下面我們來講一下啟用函式,我們都知道,每一層疊加完了之後,我們需要加入乙個啟用函式(啟用函式的種類也很多,如sigmod等等~)這裡就給出sigmod例子,如下圖:
通過這個啟用函式對映之後,輸出很明顯就是乙個非線性函式!能不能解決一開始的非線性分類問題不清楚,但是至少說明有可能啊,上面不加入啟用函式神經網路壓根就不可能解決這個問題~
同理,擴充套件到多個神經元組合的情況時候,表達能力就會更強~對應的組合圖如下:(現在已經公升級為三個非線**知器在組合了)
跟上面線性組合相對應的非線性組合如下:
這看起來厲害多了,是不是~最後再通過最優化損失函式的做法,我們能夠學習到不斷學習靠近能夠正確分類三角形和圓形點的曲線,到底會學到什麼曲線,不知道到底具體的樣子,也許是下面這個~
那麼隨著不斷訓練優化,我們也就能夠解決非線性的問題了~
所以到這裡為止,我們就解釋了這個觀點,加入啟用函式是用來加入非線性因素的,解決線性模型所不能解決的問題。
注:參考於@lee philip@顏沁睿倆位的回答,以上大部分摘自於@顏沁睿
感謝郭江師兄,森棟師兄,德川的討論交流~
6 精通MATLAB運算方法看這篇文章就夠了
學習目標 學習經常使用的運算方法 大於,小於,等於,不等於 clear all a 7 5 b1 rand 2,2 b2 b1 0.6 b3 b1 0.7 c1 eq b2,b3 c2 b2 b3 比較大小 clear all format long a 4.44 eps b 4.44 c1 a b...
2 精通MATLAB資料型別看這篇文章就夠了
學習目標 1 資料型別的強制轉換,數值範圍 2 取整函式的使用學習 3 複數的使用學習 clear all shu 66 雙精度浮點型,強制轉換成整型 shu8 int8 shu shu16 int16 shu shu32 int32 shu shu64 int64 shu zifuchuan da...
vue開發看這篇文章就夠了
每個月,我們幫助 1000 萬的開發者解決各種各樣的技術問題。並助力他們在技術能力 職業生涯 影響力上獲得提公升。一二三 16 小時前發布 庫,本質上是一些函式的集合。每次呼叫函式,實現乙個特定的功能,接著把控制權交給使用者框架,是一套完整的解決方案,使用框架的時候,需要把你的 放到框架合適的地方,...