神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)

深度學(xué)習(xí)概論

神經(jīng)網(wǎng)絡(luò)屬于監(jiān)督學(xué)習(xí)芋类,并徹底改變了監(jiān)督學(xué)習(xí)隆嗅。神經(jīng)網(wǎng)絡(luò)這個(gè)概念不是近幾年才有,但是卻是近幾年興起的侯繁。那么是什么原因促成了神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)的興起呢胖喳?規(guī)模。這里的規(guī)模不僅指神經(jīng)網(wǎng)絡(luò)架構(gòu)的規(guī)模贮竟,也指數(shù)據(jù)的規(guī)模丽焊。規(guī)模的增長(zhǎng)使得神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)在機(jī)器學(xué)習(xí)各個(gè)算法中拔得頭籌。正是由于規(guī)模的驅(qū)動(dòng)咕别,深度學(xué)習(xí)將在未來(lái)幾年持續(xù)不斷地發(fā)展技健。

隨著互聯(lián)網(wǎng)的發(fā)展,海量的數(shù)據(jù)成為一種資源惰拱〈萍總的來(lái)講,這些數(shù)據(jù)可以被分為結(jié)構(gòu)化數(shù)據(jù)(Structured Data)和非架構(gòu)化數(shù)據(jù)(Unstructured Data)偿短。其中帽芽,結(jié)構(gòu)化數(shù)據(jù)典型的代表即數(shù)據(jù)庫(kù)數(shù)據(jù),非結(jié)構(gòu)化的數(shù)據(jù)包括音頻翔冀、圖像和文本等导街,結(jié)構(gòu)化的數(shù)據(jù)更容易被計(jì)算機(jī)理解。毋庸置疑纤子,深度學(xué)習(xí)在處理非結(jié)構(gòu)化數(shù)據(jù)方面有著明顯的優(yōu)勢(shì)搬瑰。總的來(lái)說(shuō)控硼,神經(jīng)網(wǎng)絡(luò)架構(gòu)有以下幾種:

  1. 通用的標(biāo)準(zhǔn)的神經(jīng)網(wǎng)絡(luò)(Universally Standard Neural Network)
  2. 卷積神經(jīng)網(wǎng)絡(luò)CNN(Convolutional Neural Network)
  3. 循環(huán)神經(jīng)網(wǎng)絡(luò)RNN(Recurrent Neural Network)

其中泽论,CNN多用于處理圖像,RNN多用于處理序列數(shù)據(jù)(音頻卡乾,單詞語(yǔ)言翼悴,含有時(shí)間成分的一維時(shí)間序列等)。

神經(jīng)網(wǎng)絡(luò)基礎(chǔ)

梯度下降法(Gradient Descent)

下圖所示為logistic回歸算法幔妨,其中鹦赎,J為成本函數(shù)。我們的目標(biāo)是找到使得成本函數(shù)最小的w和b误堡。梯度下降法的思路為:用某初始值初始化w和b古话,從初始點(diǎn)開(kāi)始,試圖沿著最快下降方向往下走锁施,這樣就很有希望達(dá)到全局最優(yōu)解或者接近全局最優(yōu)解陪踩。


logistic回歸算法

核心算法為如下所示的兩個(gè)公式:


梯度下降算法
向量化(vectorization)

向量化的作用即是消除代碼中顯式的for循環(huán)語(yǔ)句杖们。在編寫(xiě)新的網(wǎng)絡(luò)或者在進(jìn)行回歸時(shí),盡量避免for循環(huán)肩狂。

import numpy as np
import time
//向量化版本
a = np.random.rand(1000000)
b = np.random.rand(1000000)
tic = time.time()
c = np.dot(a,b)
toc = time.time()
print("Vectorized version:" + str(1000*(toc-tic)) + "ms")
//for循環(huán)版本
c = 0
tic = time.time()
for i in range(1000000):
    c += a[i]*b[i]
toc = time.time()
print("for loop" + str(1000*(toc-tic)) + "ms")

輸出結(jié)果:

250224.435665
Vectorized version:1.0025501251220703ms
250224.435665
for loop717.5307273864746ms

其他可以向量化的例子:

np.exp(v)
np.log(v)
np.abs(v)
np.maximum(v)
向量化logistic回歸
向量化的logistic回歸
Python中的廣播

Python中的廣播為在進(jìn)行科學(xué)計(jì)算的時(shí)候經(jīng)常用到的一種技術(shù)摘完。總的來(lái)說(shuō)傻谁,就是將一個(gè)(m,n)維的矩陣和一個(gè)向量相加時(shí)描焰,向量會(huì)自動(dòng)擴(kuò)展為和矩陣相同的維數(shù),而后與矩陣進(jìn)行計(jì)算栅螟。


Python中的廣播
編程技巧

在進(jìn)行神經(jīng)網(wǎng)絡(luò)編程時(shí)荆秦,要注意不要使用秩為1的數(shù)組。

a = np.random.randn(5)

應(yīng)該使用如下所示的數(shù)組:

a = np.random.randn(5,1)

淺層次神經(jīng)網(wǎng)絡(luò)

神經(jīng)網(wǎng)絡(luò)的表示
二層神經(jīng)網(wǎng)絡(luò)示意圖

如上圖所示的網(wǎng)絡(luò)通常被認(rèn)為是三層神經(jīng)網(wǎng)絡(luò)力图,因?yàn)樗还灿腥龑樱狠斎雽硬匠瘛㈦[含層和輸出層,而在學(xué)術(shù)論文里大多被稱為二層神經(jīng)網(wǎng)絡(luò):第一層(隱含層)和第二層(輸出層)吃媒。

根據(jù)示意圖瓤介,可以列出如下四個(gè)向量化的方程,每個(gè)向量的維度都在下面標(biāo)出赘那。


二層神經(jīng)網(wǎng)絡(luò)正向傳播的方程
激活函數(shù)

激活函數(shù)有多種:
1.Sigmoid函數(shù)
該函數(shù)的值域?yàn)閇0,1]刑桑。

Sigmoid函數(shù)

2.tanh函數(shù)
該函數(shù)的值域?yàn)閇-1,1],并通過(guò)原點(diǎn)募舟。

tanh函數(shù)

3.修正線性單元(Rectified Linear Unit)
該函數(shù)在z<0時(shí)祠斧,斜率為0;在z>0時(shí)拱礁,斜率為1;在z=0時(shí)琢锋,導(dǎo)數(shù)沒(méi)有定義。


ReLU函數(shù)

4.帶泄露的修正線性單元(Leaky ReLU)
可能的公式為:


Leaky ReLU

不同激活函數(shù)的對(duì)比:
1.對(duì)于Sigmoid函數(shù)呢灶,除非用在二元分類的輸出層吴超,不然絕對(duì)不要用。
2.大多數(shù)場(chǎng)合下鸯乃,tanh函數(shù)比Sigmoid函數(shù)更加優(yōu)越鲸阻。
3.最常用的默認(rèn)激活函數(shù)是ReLU函數(shù),如果不確定用哪個(gè)就用這個(gè)缨睡,或者也可以試試帶泄漏的ReLU函數(shù)鸟悴。
4.最有效的還是自己嘗試跑一下程序,選擇一個(gè)最適合自己應(yīng)用的宏蛉。

使用非線性激活函數(shù)的原因
因?yàn)榫€性函數(shù)的組合還是線性函數(shù)遣臼,這樣就無(wú)法引入更多更復(fù)雜的函數(shù)性置。一般除了在做回歸的時(shí)候在輸出層可以用到線性激活函數(shù)拾并,其他情況很少用線性激活函數(shù)。

反向傳播

如前所述,二層神經(jīng)網(wǎng)絡(luò)的正向傳播需要四個(gè)方程嗅义,而反向傳播則需要6個(gè)方程屏歹。

反向傳播方程

向量化的版本如下:


向量化的反向傳播方程
隨機(jī)初始化參數(shù)
  1. W不能初始化為0矩陣,b可以初始化為元素均為0的矩陣之碗。


    初始化示例
  1. 要乘以0.01蝙眶,是因?yàn)橐话銋?shù)會(huì)初始化為比較小的數(shù),否則在使用激活函數(shù)時(shí)z的值容易落到函數(shù)飽和的區(qū)段褪那,使得學(xué)習(xí)速度減慢幽纷。

深層神經(jīng)網(wǎng)絡(luò)(Deep Neural Network)

為什么使用深層表示
  1. 關(guān)于深層表示的直覺(jué)
    當(dāng)進(jìn)行人臉識(shí)別時(shí),可以把神經(jīng)網(wǎng)絡(luò)中的當(dāng)做是邊緣探測(cè)器博敬,來(lái)探測(cè)輸入圖片的邊緣友浸,比如有的神經(jīng)元探測(cè)到鼻子的部分而有的探測(cè)到眼睛的部分,然后就可以開(kāi)始檢測(cè)人臉的不同部分偏窝,最后再把這些部分放在一起收恢,就可以識(shí)別不同的人臉了。
神經(jīng)網(wǎng)絡(luò)的識(shí)別過(guò)程
  1. 電路理論和深度學(xué)習(xí)
    深度神經(jīng)網(wǎng)絡(luò)有效的另外一個(gè)支持理論來(lái)源于電路理論祭往。使用一些基本的邏輯門(mén)來(lái)表示一些函數(shù)直觀上就像使用一些基本的神經(jīng)元來(lái)表示一些函數(shù)一樣伦意。非正式地講,有些函數(shù)如果使用深層網(wǎng)絡(luò)表示的話硼补,每層的神經(jīng)元的數(shù)量可以比較少驮肉;如果使用淺層的神經(jīng)網(wǎng)絡(luò)的話,則每一層的神經(jīng)元的數(shù)量呈指數(shù)增長(zhǎng)已骇。
深層網(wǎng)絡(luò)的前向傳播

L層的正向傳播方程如下:

正向傳播方程

這里需要用到for循環(huán)缆八。以層數(shù)為循環(huán)次數(shù),對(duì)每一層進(jìn)行傳播方程的求解疾捍。

核對(duì)矩陣的維數(shù)

在進(jìn)行編程時(shí)奈辰,有效的排除一些bug的方法是把參與計(jì)算的矩陣維數(shù)從頭到尾核對(duì)一遍。經(jīng)過(guò)推導(dǎo)乱豆,我們可以得到矩陣的維數(shù)的一些規(guī)律奖恰。

矩陣維數(shù)規(guī)律

其中,m為訓(xùn)練樣本集的數(shù)目宛裕,n^[l]為第l層的神經(jīng)元的個(gè)數(shù)瑟啃。

搭建深層神經(jīng)網(wǎng)絡(luò)塊

深層神經(jīng)網(wǎng)絡(luò)塊主要包括正向傳播和反向傳播兩個(gè)流程,大致計(jì)算流程如下圖:


正向傳播和反向傳播流程
參數(shù)和超參數(shù)

神經(jīng)網(wǎng)絡(luò)的性能的高低很大程度上取決于我們?cè)O(shè)置的參數(shù)和超參數(shù)揩尸。其中蛹屿,W和b為我們經(jīng)常提到的參數(shù);而學(xué)習(xí)率(learning rate)岩榆、迭代次數(shù)错负、隱含層層數(shù)坟瓢、隱層單元個(gè)數(shù)、激活函數(shù)的選擇等這些參數(shù)則控制著最后的W和b這兩個(gè)參數(shù)犹撒,因此被稱為超參數(shù)(hyper parameters)折联。

除了上面提到的超參數(shù),深度學(xué)習(xí)中還有很多不同的超參數(shù)识颊,比如:動(dòng)量項(xiàng)(momentum term)诚镰、最小批次大小(mini batch size)、正則化參數(shù)(regularization parameters)

深度學(xué)習(xí)的應(yīng)用是一個(gè)經(jīng)驗(yàn)過(guò)程祥款,我們需要不斷地嘗試清笨、編碼、實(shí)驗(yàn)刃跛,不斷地積累和總結(jié)經(jīng)驗(yàn)函筋。直到我們有了設(shè)置參數(shù)的靈感和直覺(jué)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末奠伪,一起剝皮案震驚了整個(gè)濱河市跌帐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌绊率,老刑警劉巖谨敛,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異滤否,居然都是意外死亡脸狸,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)藐俺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)炊甲,“玉大人,你說(shuō)我怎么就攤上這事欲芹∏浞龋” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵菱父,是天一觀的道長(zhǎng)颈娜。 經(jīng)常有香客問(wèn)我,道長(zhǎng)浙宜,這世上最難降的妖魔是什么官辽? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮粟瞬,結(jié)果婚禮上同仆,老公的妹妹穿的比我還像新娘。我一直安慰自己裙品,他們只是感情好俗批,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布俗或。 她就那樣靜靜地躺著,像睡著了一般扶镀。 火紅的嫁衣襯著肌膚如雪蕴侣。 梳的紋絲不亂的頭發(fā)上焰轻,一...
    開(kāi)封第一講書(shū)人閱讀 51,462評(píng)論 1 302
  • 那天臭觉,我揣著相機(jī)與錄音,去河邊找鬼辱志。 笑死蝠筑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的揩懒。 我是一名探鬼主播什乙,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼已球!你這毒婦竟也來(lái)了臣镣?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤智亮,失蹤者是張志新(化名)和其女友劉穎忆某,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體阔蛉,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡弃舒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了状原。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片聋呢。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖颠区,靈堂內(nèi)的尸體忽然破棺而出削锰,到底是詐尸還是另有隱情,我是刑警寧澤毕莱,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布喂窟,位于F島的核電站,受9級(jí)特大地震影響央串,放射性物質(zhì)發(fā)生泄漏磨澡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一质和、第九天 我趴在偏房一處隱蔽的房頂上張望稳摄。 院中可真熱鬧,春花似錦饲宿、人聲如沸厦酬。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)仗阅。三九已至昌讲,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間减噪,已是汗流浹背短绸。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留筹裕,地道東北人醋闭。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像朝卒,于是被迫代替她去往敵國(guó)和親证逻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容