【神经网络】线性模型非线性模型,感知机与神经网络
剛才突然有一點懵。。神經(jīng)網(wǎng)絡(luò)的非線性到底體現(xiàn)在哪里?結(jié)合感知機為什么是線性模型思考了一下。
即使自我感覺已經(jīng)把神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)搞的很透徹了,但是時不時得多問問自己還是可以發(fā)現(xiàn)新的問題。
線性模型和非線性模型區(qū)別
感知機
什么是感知機模型呢,簡而言之就是可以將有兩個特征的數(shù)據(jù)集中的正例和反例完全分開的關(guān)于一條直線的函數(shù),或者可以是關(guān)于三維空間中的一個平面的函數(shù),更可以是關(guān)于高維的一個超平面的函數(shù)。
圖即為感知機的模型,仔細一看就會發(fā)現(xiàn),其實就是一個單層的神經(jīng)網(wǎng)絡(luò),激活函數(shù)是躍階函數(shù)。
從上面的線性模型與非線性模型的判別標(biāo)準(zhǔn)來看,
從這個式子很容易就看出來,每個w只影響一個x,所以感知機是一個經(jīng)典的線性模型,只能夠處理線性可分的問題。
具體的感知機算法不是本文的重點。
神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)是非線性
簡單明了,就可以看出神經(jīng)網(wǎng)絡(luò)是非線性的了。
但其實一開始困擾了我的是另一個問題。
在Yjango大神的超智能體中,有寫到
激活函數(shù)確實可以產(chǎn)生非線性的變換,但對于神經(jīng)網(wǎng)絡(luò)模型而言,整個處理非線性可分的能力關(guān)鍵不在于激活函數(shù),而是神經(jīng)網(wǎng)絡(luò)之間的多層疊加,使得只能處理線性可分問題的感知機(神經(jīng)元)可以處理非線性可分問題。
但激活函數(shù)同樣是必不可少的。如果神經(jīng)網(wǎng)絡(luò)中的神經(jīng)元都不帶激活函數(shù),那么神經(jīng)元無論怎么樣堆疊,都只能夠處理線性問題。為什么必不可少可以看這篇文章:激活函數(shù)的作用
雖然沒有激活函數(shù)時,每個變量也被多個權(quán)值所影響,但不同的是,此時每個變量都以獨立于其它變量區(qū)分開來。
而當(dāng)引入非線性的激活函數(shù)時,每個變量是無法與其它變量所獨立開來的!
在二維空間中,無論用多么復(fù)雜的激活函數(shù),決策平面依舊是線性的。那激活函數(shù)在干嘛?好,來回顧一張圖
為什么同樣是sigmoid,LR是線性,神經(jīng)網(wǎng)絡(luò)是非線性,之前有解釋過。但可能從理論上理解了,但是直觀來想,可能還不清楚。LR的sigmoid函數(shù)切了一刀,這一刀就是判決平面(下圖中的白色線條),空間被映射成一個坡狀(這里體現(xiàn)了一部分的“彎曲”)。但對于LR而言,它拿走了判決平面就不管了,而神經(jīng)網(wǎng)絡(luò)將這些坡組合起來,也就是利用了sigmoid函數(shù)的輸出。從而形成了最右圖的白色圓圈。
這是tensorflow playground中的運行實例,注意看每個神經(jīng)元的顏色分割。
這部分不是我們研究的重點,這只是給定神經(jīng)網(wǎng)絡(luò)的輸入特征,一般信息越多越容易分開。
重點看這兩部分,每個神經(jīng)元都會有一條切割線。這也暗含了之前講的感知機是線性模型的道理。因為每個神經(jīng)元其本質(zhì)上就是一個感知機。而激活函數(shù)在這邊做了一件什么事情。就是越復(fù)雜的激活函數(shù)其在單個神經(jīng)元上的線性可分能力就越強!有一個想都不要想的道理,每個神經(jīng)元的分類能力越強,那整體的神經(jīng)網(wǎng)絡(luò)的性能肯定越優(yōu)秀。
到這里可以總結(jié)一下,激活函數(shù)的功能就在于使得單個神經(jīng)元具有更強大的分割能力,每個神經(jīng)元就是切一刀,合適的激活函數(shù),可以讓這一刀切的很準(zhǔn)。
?
再將新的特征經(jīng)由神經(jīng)網(wǎng)絡(luò)堆疊,所有的特征基本上就都混在一起了。繼續(xù)觀察上圖,第二層第一個神經(jīng)元是怎么來的,就是之前的四個神經(jīng)元堆疊產(chǎn)生的。你可以這么想,藍色的是高的地方,黃色的是低的地方。四個神經(jīng)元疊在一起,本來是類似于階梯狀的,但是由于四個階梯的中間都是高的,周圍都不全是高,有高有低,所以最后就形成了中間高四周低的形狀。然后神經(jīng)元的作用依舊是切一刀,把山頭給切了下來。就是
這個形狀了。
?
?
但事實上,彎曲這件事不好說是不是真的彎曲,只是不斷映射到高維空間,將樣本稀疏化,然后不斷去尋找一個線性可分的超平面將樣本分離開來(注意是線性可分,每個神經(jīng)元都只是切一刀)。“彎曲”的含義在我們直觀上來理解是被扭曲了,其實也確實是這么回事,從樣本分布上來理解,就是正的樣本都被拉到一頭,負(fù)的樣本被拉到另一頭,變成一座山的樣子。
下面來個實例,有個網(wǎng)站很好的https://cs.stanford.edu/people/karpathy/convnetjs//demo/classify2d.html
還是類似于剛才那個形狀,這里只有一個輸入層,一個隱含層,一個softmax輸出層。激活函數(shù)一共有兩個,但實際上只是被扭曲了一次,只被堆疊了一次。就像剛才我描述的,中間的樣本往山頭去,四周的樣本網(wǎng)山腳去。
右邊的圖只是把圖像二維化了,把一座山變成了一條線。
總結(jié)一下
激活函數(shù)越復(fù)雜單個神經(jīng)元切一刀的能力就越強,切的越準(zhǔn)。
神經(jīng)網(wǎng)絡(luò)的非線性能力體現(xiàn)在激活函數(shù)上。堆的越深,樣本在映射空間中的分布就越稀疏,分布一稀疏,判決超平面就好找,切一刀也好切。就像上面的例子,將樣本稀疏分布到山頭和山腳,在山腰上切一刀就完全分開了。
神經(jīng)網(wǎng)絡(luò)還有不少東西可以研究。就上圖那個網(wǎng)站的可視化分布就是一個很好的學(xué)習(xí)的例子。話說斯坦福是真的厲害,能作出這種demo來,那個理解深度想必是真正的吃透了。
?
參考文章:
線性模型與非線性模型:https://blog.csdn.net/wbcnb/article/details/78306970
感知機原理:https://www.cnblogs.com/pinard/p/6042320.html
?
總結(jié)
以上是生活随笔為你收集整理的【神经网络】线性模型非线性模型,感知机与神经网络的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【机器学习】集成学习之stacking
- 下一篇: 【机器学习】机器学习一些概念的整理(不断