在開始之前咐容,我們先來看一下維基百科給出的萬能近似定理(Universal approximation theorem)描述:
In the?mathematical?theory of?artificial neural networks, the?universal approximation theorem?states that a?feed-forward?network with a single hidden layer containing a finite number of?neurons?can approximate?continuous functions?on?compact subsets?of?R, under mild assumptions on the activation function.?
Universal approximation theorem(Hornik et al., 1989;Cybenko, 1989)定理表明:前饋神經(jīng)網(wǎng)絡,只需具備單層隱含層和有限個神經(jīng)單元荆秦,就能以任意精度擬合任意復雜度的函數(shù)。這是個已經(jīng)被證明的定理力图。下面我們用一種輕松的方式解釋步绸,為什么神經(jīng)網(wǎng)絡(理論上)可以擬合任何函數(shù)?
1. 線性回歸(Linear Regression): 一道小學題
看過《神偷奶爸》這部電影的同學都知道吃媒,小黃人(Minions)非常喜歡吃香蕉瓤介。不過,現(xiàn)在它只有12個蘋果赘那,但它對蘋果不感興趣刑桑,想著如果誰能用香蕉換它的蘋果就好了。不經(jīng)意間募舟,它發(fā)現(xiàn)了一個神奇的小屋祠斧。
小黃人向神奇小屋的窗戶里放進一個蘋果,神奇小屋什么也不會給它拱礁。小黃人又嘗試向小屋的窗戶里放進5個蘋果琢锋,神奇小屋突然吐出16個香蕉!這下小黃人可高興壞了呢灶。然后吴超,小黃人又嘗試扔給神奇小屋6個蘋果,神奇小屋又吐出來20個香蕉鸯乃。
現(xiàn)在鲸阻,小黃人的12個蘋果用完了,它抱著換來的香蕉想:如果我給它3個蘋果,小屋會吐出來多少香蕉呢赘娄?
這是一道小學題(找規(guī)律)仆潮,如何解答?
你可能脫口而出遣臼,8個香蕉P灾谩!OK揍堰,好吧鹏浅,說明你的智商可以學習AI這么高深的學科了~
如何使用機器學習的步驟解答這道小學生做的題目呢(你可能覺得這是殺雞用了宰牛刀)。
我們使用變量 x?表示扔給神奇小屋的蘋果數(shù)量(輸入input),使用變量 ??表示神奇小屋吐出來的香蕉數(shù)量(輸出Output)躁染,那么我們就得到了一個數(shù)據(jù)集(Data set):
我們的目標是吓懈,構建一個數(shù)學模型(Model),使得該模型滿足數(shù)據(jù)集的隱含規(guī)律季希。即,向模型輸入?x?的值幽纷,模型會輸出對應的???值式塌。
小學生應該學過一元函數(shù)(y = wx + b)。既然是小學題目友浸,那么使用比較簡單的函數(shù)應該就能模擬數(shù)據(jù)集的規(guī)律峰尝。所以我們定義了一個一元一次函數(shù)模型:
那么問題來了,我們怎樣才能確定函數(shù)的兩個參數(shù)w收恢,b武学?
聰明的你可能又會脫口而出,是y = 4x + (-4) B滓狻火窒!OK,你再次證明了你的智商已經(jīng)超過小學生或者初中生默赂。
但是小黃人沒有你那么聰明沛鸵,它只能猜。如果w=1缆八, b=0曲掰,結果會是怎樣?
很明顯奈辰,模型的輸出(預測)值 y?與實際數(shù)據(jù)集中的真實值 ??相差很大栏妖。小黃人不滿意,又隨機猜了一次奖恰。w=2吊趾,b=2宛裕,結果又是怎樣呢?
嗯论泛,這次模型的輸出值 y 與數(shù)據(jù)集中的真實值 ? 相差似乎不那么大了揩尸。小黃人就想,這兩個候選模型屁奏,哪一個更好呢(更能模擬數(shù)據(jù)集中的規(guī)律)岩榆?如何將”更好“量化?
于是坟瓢,我們引出損失函數(shù)(lost function)的概念勇边。
將預測值 y 與真實值 ? 之間的差值平方和,作為“更好”的一種量化折联。損失函數(shù)越小粒褒,即,預測值與真實值之間的差值越小诚镰,說明參數(shù)w奕坟,b越能模擬數(shù)據(jù)集中的規(guī)律。
擴展:
最小二乘法(least square method):如果你對機器學習有所了解清笨,應該聽過這個概念执赡。在線性回歸中,最小二乘法就是試圖找到一條直線函筋,使所有樣本(數(shù)據(jù)集)到直線上的歐式距離之和最小。突然冒出兩個概念奠伪,可能讓你感覺有點不適跌帐。沒關系,我們先來看一下圖1.3绊率,讓你有個直觀感受谨敛。
你可以這樣理解。歐式距離就是每個點到函數(shù)直線上的最短距離滤否。中文翻譯的“最小二乘法”不容易理解脸狸。它的英文名稱是“least square method“。least的意思是“最小藐俺、最少”炊甲,這個容易理解;“square”的意思是“平方”欲芹,也就對應上面損失函數(shù)中的預測值與真實值的差值平方卿啡。其實“二乘”就是“平方”的意思。
所以菱父,最小二乘法就是設法找到模型參數(shù)w颈娜、b剑逃,使得上面定義的損失函數(shù)值最小。最小二乘法是一種數(shù)學優(yōu)化技術官辽,對應下文講到的優(yōu)化器蛹磺。
有了損失函數(shù),我們來看一看同仆,上面兩個候選模型的損失函數(shù)值各是多少萤捆。
模型 y = 2x + 2 的損失函數(shù)值L(2,2) = 68,小于L(1,0) = 318乓梨,所以候選模型y = 2x + 2勝出鳖轰。
小黃人是一個追求極致的人。損失函數(shù)值68雖然小于318扶镀,但是它還是很大呀蕴侣,有沒有其他參數(shù)w,b使得損失函數(shù)L(w,b)的值比68還小。
所以臭觉,我們又引出了優(yōu)化器(Optimizer)的概念昆雀。
想辦法找出使得損失函數(shù)值L(w,b)最小的參數(shù)w,b蝠筑。由于小黃人沒有學過梯度下降法(一種凸函數(shù)優(yōu)化算法狞膘,不懂也沒關系,現(xiàn)在用不到)什乙,所以它只能使用....”隨機嘗試法“挽封。
小黃人從參數(shù)w=2,b=2臣镣,開始辅愿,以步長為1進行隨機嘗試。即忆某,在“加一減一”的范圍內点待,嘗試坐標點(2,2)周圍的四個點 : (3,2)、(2,3)弃舒、(1,2)癞埠、(1,1)。結果發(fā)現(xiàn)聋呢,在點(3,2)處苗踪,損失函數(shù)值小于其他三個點和原先點處的損失值。
所以削锰,小黃人發(fā)現(xiàn)了一個更好的候選模型 y = 3x + 2徒探,其損失函數(shù)值為26,比68小的多喂窟。小黃人测暗,很興奮央串,用同樣的方式又開始了嘗試。以此類推碗啄,它接著發(fā)現(xiàn)了L(3,1) =17质和、L(3,0) =14 兩個坐標點。然而稚字,在點(3,0)周圍的嘗試饲宿,都沒有發(fā)現(xiàn)比14更小的損失函數(shù)值。
這樣就結束了嗎瘫想?
高智商的你,一定能想到国夜,在點(4,-4)處,損失函數(shù)值最卸坛瘛:L(4,-4) =0车吹。但是,用上述嘗試方法并不能找到坐標點(4, -4)醋闭。
問題出在了哪兒窄驹?是初始點選擇的問題。
小黃人發(fā)現(xiàn)证逻,如果從坐標點(-2乐埠,-4)開始上述方式的嘗試,最終會找到使得損失函數(shù)最小的(4,-4)點囚企。如果深入研究饮戳,將涉及到最優(yōu)搜索問題,超出本片文章的范圍洞拨。
我們當前只需知道,能夠通過最優(yōu)方法(如负拟,最小二乘法)烦衣,找到使得損失函數(shù)最小的模型參數(shù)w,b掩浙。
上面這個故事就是線性回歸花吟??
我們需要給出一個稍微嚴謹點的定義厨姚,來說明什么是線性回歸衅澈。下面是《機器學習》(周志華著)中給出的一句話:
“線性回歸”(linear regression)試圖學得一個線性模型以盡可能準確地預測實值輸出標記。
將這句話對應到我們的模型中谬墙。模型函數(shù) y = 4x - 4 就是句中學得的“線性模型”今布。然后经备,在我們的故事中,不是盡可能準確地預測真實值輸出標記部默,而是百分百預測了真實值輸出標記....損失函數(shù)值能夠達到最小0侵蒙。
其實,沒那么簡單......我們稍微擴展一下傅蹂。
有一天纷闺,小黃人發(fā)現(xiàn),如果給神奇小屋1個蘋果份蝴、2個香蕉犁功、3個梨,神奇小屋就會吐給它一只貓咪~ 喵喵喵~婚夫。真的太神奇了浸卦。。请敦。镐躲。
這時,模型函數(shù)不再是簡單的一元函數(shù)侍筛,而是三元函數(shù)萤皂,有三個輸入變量 (x1, x2, x3),和4個參數(shù) (w1, w2, w3, b) 需要優(yōu)化匣椰。我們將這種情況稱之為“多元線性回歸(multivariate linear regression)”裆熙。其實這是圖像識別的原型模型,我們不再深入探討禽笑。
2. 邏輯回歸(Logistic Regression): 一個壓縮函數(shù)
當小黃人發(fā)現(xiàn)了神奇小屋交換香蕉的規(guī)律后入录,非常非常高興。它又找來了好多蘋果佳镜,準備和神奇小屋交換香蕉僚稿。可是....生活就是這樣蟀伸。在你最得意的時候蚀同,往往會給你澆一盆涼水。
(注啊掏,這里將之前的數(shù)據(jù)集調整了一下蠢络,由x=1,5迟蜜,6改為x=1,2,3刹孔。方便畫圖啦)
小黃人又嘗試給神奇小屋4個和5個蘋果,結果分別得到9個和10個香蕉娜睛。似乎哪里有點不對髓霞?卦睹?!如果按照之前發(fā)現(xiàn)的規(guī)律酸茴,應該分別得到12和20個香蕉呀分预。小黃人,百思不得其解薪捍。
這時笼痹,神奇小屋吐出來一張紙條,上面寫著:如果你扔進來的蘋果太多酪穿,我給你的香蕉將會減少凳干。小黃人,有點郁悶被济。
如果按照之前一元函數(shù)的方式建模救赐,將會得到如下函數(shù)模型。
你可能比小黃人聰明多了只磷,一眼就看出來上面的模型函數(shù)好像不太合適经磅。損失函數(shù)永遠取不到最小值0。
如果模型函數(shù)是這樣就好了钮追,那么對應的損失函數(shù)值將會取到最小值0预厌。可是元媚,這好像是兩個模型函數(shù)轧叽。一山不容二虎,能不能將這兩個函數(shù)合成一個函數(shù)刊棕。
這時炭晒,你又脫口而出,分段函數(shù)I恰网严!事實證明,你的智商已經(jīng)達到高中生水平嗤无。
當 x < 3 時震束,s1 等于1,s2 等于0翁巍,函數(shù) y = 4x - 4;
當 x >= 3 時休雌,s1 等于0灶壶,s2 等于1,函數(shù) y=1x + 5杈曲;
這才是完美的組合函數(shù)驰凛。
那么胸懈,問題又來了。s1和s2是什么恰响?怎么確定趣钱?
如果把s2看成函數(shù),那么理想情況下胚宦,應該是這樣的階躍函數(shù)首有。
然而階躍函數(shù)具有不連續(xù)、不光滑等不太好的性質枢劝。
這時井联,小黃人悠悠地說,我好像見過一個跟這個函數(shù)有點像的連續(xù)函數(shù)您旁,叫Sigmoid函數(shù)烙常。
看到這個Sigmoid函數(shù)后,你很生氣鹤盒。對著小黃人說:人笨就少說話蚕脏,這個函數(shù)和階躍函數(shù),哪里相像了侦锯,差的也太遠吧M毡蕖!怎么看怎么不像率触。
小黃人:你給變量t一個參數(shù)不就行了终议,改成σ(1000t)。(摳鼻)
如果不仔細看葱蝗,幾乎看不出在縱軸0到1之間穴张,有個非常陡峭的曲線。你頓時無語两曼,對小黃人刮目相看皂甘。
????????當 x = 0.1 時,s = σ(100) ≈ 1悼凑;
????????當 x = - 0.1 時偿枕,s = σ(100) ≈ 0;
稍微對這個Sigmoid函數(shù)做些調整户辫,就能得到我們需要的各種階躍函數(shù)渐夸。
這樣的話,我們就得到了新的模型函數(shù)渔欢,y = (4x - 4)σ(-1000x + 3000)+ (1x + 5)σ(1000x - 3000)墓塌;
如,當 x = 4 時, y = (12) σ(-1000) + (9)σ(1000) = 12*0 + 9*1 = 9苫幢,與數(shù)據(jù)集相符访诱。
在這個過程中,小黃人還是有功勞的韩肝,提出了激活函數(shù)的概念触菜。
下面我們看一下稍微嚴謹點的邏輯回歸定義。
邏輯回歸?(logistic regression )哀峻,是一種廣義線性回歸(generalized linear regression model)涡相。
這一句話就夠了。在第一節(jié)中我們已經(jīng)學習線性回歸模型 y = wx + b谜诫。觀察圖漾峡,能夠發(fā)現(xiàn),邏輯回歸其實就是在線性回歸的結果上在再使用一次激活函數(shù) y =?σ(wx + b)喻旷。線性回歸模型 (y = wx + b) 的預測值y可以是一個任意實數(shù){-∞, ∞}生逸,而邏輯回歸模型 (y =?σ(wx + b)) 的預測值y只能是{0, 1}之間的實數(shù)且预。如果能夠搞明白線性回歸與邏輯回歸的聯(lián)系槽袄,說明你已經(jīng)掌握兩者的本質含義。
3. 多層感知機(Multilayer perceptron):?
小黃人想锋谐,雖然給的香蕉數(shù)量少了些遍尺,最起碼小屋吐出來的香蕉比扔進去的蘋果多嘛。于是涮拗,小黃人又嘗試向神奇小屋里扔進去了7個和9個蘋果乾戏。
結果,神奇小屋兩次都只返還出來10個香蕉三热。這下小黃人傻眼了鼓择。
雖然小黃人在其他事情上比較笨,但是只要與香蕉相關就漾,它可精明的多呐能。剛剛5個蘋果就能換10個香蕉,現(xiàn)在9個蘋果才能換10個香蕉R直ぁ摆出!明顯自己吃虧了。但是首妖,它又非常不喜歡吃蘋果偎漫,只能強忍怨氣,攢著一股勁有缆,一定要把里面的規(guī)律找出來象踊。
經(jīng)過之前的套路舌仍,機智的你,一定能想到解決辦法通危。
對,就是這樣灌曙。將數(shù)據(jù)集分成三塊菊碟,分別構建線性模型函數(shù),然后利用激活函數(shù)在刺,組合起來逆害。
問題再次出現(xiàn)。
當 x < 3 時蚣驼,s1 = σ(-1000x + 3000) = 1魄幕,其他情況為0;
當 x >= 5 時颖杏,s3 = σ(1000x - 5000) = 1纯陨,其他情況為0;
當 3 <= x < 5 時留储,s2 = 翼抠??
不知道聰明的你有沒有注意到获讳,函數(shù) s1 和 s3 都是以 x 作為未知變量阴颖。如果我們轉換一下思路,將 s2 看成是 s1 和 s3的二元函數(shù)丐膝。即量愧,s2是否等于1或0,由 s1 和 s2 的值決定帅矗。
s2 = σ(-1000s1 - 1000s2 + 500)
雖然得到的香蕉數(shù)目不再增加偎肃,但是這么復雜的問題都能解決掉(使用線性回歸和邏輯回歸相結合,對數(shù)據(jù)集建模)损晤,小黃人還是有點小高興软棺。反正它手里還有些蘋果,于是它又嘗試向神奇小屋里丟進去了10尤勋、11喘落、12個蘋果。結果...小黃人崩潰了W畋瘦棋!
神奇小屋傳出來紙條說:做人不能貪得無厭,要見好就收暖哨,知足常樂赌朋。小黃人崩潰了。現(xiàn)在只留下一個未被解決的難題----怎么對數(shù)據(jù)集進行建模。
即使你很聰明沛慢,似乎也只能解決其中的兩步赡若。
? ? 取 s1 = σ(-1000x + 3000),即团甲,當 x < 3 時逾冬,s1 = 0;
? ? 取 s4 = σ(1000x - 9000)躺苦,即身腻,當 x >= 9 時,s4 = 0匹厘;
那么 s1 和 s2 該如何確定嘀趟?
根據(jù)之前的經(jīng)驗,你大致可以確定s1和s2應該由s1和s4的值確定愈诚。
后續(xù)......
假設現(xiàn)在我們有許多數(shù)據(jù)集她按,
梳理一下流程
重點來了
免噴聲明:本文借鑒(chao xi)牛津大學xDeepMind?自然語言處理公開課