神經(jīng)網(wǎng)絡(luò)的Python實(shí)現(xiàn)(一)了解神經(jīng)網(wǎng)絡(luò)

網(wǎng)絡(luò)上深度學(xué)習(xí)相關(guān)博客教程質(zhì)量參差不齊杠输,很多細(xì)節(jié)很少有文章提到,所以本著夯實(shí)深度學(xué)習(xí)基礎(chǔ)的想法寫(xiě)下此系列博文。

本文會(huì)從神經(jīng)網(wǎng)絡(luò)的概述碘勉、不同框架的公式推導(dǎo)和對(duì)應(yīng)的基于numpy的Python代碼實(shí)現(xiàn)等方面進(jìn)行干貨的講解。如有不懂之處歡迎在評(píng)論留言奇瘦,本人也初學(xué)機(jī)器學(xué)習(xí)與深度學(xué)習(xí)不久棘催,有不足之處也請(qǐng)歡迎我聯(lián)系。:)

歡迎到我的個(gè)人博客

推薦書(shū)籍與視頻教程:
《機(jī)器學(xué)習(xí)》--周志華
《Deep learning》--Ian Goodfellow耳标、Yoshua Bengio 和 Aaron Courville
李宏毅深度學(xué)習(xí)視頻課程-youtube Bilibili


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

神經(jīng)網(wǎng)絡(luò)是由具有適應(yīng)性的簡(jiǎn)單單元組成的廣泛并行互連的網(wǎng)絡(luò)醇坝,它的組織能夠模擬生物神經(jīng)系統(tǒng)對(duì)真實(shí)世界物體所作出的交互反應(yīng)。

神經(jīng)網(wǎng)絡(luò)最基本的組成是神經(jīng)元模型次坡,每個(gè)神經(jīng)元與其他神經(jīng)元相連呼猪,神經(jīng)元接受到來(lái)自 n 個(gè)其他神經(jīng)元傳遞過(guò)來(lái)的輸入信號(hào),這些信號(hào)通過(guò)帶有權(quán)重的連接進(jìn)行傳遞贸毕,神經(jīng)元接收到的總輸入值將于閾值進(jìn)行比較郑叠,然后通過(guò)“激活函數(shù)”處理產(chǎn)生輸出。把許多神經(jīng)元按一定層次結(jié)構(gòu)連接起來(lái)就得到了神經(jīng)網(wǎng)絡(luò)明棍。

感知機(jī)模型

感知機(jī)模型(Perceptron)由兩層神經(jīng)元組成乡革,分別是輸入層與輸出層。

image

感知機(jī)模型是最為基礎(chǔ)的網(wǎng)絡(luò)結(jié)構(gòu)摊腋,其計(jì)算形式如下

y=f\left(\sum_i\omega_ix_i+b\right)

其中 f 為激活函數(shù)沸版。我們先假設(shè) f 是階躍函數(shù)(Step function)。

def sign(out):
    """
    y = sign(w·x + b)
    :param out - the result of w·x + b
    :return: y
    """
    if out >= 0:
        return 1
    else:
        return -1

感知機(jī)的學(xué)習(xí)規(guī)則非常簡(jiǎn)單兴蒸,對(duì)于訓(xùn)練樣本 (x,y)视粮,若當(dāng)前感知機(jī)的輸出為 \hat{y},則感知機(jī)參數(shù)更新方式如下

\begin{align} \omega &\leftarrow \omega_i + \Delta\omega_i & \Delta\omega_i &= \eta\ (y-\hat{y})\ x_i \nonumber\\ \qquad& \nonumber\\ b_i &\leftarrow b_i + \Delta b_i & \Delta b_i &= \eta\ (y-\hat{y}) \nonumber \end{align}

其中 \eta 稱為學(xué)習(xí)率(learning rate)

下面我們使用Python來(lái)實(shí)現(xiàn)感知機(jī)進(jìn)行分類(lèi):

# 初始化變量w,b
w = np.zeros(shape=data[0].shape)
b = np.zeros(shape=label[0].shape)

def update(x, y, learning_rate):
    """
    當(dāng)發(fā)現(xiàn)誤分類(lèi)點(diǎn)時(shí)橙凳,更新參數(shù)w,b.
    更新方法:
    w = w + learning_rate * x * y
    b = b + learning_rate * y
    :param x: 誤分類(lèi)點(diǎn)坐標(biāo)
    :param y: 誤分類(lèi)點(diǎn)正確分類(lèi)標(biāo)簽
    :return: None
    """
    global w, b
    w = w + learning_rate * x * y
    b = b + learning_rate * y
    

假設(shè)訓(xùn)練集是線性可分的蕾殴。更新過(guò)程便是,遍歷全部的訓(xùn)練實(shí)例岛啸,通過(guò)感知機(jī)的計(jì)算方式計(jì)算出結(jié)果 y 與對(duì)應(yīng)標(biāo)簽進(jìn)行比較(感知機(jī)標(biāo)簽一般為 1 和 -1)钓觉,如果誤分便使用updata()進(jìn)行參數(shù)更新。下圖是感知機(jī)線性分類(lèi)的擬合過(guò)程坚踩。

image

隨意寫(xiě)的訓(xùn)練數(shù)據(jù)

# x
[[3.2, 0.8], [5, 5], [3, 3], [4, 3], [1, 1], [2, 2], [1, 4]]
# y
[-1, 1, 1, 1, -1, -1, -1]

感知機(jī)只有輸入層和輸出層荡灾,且只有輸出層神經(jīng)元進(jìn)行激活處理,即只有一層功能神經(jīng)元瞬铸,其學(xué)習(xí)能力非常有限批幌。如果問(wèn)題是非線性可分問(wèn)題,那么感知機(jī)會(huì)發(fā)生振蕩嗓节,無(wú)法收斂荧缘。

多層網(wǎng)絡(luò)

為了解決非線性可分問(wèn)題,那么便需要采用多層功能神經(jīng)元拦宣,如簡(jiǎn)單的兩層感知機(jī)胜宇。如圖

image

其中輸入層與輸出層之間一層被稱為隱藏層(隱含層)耀怜,隱藏層和輸出層都是擁有激活函數(shù)的功能神經(jīng)元。一般情況下桐愉,隱藏層可以有多層财破,同層神經(jīng)元之間不存在連接,也不存在跨層連接从诲。這樣的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)被稱為多層前饋神經(jīng)網(wǎng)絡(luò)(multi-layer feedforward neural networks)

因多層功能神經(jīng)元的存在左痢,多層網(wǎng)絡(luò)的學(xué)習(xí)能力要強(qiáng)得多,同時(shí)簡(jiǎn)單的感知機(jī)學(xué)習(xí)規(guī)則顯然已經(jīng)無(wú)法滿足要求系洛。更強(qiáng)大的學(xué)習(xí)算法俊性,誤差逆?zhèn)鞑?error BackPropagation)算法,即BP算法便是最成功的神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法描扯。

TODO

在下一篇博文中定页,我們將使用BP算法來(lái)實(shí)現(xiàn)“全連接網(wǎng)絡(luò)”。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末绽诚,一起剝皮案震驚了整個(gè)濱河市典徊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌恩够,老刑警劉巖卒落,帶你破解...
    沈念sama閱讀 222,807評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蜂桶,居然都是意外死亡儡毕,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)扑媚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)腰湾,“玉大人,你說(shuō)我怎么就攤上這事疆股¢苊耍” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,589評(píng)論 0 363
  • 文/不壞的土叔 我叫張陵押桃,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我导犹,道長(zhǎng)唱凯,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,188評(píng)論 1 300
  • 正文 為了忘掉前任谎痢,我火速辦了婚禮磕昼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘节猿。我一直安慰自己票从,他們只是感情好漫雕,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著峰鄙,像睡著了一般浸间。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上吟榴,一...
    開(kāi)封第一講書(shū)人閱讀 52,785評(píng)論 1 314
  • 那天魁蒜,我揣著相機(jī)與錄音,去河邊找鬼吩翻。 笑死兜看,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的狭瞎。 我是一名探鬼主播细移,決...
    沈念sama閱讀 41,220評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼熊锭!你這毒婦竟也來(lái)了弧轧?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,167評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤球涛,失蹤者是張志新(化名)和其女友劉穎劣针,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體亿扁,經(jīng)...
    沈念sama閱讀 46,698評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡捺典,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評(píng)論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了从祝。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片襟己。...
    茶點(diǎn)故事閱讀 40,912評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖牍陌,靈堂內(nèi)的尸體忽然破棺而出擎浴,到底是詐尸還是另有隱情,我是刑警寧澤毒涧,帶...
    沈念sama閱讀 36,572評(píng)論 5 351
  • 正文 年R本政府宣布贮预,位于F島的核電站,受9級(jí)特大地震影響契讲,放射性物質(zhì)發(fā)生泄漏仿吞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評(píng)論 3 336
  • 文/蒙蒙 一捡偏、第九天 我趴在偏房一處隱蔽的房頂上張望唤冈。 院中可真熱鬧,春花似錦银伟、人聲如沸你虹。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,746評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)傅物。三九已至夯辖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間挟伙,已是汗流浹背楼雹。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,859評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留尖阔,地道東北人贮缅。 一個(gè)月前我還...
    沈念sama閱讀 49,359評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像介却,于是被迫代替她去往敵國(guó)和親谴供。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評(píng)論 2 361

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