浅析神经网络为什么能够无限逼近任意连续函数
轉載自??淺析神經網絡為什么能夠無限逼近任意連續函數
神經網絡為什么能夠無限逼近任意連續函數?
?下面通過一個分類例子一步一步的引出為什么神經網絡能夠無限逼近任意函數這個觀點,并且給出直觀感覺!
我們首先有這個需求,需要將下面的數據點進行分類,將三角形與正方形正確的分開,如圖所示:
其實上圖就是一個解決一個異或問題。
下面我分別從線性模型,感知機以及神經網絡逐步圍繞這個例子來引出自己的觀點。(以下的講解都在二元函數下進行,便于可視化,高維空間類比)
1.線性模型
如上圖所示,我們什么激活函數都不加,那么輸出結點的公式表達為:y=w1x1+w2x2(注:這里的1,2均是下標,下文一樣)
我們希望得到通過訓練數據學習出w1,w2,然后得到線性模型,能夠解決異或問題。但是我們很容易看出,無論怎么學習,異或問題是一個非線性問題,并不能由一個線性方程能夠正確的將三角形與正方形分隔開!就好像下圖表達一樣,無論你直線怎么動,都不能正確分離開:
?
2.感知機
感知機的定義非常簡單,在上面線性模型中的激活函數變為下面的階梯函數的時候,就是感知機模型。
那么感知機是否可以解決上面異或問題呢?很顯然并沒有改變它只是線性模型的本質,并不能解決非線性分類問題.因為感知機分類平面投影到二維空間的時候,與下圖是一模一樣的:
紅線就代表投影方程,比如現在一個輸入點坐標為(0,0)帶入方程得到結果為0,那么就在紅線上,輸入數據帶入模型中,大于0的話,投影下來是在紅線的右側. 小于0的話,投影下來是在紅線的左側.無論怎么學習(移動)模型,都無法改變感知機是一個線性模型解決不了非線性問題的本質.
?
3.神經網絡?
下面我們看多個感知機組合成的神經網絡是否能夠解決這個問題呢?答案是肯定能啊,標題是神經網絡能夠無限逼近任意連續函數,那么肯定能夠解決非線性問題,那么如何解釋呢。下面一步一步給出理解,首先給出一個倆層神經網絡結構如下:
很容易看出神經網絡就是多個感知機組合而來的,第二層的第一個感知機學到的模型可視化可以是下面這個:
第二層的第二個感知機學到的模型可視化可以是下面這個:
那么在最后一個輸出結點,進行將第二層倆個神經元進行線性組合的時候,得到的可視化圖是下面這個:
相信到這里大家已經有感覺了,這不是明擺著已經解決了我提出的問題了嗎,還不信,看下面!
我們已經成功的將圓形與正方形分類出來,圓形對+1這個輸出,三角形對應-1這個輸出,倆個不同的平面上,正確的完成了非線性分類問題。
可能還有些抽象,這么直白來說,第一個神經元學到的方程可以為x1+x2=1/2對四個數據的輸出分別是:
(0,0)輸出為-1,輸入神經元激活函數之前的值是小于0(為-1/2)的
(1,0)輸出我+1 輸入神經元激活函數之前的值是大于0(為1/2)的
(0,1)輸出為+1 輸入神經元激活函數之前的值是大于0(1/2)的
(1,1)輸出為+1 輸入神經元激活函數之前的值是大于0(3/2)的
這與我們的預期不一樣,我們希望(0,0)與(1,1)輸出的結果應該一樣,屬于同一類。
根據上圖知道第二個神經元學到的模型x1+x2=7/4對四個數據的輸出分別是:
(0,0)輸出為-1,輸入神經元激活函數之前的值是小于0(-7/4)的
(1,0)輸出我-1 輸入神經元激活函數之前的值是小于0(-3/4)的
(0,1)輸出為-1 輸入神經元激活函數之前的值是小于0(-3/4)的
(1,1)輸出為+1 輸入神經元激活函數之前的值是大于0(1/2)的
注:以上方程只是為了講解,并不一定是對的!
第三個神經元通過對前面倆個神經元的線性組合,只需要我們通過學習w1,w2來控制(0,0)與(1,1)的輸出同為負數,(1,0)與(0,1)的輸出同為正,那么就完成了我們的任務,也滿足了我上圖的結論,正確分類了.也就是說,
我們希望得到下面的結論:
代入(-1,-1)的時候,模型輸出為-1
代入(+1,-1)的時候,模型輸出為+1
代入(+1,+1)的時候,模型輸出為-1
也就是說滿足:-w1-w2+b<0
? ? ? ? ? ? ? ? ? ? ? w1-w2+b>0
? ? ? ? ? ? ? ? ? ? ? w1+w2+b<0
很容易通過學習w1,w2,b得到這樣的模型,比如5x1-2x2-4=0(x1為第一個神經元的輸出,x2為第二個神經元的輸出,注意通過階梯函數,輸出只能是+1,-1了),滿足了我們的分類要求!!已經成功的解決了異或問題。
可能有同學會問,你這僅僅只解決了異或問題呀?那加入其它限制條件呢?比如說下圖:
如果是上圖的非線性分類問題,不僅僅是簡單的異或問題,神經網絡能夠解決嗎?答案是肯定的,我們可以在隱藏層加一個神經元,在一開始倆個神經元的作用下,再加入一個神經元,它起到的線性效果是下圖(這里為了簡單方便,我就畫一下投影圖):
在沒有加入第三個神經元的時候,投影圖如下(倆個紅線之內的是輸出為+1的樣本,之外的為輸出為-1的樣本):
但是這個圖只能解決異或問題,并不能將最上面三角形正確分類,我們新加入的神經元起到的效果只要滿足下面這個條件即可:
我們就很容易得到結論,我們又可以正確將要求的樣本正確分類了(每個區域應該屬于哪個輸出-1還是+1,為了直觀我在圖上畫出來了~)!那么無論你是什么樣的數據樣本,我都可以理論上加入無數個隱藏層神經元來逼近任意連續函數進行我們的任務(有一個結論是無數個直線能夠逼近任意連續曲線,道理是一樣的)。
下面給出四個隱藏神經元的輸出層可視化效果,這次的激活函數也不會階梯函數了,可能是sigmoid或者tanh等其它非線性激活函數,但這些都不影響表達的本質。
到這里,我已經講完了我要說的內容了,只是根據自己的理解通過非常簡單的例子想給大家一個直觀上的認識和理解,希望能對大家理解有幫助,歡迎大家指錯交流~
部分圖片來自于:Hugo Larochelle課程的slides
總結
以上是生活随笔為你收集整理的浅析神经网络为什么能够无限逼近任意连续函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么梯度反方向是函数下降最快的方向
- 下一篇: eclipse搭建多module项目的坑