人工智能是一個(gè)非常廣泛和深刻的領(lǐng)域,它涉及到很多不同的學(xué)科隧期,比如數(shù)學(xué)飒责、物理、心理仆潮、生物等等宏蛉。人工智能的目標(biāo)是讓機(jī)器能夠模仿或者超越人類的智能,實(shí)現(xiàn)各種復(fù)雜的任務(wù)性置。但是拾并,什么是智能呢?我們又如何讓機(jī)器具有智能呢鹏浅?
在這篇文章中嗅义,我們將從一個(gè)簡(jiǎn)單而又基礎(chǔ)的問題開始探索:如何用數(shù)學(xué)函數(shù)來(lái)描述直覺。直覺是我們認(rèn)知世界的一種方式隐砸,它不需要太多的邏輯推理之碗,而是依靠經(jīng)驗(yàn)和感覺。直覺有時(shí)候很準(zhǔn)確季希,有時(shí)候也會(huì)出錯(cuò)褪那。那么幽纷,我們能不能用一個(gè)簡(jiǎn)單的數(shù)學(xué)模型來(lái)模擬直覺呢?答案是肯定的博敬,而且這個(gè)模型就是人工智能中最早也最基本的神經(jīng)元模型:一元一次函數(shù)感知器友浸。
什么是一元一次函數(shù)感知器?
為了理解一元一次函數(shù)感知器偏窝,我們先來(lái)看一個(gè)生物學(xué)的例子收恢。假設(shè)在很深很深很深的海底,住著一個(gè)簡(jiǎn)單的生物小蘭囚枪,她的世界很簡(jiǎn)單派诬,就是去尋找周圍能夠吃到的一種叫做豆豆的植物劳淆,并靠此生存链沼。但是這些豆豆在漫長(zhǎng)的演化歷史中,為了保護(hù)自己逐漸進(jìn)化出了毒性沛鸵。毒性的強(qiáng)弱和豆豆的大小有關(guān)系,越大的豆豆越有毒。而小蘭也進(jìn)化出了一個(gè)能夠檢測(cè)豆豆大小的器官恨溜,那么問題來(lái)了胎许,小蘭如何根據(jù)豆豆的大小判斷它到底有多毒呢?
顯然栏妖,小蘭需要一個(gè)思考的器官乱豆,也就是我們常說(shuō)的腦子。但是我們又如何去描述思考或者認(rèn)知呢吊趾?認(rèn)知以前當(dāng)然就是一無(wú)所知宛裕,這種情況下,認(rèn)知事物唯一的方法就是依靠直覺论泛。那么我們又該如何去描述直覺呢揩尸?很明顯是函數(shù)。為什么是函數(shù)屁奏?仔細(xì)想想岩榆,我們本來(lái)一直就在用函數(shù)認(rèn)識(shí)這個(gè)世界。在物理中坟瓢,一個(gè)質(zhì)量為 的物體在不同的受力
下產(chǎn)生加速度
勇边,這是一個(gè)以
為自變量
為參數(shù)
為因變量的函數(shù)。在經(jīng)濟(jì)學(xué)中折联,我們把消費(fèi)粒褒、投資、政府購(gòu)買和進(jìn)出口作為自變量崭庸,也可以形成一個(gè)關(guān)于 GDP 的認(rèn)知函數(shù)怀浆。實(shí)際上谊囚,除了這些嚴(yán)格的領(lǐng)域,在很多不那么嚴(yán)格的事情上执赡,如果你愿意镰踏。
其實(shí)也可以用函數(shù)去描述認(rèn)知,比如氣溫對(duì)人心情的影響沙合,可能是這樣的一個(gè)函數(shù):
def mood(temperature):
if temperature < 0:
return "cold and unhappy"
elif temperature < 10:
return "cool and calm"
elif temperature < 20:
return "warm and comfortable"
elif temperature < 30:
return "hot and excited"
else:
return "sweaty and annoyed"
一只小狗的眼睛大小和它可愛程度的關(guān)系奠伪,可能是這樣的一個(gè)函數(shù):
def cuteness(eye_size):
return eye_size ** 2
而后者這種不嚴(yán)格,人類更加擅長(zhǎng)的問題首懈,也就是我們?nèi)斯ぶ悄芤鉀Q的問題绊率,找到一個(gè)恰當(dāng)?shù)暮瘮?shù)去描述它如此這般,把智能體對(duì)世界認(rèn)知的過(guò)程看作是在腦中不斷形成各種函數(shù)究履。似乎也就好有道理了滤否,既然是直覺,那么就不需要太多的理由最仑,豆豆的毒性和它的大小有關(guān)系藐俺,所以這里的直覺自然是一個(gè)一元一次函數(shù)。豆豆的大小 是自變量泥彤,毒性
是因變量欲芹,而
是一個(gè)確定的參數(shù),也就是我們常說(shuō)的直線的斜率吟吝。
一個(gè)簡(jiǎn)單的一元一次函數(shù)就可以描述一個(gè)直覺菱父,建立一種思考的模型。當(dāng)我們?nèi)ヮ惐壬锷窠?jīng)元的時(shí)候剑逃,你就會(huì)發(fā)現(xiàn)用一個(gè)一元一次函數(shù)去描述認(rèn)知浙宜,可不是亂用的,完全是有備而來(lái)炕贵。這實(shí)際上就是早在1943年梆奈,由神經(jīng)學(xué)家麥克洛克和數(shù)學(xué)家皮茨在他們合作的論文中提出的一種神經(jīng)元模型:麥克洛克-皮茨模型。這個(gè)模型是對(duì)生物神經(jīng)元一種相當(dāng)簡(jiǎn)化的模仿称开,這些是樹突亩钟,這些是軸突,輸入信號(hào)通過(guò)樹突進(jìn)入神經(jīng)元鳖轰,再通過(guò)軸突輸出結(jié)果清酥。它們分別對(duì)應(yīng)著函數(shù)中的自變量和因變量輸出。一般來(lái)說(shuō)蕴侣,有很多個(gè)輸入端焰轻,如果只有一個(gè)輸入,也就是一元函數(shù)昆雀。如果是兩個(gè)辱志,那就是二元函數(shù)蝠筑,比如豆豆的毒性不僅和它的大小有關(guān),也和顏色有關(guān)揩懒。三個(gè)輸入就是三元函數(shù)等等等什乙。而至于參數(shù) ,它實(shí)際上起著控制樹突上輸入信號(hào)的作用已球。換句話說(shuō)臣镣,控制著不同輸入對(duì)輸出的影響,我們也稱之為權(quán)重智亮。因?yàn)槲覀冊(cè)谂袛嘁粋€(gè)東西的時(shí)候忆某,不同因素對(duì)結(jié)果的重要性都不太一樣。也正因?yàn)槿绱死龋覀儠?huì)發(fā)現(xiàn)弃舒,麥克洛克-皮茨模型選擇用一次函數(shù)而不是其他函數(shù)來(lái)模仿神經(jīng)元是一件很自然的事情。樹突輸入
對(duì)權(quán)重參數(shù)
擴(kuò)大或縮小馍忽,然后輸出簡(jiǎn)單且有效棒坏。當(dāng)然,完整的麥克洛克-皮茨模型中還有一個(gè)偏置項(xiàng)
遭笋,而在一次函數(shù)后還會(huì)加上一個(gè)激活函數(shù)
,用來(lái)激活神經(jīng)元的輸出徒探。我們會(huì)在后面討論這些東西瓦呼,簡(jiǎn)單起見,暫且不表测暗。
還是回到這個(gè)樹突只有一個(gè)輸入端的神經(jīng)元上面來(lái)央串。為了理解方便,我們用簡(jiǎn)化的圖形來(lái)表示:
那么小蘭靠這個(gè)神經(jīng)元可以存活下去嗎碗啄?
看得出來(lái)质和,隨著 取不同的值,這個(gè)直覺函數(shù)往往會(huì)產(chǎn)生很多的錯(cuò)誤稚字。當(dāng)然饲宿,也不排除小蘭的直覺很準(zhǔn),就像這樣:
那么我們現(xiàn)在面臨的問題就是這個(gè)一元一次直覺函數(shù)中的參數(shù) 設(shè)置為多少胆描,小蘭才能很好地進(jìn)行預(yù)測(cè)呢瘫想?也就是說(shuō),如何從偏離現(xiàn)實(shí)的直覺過(guò)渡到符合現(xiàn)實(shí)的認(rèn)知呢昌讲?
比如小蘭大腦中神經(jīng)元的權(quán)重值 開始是 0.1国夜。看見一個(gè)大小為 0.59 的豆豆短绸,經(jīng)過(guò)神經(jīng)元的計(jì)算车吹,認(rèn)為毒性是 0.059筹裕,于是一口吃進(jìn)去。糟糕窄驹,其實(shí)它的毒性是 0.68饶碘,具有極高的毒性。很明顯馒吴,小蘭現(xiàn)在的神經(jīng)元很草率扎运。
作為早已具有智能的人類,我們知道把 調(diào)大一點(diǎn)饮戳,再大一點(diǎn)豪治,這樣就好了。但是機(jī)器又怎么知道呢扯罐?最開始负拟,麥克洛克-皮茨神經(jīng)元模型中的權(quán)重值確實(shí)需要手工調(diào)整,并沒有自動(dòng)的學(xué)習(xí)方法歹河,這未免有點(diǎn)太不智能了掩浙。
于是,在1958年秸歧,一名叫做羅森布拉特的心理學(xué)家在麥克洛克-皮茨模型上推出了羅森布拉特感知器模型厨姚。他讓神經(jīng)元有了自己調(diào)整參數(shù)的能力。羅森布拉特感知器是第一個(gè)從算法上完整描述的神經(jīng)元键菱,在此之后受到他的啟發(fā)谬墙。工程界、物理學(xué)界经备、數(shù)學(xué)界就開始紛紛投入神經(jīng)網(wǎng)絡(luò)的研究拭抬。人工智能也開始了蓬勃的發(fā)展。
我們來(lái)看一下羅森布拉特感知器是怎么做到讓神經(jīng)元能夠改變權(quán)重值 的侵蒙。其實(shí)很簡(jiǎn)單造虎,也很直觀。輸入通過(guò)麥克洛克-皮茨神經(jīng)元模型之后纷闺,輸出一個(gè)結(jié)果
算凿,用標(biāo)準(zhǔn)答案
減去這個(gè)結(jié)果
,得到誤差
急但。這意味著預(yù)測(cè)和標(biāo)準(zhǔn)之間的差距澎媒。然后自然是根據(jù)這個(gè)誤差去調(diào)整參數(shù)
,比如我們讓
直接加上這個(gè)誤差
波桩,再讓結(jié)果作為新的
戒努。你看這樣就做到了預(yù)測(cè)過(guò)小的時(shí)候誤差為正數(shù)
加上誤差之后向大調(diào)整,下次預(yù)測(cè)的時(shí)候結(jié)果就提升了。反過(guò)來(lái)储玫,當(dāng)預(yù)測(cè)過(guò)大誤差是負(fù)數(shù)的時(shí)候侍筛,
向小調(diào)整。
這就是羅森布拉特感知器的學(xué)習(xí)過(guò)程撒穷,通過(guò)誤差修正參數(shù)匣椰。當(dāng)然,在羅森布拉特感知器模型中端礼,誤差還有乘以輸入 禽笑,這是為何呢?我們知道豆豆的大小只能是一個(gè)正值蛤奥,小于零的豆豆可謂讓人匪夷所思佳镜。但是以后我們一定會(huì)遇到輸入值是負(fù)數(shù)的情況。當(dāng)輸入數(shù)據(jù)是負(fù)數(shù)的時(shí)候凡桥,你會(huì)發(fā)現(xiàn)事情正好相反蟀伸,預(yù)測(cè)過(guò)大的時(shí)候需要增加
,而不是減少缅刽。而預(yù)測(cè)過(guò)小的時(shí)候需要減小
啊掏,而不是增加。所以我們讓輸入
乘以誤差
衰猛,就被巧妙地解決了迟蜜。當(dāng)
為正數(shù)的時(shí)候,預(yù)測(cè)過(guò)大誤差為負(fù)數(shù)乘以
之后腕侄,還是負(fù)數(shù)
減小小泉。預(yù)測(cè)過(guò)小誤差為正數(shù)乘以
之后還是正數(shù)
增大。
而當(dāng) 為負(fù)數(shù)的時(shí)候冕杠,預(yù)測(cè)過(guò)大誤差為負(fù)數(shù)乘以
之后變成正數(shù)
增大。預(yù)測(cè)過(guò)小誤差為正數(shù)乘以
之后變?yōu)樨?fù)數(shù)
減小酸茴。
當(dāng)然分预,誤差除了乘以輸入 之外,羅森布拉特感知器模型還讓誤差乘以了一個(gè)系數(shù)
薪捍,比如 0.05笼痹,這意味著我們每次修正的時(shí)候幅度都降低了 20 倍。這個(gè)
也就是所謂的學(xué)習(xí)率酪穿,這又是為何呢凳干?根據(jù)奧卡姆的剃刀原理,我們不妨先拿掉這個(gè)學(xué)習(xí)率參數(shù)被济,看看會(huì)怎么樣救赐?這時(shí)候,參數(shù)調(diào)整的過(guò)程是這樣子的:
不對(duì)勁只磷,我們讓 等于 0.5 是這樣的:
還是不對(duì)勁经磅,我們讓 等于 0.1 是這樣的:
事實(shí)上泌绣,當(dāng) 等于 0.0935 的時(shí)候,好像卡住了:
當(dāng)我們繼續(xù)把 向小調(diào)整预厌,我們終于發(fā)現(xiàn)參數(shù)調(diào)整的過(guò)程震蕩越來(lái)越邪⒙酢:
沒錯(cuò),讓誤差乘以學(xué)習(xí)率是為了防止調(diào)整幅度過(guò)大轧叽,錯(cuò)過(guò)最佳點(diǎn)苗沧,就好像一個(gè)人,如果他每走一步都是固定的一米炭晒。而他一開始在距離原點(diǎn) 0.5 米的位置待逞,那么不論他怎樣都到達(dá)不了原點(diǎn)。當(dāng)然腰埂,學(xué)習(xí)率也不是越小越好飒焦,太小的學(xué)習(xí)率會(huì)讓這個(gè)調(diào)整的過(guò)程磨磨唧唧,讓人心酸吶屿笼。
這就是羅森布拉特感知器的全部工作原理了牺荠,當(dāng)然機(jī)器學(xué)習(xí)的本質(zhì)是數(shù)學(xué),一切設(shè)計(jì)必須有數(shù)學(xué)的支撐驴一。比如休雌,這里通過(guò)誤差修正參數(shù),誤差還乘以了輸入和學(xué)習(xí)率肝断,這個(gè)看起來(lái)就很玄乎的公式杈曲。雖然直觀上很符合我們的感受。但誰(shuí)又能保證客觀上通過(guò)這種方式就一定能夠調(diào)整出一個(gè)合適的參數(shù)呢胸懈?而不是越來(lái)越遠(yuǎn)離正確值呢担扑?也就是說(shuō),如何從數(shù)學(xué)上證明這個(gè)模型中的 調(diào)整方法最后就一定收斂呢趣钱?
羅森布拉特感知器之所以擁有如此重要的歷史地位涌献,就像我們說(shuō)的那樣,它第一次完整地從算法上描述了一個(gè)神經(jīng)元首有。這種描述當(dāng)然也包括數(shù)學(xué)證明燕垃,但這個(gè)感知器收斂定理的證明過(guò)程有點(diǎn)冗長(zhǎng)且繁瑣,我們就不逐個(gè)解釋了井联,有興趣的同學(xué)可以自行推導(dǎo)卜壕。當(dāng)然,證明的事情只是一顆定心丸而已烙常,讓我們相信它在數(shù)學(xué)上是合理的轴捎,如果同學(xué)們?nèi)プC明有困難,也不會(huì)影響后續(xù)內(nèi)容的理解,你只要相信這個(gè)感知器模型在數(shù)學(xué)上確實(shí)可以被證明 最后一定收斂于某個(gè)值轮蜕。
在現(xiàn)代機(jī)器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)應(yīng)用中昨悼,古老的羅森布拉特感知器的學(xué)習(xí)方法已經(jīng)很少采用。接下來(lái)跃洛,我們將看到一種目前比較常用的學(xué)習(xí)方式:梯度下降和反向傳播率触。這種方法可以讓我們處理更復(fù)雜的函數(shù)和更多層的神經(jīng)網(wǎng)絡(luò),從而實(shí)現(xiàn)更強(qiáng)大的人工智能汇竭。
什么是梯度下降和反向傳播葱蝗?
梯度下降和反向傳播是兩個(gè)密切相關(guān)的概念,它們都是基于一個(gè)共同的目標(biāo):最小化誤差细燎。誤差是指我們的預(yù)測(cè)和標(biāo)準(zhǔn)答案之間的差距两曼,也就是 。我們希望通過(guò)調(diào)整參數(shù)
和
玻驻,讓誤差盡可能地小悼凑。但是,誤差并不是一個(gè)簡(jiǎn)單的數(shù)值璧瞬,而是一個(gè)復(fù)雜的函數(shù)户辫,它取決于輸入
、輸出
嗤锉、權(quán)重
和偏置
渔欢。我們可以把誤差函數(shù)寫成這樣:
這里我們用了一個(gè)常見的誤差函數(shù):平方誤差函數(shù)。它表示預(yù)測(cè)和標(biāo)準(zhǔn)之間的距離的平方瘟忱。為什么要用平方呢奥额?主要有兩個(gè)原因:一是為了消除正負(fù)號(hào)的影響,讓誤差總是正值访诱;二是為了放大較大的誤差垫挨,讓它們對(duì)參數(shù)調(diào)整有更大的影響。當(dāng)然触菜,平方誤差函數(shù)并不是唯一的選擇棒拂,還有其他的誤差函數(shù),比如交叉熵誤差函數(shù)等等玫氢。我們?cè)诤竺鏁?huì)介紹更多。
現(xiàn)在我們有了一個(gè)誤差函數(shù) 谜诫,我們?nèi)绾握业剿淖钚≈的匮浚窟@就需要用到梯度下降法。梯度下降法是一種迭代優(yōu)化算法喻旷,它可以用來(lái)求解各種復(fù)雜函數(shù)的最小值或者最大值生逸。梯度下降法的基本思想是:從一個(gè)隨機(jī)的初始點(diǎn)開始,沿著函數(shù)下降最快的方向移動(dòng)一小步,然后再?gòu)男碌奈恢弥貜?fù)這個(gè)過(guò)程槽袄,直到找到一個(gè)局部最小值或者全局最小值烙无。
那么如何確定函數(shù)下降最快的方向呢?這就需要用到梯度的概念遍尺。梯度是一個(gè)向量截酷,它表示函數(shù)在某一點(diǎn)上變化最快的方向和速率。梯度可以通過(guò)求導(dǎo)數(shù)來(lái)計(jì)算乾戏。對(duì)于一個(gè)多元函數(shù) 迂苛,它的梯度是一個(gè)由偏導(dǎo)數(shù)組成的向量:
梯度的方向是函數(shù)增長(zhǎng)最快的方向,而梯度的大小是函數(shù)增長(zhǎng)的速率鼓择。如果我們想要讓函數(shù)減小三幻,那么我們就要沿著梯度的反方向移動(dòng)。這就是梯度下降法的核心思想呐能。具體來(lái)說(shuō)念搬,我們可以用這樣的公式來(lái)更新參數(shù):
這里的 仍然是學(xué)習(xí)率,它控制著每次移動(dòng)的步長(zhǎng)摆出。我們可以看到朗徊,參數(shù)的更新是根據(jù)誤差函數(shù)對(duì)參數(shù)的偏導(dǎo)數(shù)來(lái)進(jìn)行的,也就是誤差函數(shù)在參數(shù)方向上的梯度懊蒸。我們用一個(gè)負(fù)號(hào)來(lái)表示沿著梯度的反方向移動(dòng)荣倾,也就是下降的方向。這樣骑丸,我們就可以不斷地迭代更新參數(shù)舌仍,直到誤差函數(shù)達(dá)到一個(gè)最小值。
那么如何求出誤差函數(shù)對(duì)參數(shù)的偏導(dǎo)數(shù)呢通危?這就需要用到反向傳播法铸豁。反向傳播法是一種高效計(jì)算復(fù)雜函數(shù)梯度的方法,它利用了鏈?zhǔn)椒▌t和動(dòng)態(tài)規(guī)劃的思想菊碟,從輸出端開始节芥,逐層反向計(jì)算每個(gè)參數(shù)對(duì)誤差函數(shù)的貢獻(xiàn)。反向傳播法的具體過(guò)程比較復(fù)雜逆害,我們?cè)诤竺鏁?huì)詳細(xì)介紹头镊。
通過(guò)梯度下降和反向傳播,我們就可以讓神經(jīng)元自動(dòng)地學(xué)習(xí)最優(yōu)的權(quán)重和偏置魄幕,從而實(shí)現(xiàn)更好的預(yù)測(cè)和認(rèn)知相艇。這種方法不僅適用于一元一次函數(shù)感知器,也適用于更復(fù)雜的函數(shù)和更多層的神經(jīng)網(wǎng)絡(luò)纯陨。在下一篇文章中坛芽,我們將介紹如何用多層神經(jīng)網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)更強(qiáng)大的人工智能留储。
總結(jié)
在這篇文章中,我們介紹了如何用一元一次函數(shù)感知器來(lái)描述直覺咙轩,以及如何用梯度下降和反向傳播來(lái)讓神經(jīng)元自動(dòng)地學(xué)習(xí)最優(yōu)的參數(shù)获讳。我們了解了以下幾個(gè)重要的概念:
- 直覺是一種認(rèn)知世界的方式,它可以用數(shù)學(xué)函數(shù)來(lái)描述活喊。
- 一元一次函數(shù)感知器是一種最簡(jiǎn)單也最基本的神經(jīng)元模型丐膝,它由麥克洛克-皮茨模型和羅森布拉特感知器模型組成。
- 梯度下降法是一種迭代優(yōu)化算法胧弛,它可以用來(lái)求解復(fù)雜函數(shù)的最小值或者最大值尤误。
- 反向傳播法是一種高效計(jì)算復(fù)雜函數(shù)梯度的方法,它利用了鏈?zhǔn)椒▌t和動(dòng)態(tài)規(guī)劃的思想结缚。
希望這篇文章能夠幫助你對(duì)人工智能有一個(gè)初步的了解和興趣损晤。如果你想要了解更多,請(qǐng)繼續(xù)關(guān)注我的后續(xù)文章红竭。謝謝你的閱讀尤勋!