第4周
第八绪抛、神經(jīng)網(wǎng)絡(luò):表述(Neural Networks: Representation)
8.1 非線性假設(shè)
參考視頻: 8 - 1 - Non-linear Hypotheses (10 min).mkv
我們之前學(xué)的娘香,無(wú)論是線性回歸還是邏輯回歸都有這樣一個(gè)缺點(diǎn),即:當(dāng)特征太多時(shí)限番,計(jì)算的負(fù)荷會(huì)非常大。
下面是一個(gè)例子:
當(dāng)我們使用,
的多次項(xiàng)式進(jìn)行預(yù)測(cè)時(shí),我們可以應(yīng)用的很好饭聚。
之前我們已經(jīng)看到過(guò)嫌吠,使用非線性的多項(xiàng)式項(xiàng)止潘,能夠幫助我們建立更好的分類模型。假設(shè)我們有非常多的特征辫诅,例如大于100個(gè)變量凭戴,我們希望用這100個(gè)特征來(lái)構(gòu)建一個(gè)非線性的多項(xiàng)式模型,結(jié)果將是數(shù)量非常驚人的特征組合炕矮,即便我們只采用兩兩特征的組合么夫,我們也會(huì)有接近5000個(gè)組合而成的特征。這對(duì)于一般的邏輯回歸來(lái)說(shuō)需要計(jì)算的特征太多了肤视。
假設(shè)我們希望訓(xùn)練一個(gè)模型來(lái)識(shí)別視覺(jué)對(duì)象(例如識(shí)別一張圖片上是否是一輛汽車)档痪,我們?cè)鯓硬拍苓@么做呢?一種方法是我們利用很多汽車的圖片和很多非汽車的圖片邢滑,然后利用這些圖片上一個(gè)個(gè)像素的值(飽和度或亮度)來(lái)作為特征腐螟。
假如我們只選用灰度圖片,每個(gè)像素則只有一個(gè)值(而非 RGB值),我們可以選取圖片上的兩個(gè)不同位置上的兩個(gè)像素乐纸,然后訓(xùn)練一個(gè)邏輯回歸算法利用這兩個(gè)像素的值來(lái)判斷圖片上是否是汽車:
假使我們采用的都是50x50像素的小圖片衬廷,并且我們將所有的像素視為特征,則會(huì)有 2500個(gè)特征汽绢,如果我們要進(jìn)一步將兩兩特征組合構(gòu)成一個(gè)多項(xiàng)式模型泵督,則會(huì)有約個(gè)(接近3百萬(wàn)個(gè))特征。普通的邏輯回歸模型庶喜,不能有效地處理這么多的特征小腊,這時(shí)候我們需要神經(jīng)網(wǎng)絡(luò)。
8.2 神經(jīng)元和大腦
參考視頻: 8 - 2 - Neurons and the Brain (8 min).mkv
神經(jīng)網(wǎng)絡(luò)是一種很古老的算法久窟,它最初產(chǎn)生的目的是制造能模擬大腦的機(jī)器秩冈。
在這門(mén)課中,我將向你們介紹神經(jīng)網(wǎng)絡(luò)斥扛。因?yàn)樗芎芎玫亟鉀Q不同的機(jī)器學(xué)習(xí)問(wèn)題入问。而不只因?yàn)樗鼈冊(cè)谶壿嬌闲械猛ǎ谶@段視頻中稀颁,我想告訴你們一些神經(jīng)網(wǎng)絡(luò)的背景知識(shí)芬失,由此我們能知道可以用它們來(lái)做什么。不管是將其應(yīng)用到現(xiàn)代的機(jī)器學(xué)習(xí)問(wèn)題上匾灶,還是應(yīng)用到那些你可能會(huì)感興趣的問(wèn)題中棱烂。也許,這一偉大的人工智能夢(mèng)想在未來(lái)能制造出真正的智能機(jī)器阶女。另外颊糜,我們還將講解神經(jīng)網(wǎng)絡(luò)是怎么涉及這些問(wèn)題的神經(jīng)網(wǎng)絡(luò)產(chǎn)生的原因是人們想嘗試設(shè)計(jì)出模仿大腦的算法,從某種意義上說(shuō)如果我們想要建立學(xué)習(xí)系統(tǒng)秃踩,那為什么不去模仿我們所認(rèn)識(shí)的最神奇的學(xué)習(xí)機(jī)器——人類的大腦呢衬鱼?
神經(jīng)網(wǎng)絡(luò)逐漸興起于二十世紀(jì)八九十年代,應(yīng)用得非常廣泛憔杨。但由于各種原因鸟赫,在90年代的后期應(yīng)用減少了。但是最近消别,神經(jīng)網(wǎng)絡(luò)又東山再起了抛蚤。其中一個(gè)原因是:神經(jīng)網(wǎng)絡(luò)是計(jì)算量有些偏大的算法。然而大概由于近些年計(jì)算機(jī)的運(yùn)行速度變快妖啥,才足以真正運(yùn)行起大規(guī)模的神經(jīng)網(wǎng)絡(luò)霉颠。正是由于這個(gè)原因和其他一些我們后面會(huì)討論到的技術(shù)因素,如今的神經(jīng)網(wǎng)絡(luò)對(duì)于許多應(yīng)用來(lái)說(shuō)是最先進(jìn)的技術(shù)荆虱。當(dāng)你想模擬大腦時(shí),是指想制造出與人類大腦作用效果相同的機(jī)器。大腦可以學(xué)會(huì)去以看而不是聽(tīng)的方式處理圖像怀读,學(xué)會(huì)處理我們的觸覺(jué)诉位。
我們能學(xué)習(xí)數(shù)學(xué),學(xué)著做微積分菜枷,而且大腦能處理各種不同的令人驚奇的事情苍糠。似乎如果你想要模仿它,你得寫(xiě)很多不同的軟件來(lái)模擬所有這些五花八門(mén)的奇妙的事情啤誊。不過(guò)能不能假設(shè)大腦做所有這些岳瞭,不同事情的方法,不需要用上千個(gè)不同的程序去實(shí)現(xiàn)蚊锹。相反的瞳筏,大腦處理的方法,只需要一個(gè)單一的學(xué)習(xí)算法就可以了牡昆?盡管這只是一個(gè)假設(shè)姚炕,不過(guò)讓我和你分享,一些這方面的證據(jù)丢烘。
大腦的這一部分這一小片紅色區(qū)域是你的聽(tīng)覺(jué)皮層柱宦,你現(xiàn)在正在理解我的話,這靠的是耳朵播瞳。耳朵接收到聲音信號(hào)掸刊,并把聲音信號(hào)傳遞給你的聽(tīng)覺(jué)皮層,正因如此赢乓,你才能明白我的話痒给。
神經(jīng)系統(tǒng)科學(xué)家做了下面這個(gè)有趣的實(shí)驗(yàn),把耳朵到聽(tīng)覺(jué)皮層的神經(jīng)切斷骏全。在這種情況下苍柏,將其重新接到一個(gè)動(dòng)物的大腦上,這樣從眼睛到視神經(jīng)的信號(hào)最終將傳到聽(tīng)覺(jué)皮層姜贡。如果這樣做了试吁。那么結(jié)果表明聽(tīng)覺(jué)皮層將會(huì)學(xué)會(huì)“看”。這里的“看”代表了我們所知道的每層含義楼咳。所以熄捍,如果你對(duì)動(dòng)物這樣做,那么動(dòng)物就可以完成視覺(jué)辨別任務(wù)母怜,它們可以看圖像余耽,并根據(jù)圖像做出適當(dāng)?shù)臎Q定。它們正是通過(guò)腦組織中的這個(gè)部分完成的苹熏。下面再舉另一個(gè)例子碟贾,這塊紅色的腦組織是你的軀體感覺(jué)皮層币喧,這是你用來(lái)處理觸覺(jué)的,如果你做一個(gè)和剛才類似的重接實(shí)驗(yàn)袱耽,那么軀體感覺(jué)皮層也能學(xué)會(huì)“看”杀餐。這個(gè)實(shí)驗(yàn)和其它一些類似的實(shí)驗(yàn),被稱為神經(jīng)重接實(shí)驗(yàn)朱巨,從這個(gè)意義上說(shuō)史翘,如果人體有同一塊腦組織可以處理光、聲或觸覺(jué)信號(hào)冀续,那么也許存在一種學(xué)習(xí)算法琼讽,可以同時(shí)處理視覺(jué)、聽(tīng)覺(jué)和觸覺(jué)洪唐,而不是需要運(yùn)行上千個(gè)不同的程序钻蹬,或者上千個(gè)不同的算法來(lái)做這些大腦所完成的成千上萬(wàn)的美好事情。也許我們需要做的就是找出一些近似的或?qū)嶋H的大腦學(xué)習(xí)算法桐罕,然后實(shí)現(xiàn)它大腦通過(guò)自學(xué)掌握如何處理這些不同類型的數(shù)據(jù)脉让。在很大的程度上,可以猜想如果我們把幾乎任何一種傳感器接入到大腦的幾乎任何一個(gè)部位的話功炮,大腦就會(huì)學(xué)會(huì)處理它溅潜。
下面再舉幾個(gè)例子:
這張圖是用舌頭學(xué)會(huì)“看”的一個(gè)例子。它的原理是:這實(shí)際上是一個(gè)名為BrainPort的系統(tǒng)薪伏,它現(xiàn)在正在FDA
(美國(guó)食品和藥物管理局)的臨床試驗(yàn)階段滚澜,它能幫助失明人士看見(jiàn)事物。它的原理是嫁怀,你在前額上帶一個(gè)灰度攝像頭设捐,面朝前,它就能獲取你面前事物的低分辨率的灰度圖像塘淑。你連一根線到舌頭上安裝的電極陣列上萝招,那么每個(gè)像素都被映射到你舌頭的某個(gè)位置上,可能電壓值高的點(diǎn)對(duì)應(yīng)一個(gè)暗像素電壓值低的點(diǎn)存捺。對(duì)應(yīng)于亮像素槐沼,即使依靠它現(xiàn)在的功能,使用這種系統(tǒng)就能讓你我在幾十分鐘里就學(xué)會(huì)用我們的舌頭“看”東西捌治。
這是第二個(gè)例子岗钩,關(guān)于人體回聲定位或者說(shuō)人體聲納。你有兩種方法可以實(shí)現(xiàn):你可以彈響指肖油,或者咂舌頭兼吓。不過(guò)現(xiàn)在有失明人士,確實(shí)在學(xué)校里接受這樣的培訓(xùn)森枪,并學(xué)會(huì)解讀從環(huán)境反彈回來(lái)的聲波模式—這就是聲納视搏。如果你搜索YouTube之后审孽,就會(huì)發(fā)現(xiàn)有些視頻講述了一個(gè)令人稱奇的孩子,他因?yàn)榘┌Y眼球慘遭移除凶朗,雖然失去了眼球瓷胧,但是通過(guò)打響指显拳,他可以四處走動(dòng)而不撞到任何東西棚愤,他能滑滑板,他可以將籃球投入籃框中杂数。注意這是一個(gè)沒(méi)有眼球的孩子宛畦。
第三個(gè)例子是觸覺(jué)皮帶,如果你把它戴在腰上揍移,蜂鳴器會(huì)響次和,而且總是朝向北時(shí)發(fā)出嗡嗡聲。它可以使人擁有方向感那伐,用類似于鳥(niǎo)類感知方向的方式踏施。
還有一些離奇的例子:
如果你在青蛙身上插入第三只眼,青蛙也能學(xué)會(huì)使用那只眼睛罕邀。因此畅形,這將會(huì)非常令人驚奇。如果你能把幾乎任何傳感器接入到大腦中诉探,大腦的學(xué)習(xí)算法就能找出學(xué)習(xí)數(shù)據(jù)的方法日熬,并處理這些數(shù)據(jù)。從某種意義上來(lái)說(shuō)肾胯,如果我們能找出大腦的學(xué)習(xí)算法竖席,然后在計(jì)算機(jī)上執(zhí)行大腦學(xué)習(xí)算法或與之相似的算法,也許這將是我們向人工智能邁進(jìn)做出的最好的嘗試敬肚。人工智能的夢(mèng)想就是:有一天能制造出真正的智能機(jī)器毕荐。
神經(jīng)網(wǎng)絡(luò)可能為我們打開(kāi)一扇進(jìn)入遙遠(yuǎn)的人工智能夢(mèng)的窗戶,但我在這節(jié)課中講授神經(jīng)網(wǎng)絡(luò)的原因艳馒,主要是對(duì)于現(xiàn)代機(jī)器學(xué)習(xí)應(yīng)用憎亚。它是最有效的技術(shù)方法。因此在接下來(lái)的一些課程中鹰溜,我們將開(kāi)始深入到神經(jīng)網(wǎng)絡(luò)的技術(shù)細(xì)節(jié)虽填。
8.3 模型表示1
參考視頻: 8 - 3 - Model Representation I (12 min).mkv
為了構(gòu)建神經(jīng)網(wǎng)絡(luò)模型,我們需要首先思考大腦中的神經(jīng)網(wǎng)絡(luò)是怎樣的曹动?每一個(gè)神經(jīng)元都可以被認(rèn)為是一個(gè)處理單元/神經(jīng)核(processing unit/Nucleus)斋日,它含有許多輸入/樹(shù)突(input/Dendrite),并且有一個(gè)輸出/軸突(output/Axon)墓陈。神經(jīng)網(wǎng)絡(luò)是大量神經(jīng)元相互鏈接并通過(guò)電脈沖來(lái)交流的一個(gè)網(wǎng)絡(luò)恶守。
下面是一組神經(jīng)元的示意圖第献,神經(jīng)元利用微弱的電流進(jìn)行溝通。這些弱電流也稱作動(dòng)作電位兔港,其實(shí)就是一些微弱的電流庸毫。所以如果神經(jīng)元想要傳遞一個(gè)消息,它就會(huì)就通過(guò)它的軸突衫樊,發(fā)送一段微弱電流給其他神經(jīng)元飒赃,這就是軸突。
這里是一條連接到輸入神經(jīng)科侈,或者連接另一個(gè)神經(jīng)元樹(shù)突的神經(jīng)载佳,接下來(lái)這個(gè)神經(jīng)元接收這條消息,做一些計(jì)算臀栈,它有可能會(huì)反過(guò)來(lái)將在軸突上的自己的消息傳給其他神經(jīng)元蔫慧。這就是所有人類思考的模型:我們的神經(jīng)元把自己的收到的消息進(jìn)行計(jì)算,并向其他神經(jīng)元傳遞消息权薯。這也是我們的感覺(jué)和肌肉運(yùn)轉(zhuǎn)的原理姑躲。如果你想活動(dòng)一塊肌肉,就會(huì)觸發(fā)一個(gè)神經(jīng)元給你的肌肉發(fā)送脈沖盟蚣,并引起你的肌肉收縮黍析。如果一些感官:比如說(shuō)眼睛想要給大腦傳遞一個(gè)消息,那么它就像這樣發(fā)送電脈沖給大腦的刁俭。
神經(jīng)網(wǎng)絡(luò)模型建立在很多神經(jīng)元之上橄仍,每一個(gè)神經(jīng)元又是一個(gè)個(gè)學(xué)習(xí)模型。這些神經(jīng)元(也叫激活單元牍戚,activation unit)采納一些特征作為輸出侮繁,并且根據(jù)本身的模型提供一個(gè)輸出。下圖是一個(gè)以邏輯回歸模型作為自身學(xué)習(xí)模型的神經(jīng)元示例如孝,在神經(jīng)網(wǎng)絡(luò)中宪哩,參數(shù)又可被成為權(quán)重(weight)。
我們?cè)O(shè)計(jì)出了類似于神經(jīng)元的神經(jīng)網(wǎng)絡(luò)第晰,效果如下:
其中,
,
是輸入單元(input units)锁孟,我們將原始數(shù)據(jù)輸入給它們。
,
,
是中間單元茁瘦,它們負(fù)責(zé)將數(shù)據(jù)進(jìn)行處理品抽,然后呈遞到下一層。
最后是輸出單元甜熔,它負(fù)責(zé)計(jì)算圆恤。
神經(jīng)網(wǎng)絡(luò)模型是許多邏輯單元按照不同層級(jí)組織起來(lái)的網(wǎng)絡(luò),每一層的輸出變量都是下一層的輸入變量腔稀。下圖為一個(gè)3層的神經(jīng)網(wǎng)絡(luò)盆昙,第一層成為輸入層(Input Layer)羽历,最后一層稱為輸出層(Output Layer),中間一層成為隱藏層(Hidden Layers)淡喜。我們?yōu)槊恳粚佣荚黾右粋€(gè)偏差單位(bias unit):
下面引入一些標(biāo)記法來(lái)幫助描述模型:
代表第
層的第
個(gè)激活單元秕磷。
代表從第
層映射到第
層時(shí)的權(quán)重的矩陣,例如
代表從第一層映射到第二層的權(quán)重的矩陣炼团。其尺寸為:以第
層的激活單元數(shù)量為行數(shù)澎嚣,以第
層的激活單元數(shù)加一為列數(shù)的矩陣。例如:上圖所示的神經(jīng)網(wǎng)絡(luò)中
的尺寸為 3*4们镜。
對(duì)于上圖所示的模型币叹,激活單元和輸出分別表達(dá)為:
上面進(jìn)行的討論中只是將特征矩陣中的一行(一個(gè)訓(xùn)練實(shí)例)喂給了神經(jīng)網(wǎng)絡(luò)润歉,我們需要將整個(gè)訓(xùn)練集都喂給我們的神經(jīng)網(wǎng)絡(luò)算法來(lái)學(xué)習(xí)模型模狭。
我們可以知道:每一個(gè)都是由上一層所有的
和每一個(gè)
所對(duì)應(yīng)的決定的。
(我們把這樣從左到右的算法稱為前向傳播算法( FORWARD PROPAGATION ))
把,
,
分別用矩陣表示:
我們可以得到 踩衩。
8.4 模型表示2
參考視頻: 8 - 4 - Model Representation II (12 min).mkv
( FORWARD PROPAGATION )
相對(duì)于使用循環(huán)來(lái)編碼嚼鹉,利用向量化的方法會(huì)使得計(jì)算更為簡(jiǎn)便。以上面的神經(jīng)網(wǎng)絡(luò)為例驱富,試著計(jì)算第二層的值:
我們令 锚赤,則
,計(jì)算后添加
褐鸥。 計(jì)算輸出的值為:
我們令 线脚,則
。
這只是針對(duì)訓(xùn)練集中一個(gè)訓(xùn)練實(shí)例所進(jìn)行的計(jì)算叫榕。如果我們要對(duì)整個(gè)訓(xùn)練集進(jìn)行計(jì)算浑侥,我們需要將訓(xùn)練集特征矩陣進(jìn)行轉(zhuǎn)置,使得同一個(gè)實(shí)例的特征都在同一列里晰绎。即:
為了更好了了解Neuron Networks的工作原理寓落,我們先把左半部分遮住:
右半部分其實(shí)就是以, 按照Logistic Regression的方式輸出
:
其實(shí)神經(jīng)網(wǎng)絡(luò)就像是logistic regression荞下,只不過(guò)我們把logistic regression中的輸入向量 變成了中間層的
, 即:
我們可以把看成更為高級(jí)的特征值伶选,也就是
的進(jìn)化體,并且它們是由
與
決定的尖昏,因?yàn)槭翘荻认陆档难鏊埃?img class="math-inline" src="https://math.jianshu.com/math?formula=a" alt="a" mathimg="1">是變化的,并且變得越來(lái)越厲害抽诉,所以這些更高級(jí)的特征值遠(yuǎn)比僅僅將
次方厲害陨簇,也能更好的預(yù)測(cè)新數(shù)據(jù)。
這就是神經(jīng)網(wǎng)絡(luò)相比于邏輯回歸和線性回歸的優(yōu)勢(shì)掸鹅。
8.5 特征和直觀理解1
參考視頻: 8 - 5 - Examples and Intuitions I (7 min).mkv
從本質(zhì)上講塞帐,神經(jīng)網(wǎng)絡(luò)能夠通過(guò)學(xué)習(xí)得出其自身的一系列特征拦赠。在普通的邏輯回歸中,我們被限制為使用數(shù)據(jù)中的原始特征葵姥,我們雖然可以使用一些二項(xiàng)式項(xiàng)來(lái)組合這些特征荷鼠,但是我們?nèi)匀皇艿竭@些原始特征的限制。在神經(jīng)網(wǎng)絡(luò)中榔幸,原始特征只是輸入層允乐,在我們上面三層的神經(jīng)網(wǎng)絡(luò)例子中,第三層也就是輸出層做出的預(yù)測(cè)利用的是第二層的特征削咆,而非輸入層中的原始特征牍疏,我們可以認(rèn)為第二層中的特征是神經(jīng)網(wǎng)絡(luò)通過(guò)學(xué)習(xí)后自己得出的一系列用于預(yù)測(cè)輸出變量的新特征。
神經(jīng)網(wǎng)絡(luò)中拨齐,單層神經(jīng)元(無(wú)中間層)的計(jì)算可用來(lái)表示邏輯運(yùn)算鳞陨,比如邏輯與(AND)、邏輯或(OR)瞻惋。
舉例說(shuō)明:邏輯與(AND)厦滤;下圖中左半部分是神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)與output層表達(dá)式,右邊上部分是sigmod函數(shù)歼狼,下半部分是真值表掏导。
我們可以用這樣的一個(gè)神經(jīng)網(wǎng)絡(luò)表示AND 函數(shù):
其中
我們的輸出函數(shù)即為:
我們知道的圖像是:
所以我們有:
所以我們的:
這就是AND函數(shù)。
接下來(lái)再介紹一個(gè)OR函數(shù):
OR與AND整體一樣羽峰,區(qū)別只在于的取值不同趟咆。
8.6 樣本和直觀理解II
參考視頻: 8 - 6 - Examples and Intuitions II (10 min).mkv
二元邏輯運(yùn)算符(BINARY LOGICAL OPERATORS)當(dāng)輸入特征為布爾值(0或1)時(shí),我們可以用一個(gè)單一的激活層可以作為二元邏輯運(yùn)算符梅屉,為了表示不同的運(yùn)算符值纱,我們只需要選擇不同的權(quán)重即可。
下圖的神經(jīng)元(三個(gè)權(quán)重分別為-30履植,20计雌,20)可以被視為作用同于邏輯與(AND):
下圖的神經(jīng)元(三個(gè)權(quán)重分別為-10,20玫霎,20)可以被視為作用等同于邏輯或(OR):
下圖的神經(jīng)元(兩個(gè)權(quán)重分別為 10凿滤,-20)可以被視為作用等同于邏輯非(NOT):
我們可以利用神經(jīng)元來(lái)組合成更為復(fù)雜的神經(jīng)網(wǎng)絡(luò)以實(shí)現(xiàn)更復(fù)雜的運(yùn)算。例如我們要實(shí)現(xiàn)XNOR 功能(輸入的兩個(gè)值必須一樣庶近,均為1或均為0)翁脆,即
首先構(gòu)造一個(gè)能表達(dá)部分的神經(jīng)元:
然后將表示 AND 的神經(jīng)元和表示的神經(jīng)元以及表示 OR 的神經(jīng)元進(jìn)行組合:
我們就得到了一個(gè)能實(shí)現(xiàn) 運(yùn)算符功能的神經(jīng)網(wǎng)絡(luò)。
按這種方法我們可以逐漸構(gòu)造出越來(lái)越復(fù)雜的函數(shù)鼻种,也能得到更加厲害的特征值反番。
這就是神經(jīng)網(wǎng)絡(luò)的厲害之處。
8.7 多類分類
參考視頻: 8 - 7 - Multiclass Classification (4 min).mkv
當(dāng)我們有不止兩種分類時(shí)(也就是),比如以下這種情況罢缸,該怎么辦篙贸?如果我們要訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)算法來(lái)識(shí)別路人、汽車枫疆、摩托車和卡車爵川,在輸出層我們應(yīng)該有4個(gè)值。例如息楔,第一個(gè)值為1或0用于預(yù)測(cè)是否是行人寝贡,第二個(gè)值用于判斷是否為汽車。
輸入向量有三個(gè)維度值依,兩個(gè)中間層圃泡,輸出層4個(gè)神經(jīng)元分別用來(lái)表示4類,也就是每一個(gè)數(shù)據(jù)在輸出層都會(huì)出現(xiàn)
愿险,且
中僅有一個(gè)為1颇蜡,表示當(dāng)前類。下面是該神經(jīng)網(wǎng)絡(luò)的可能結(jié)構(gòu)示例:
神經(jīng)網(wǎng)絡(luò)算法的輸出結(jié)果為四種可能情形之一: