深度學(xué)習(xí)入門

人工智能(AI)是近兩年來最熱門的詞之一了充择,自16年Google DeepMind的AlphaGo打敗了世界圍棋大師李世石后羔砾,人們?cè)隗@嘆之余表窘,也意識(shí)到人工智能時(shí)代的正式開始票腰。從此,人工智能封救、機(jī)器學(xué)習(xí)和深度學(xué)習(xí)就成為了熱門詞匯拇涤,而它們的關(guān)系如下圖1所示。

圖1 人工智能誉结、機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的關(guān)系

  人工智能的概念起源于1956年鹅士,所謂的人工智能就是給機(jī)器賦予人的智能,讓機(jī)器能夠像人一樣地思考問題惩坑,做出決策掉盅。而一種較為有效的、可行的實(shí)現(xiàn)人工智能的方法就是機(jī)器學(xué)習(xí)以舒,機(jī)器學(xué)習(xí)最基本的做法趾痘,是使用算法來解析數(shù)據(jù)、從中學(xué)習(xí)蔓钟,然后對(duì)真實(shí)世界中的事件做出決策和預(yù)測(cè)永票。實(shí)現(xiàn)機(jī)器學(xué)習(xí)的一種重要框架是深度學(xué)習(xí),它的出現(xiàn)使機(jī)器學(xué)習(xí)能夠?qū)崿F(xiàn)更多的應(yīng)用,包括無人駕駛汽車瓦侮,預(yù)防性醫(yī)療保健艰赞,甚至是更好的電影推薦佣谐。
  從下圖2可以看出肚吏,深度作為當(dāng)前熱門領(lǐng)域“機(jī)器學(xué)習(xí)”的其中一種框架,近年來狭魂,在google的使用呈直線上升趨勢(shì)罚攀。

圖2 機(jī)器學(xué)習(xí)在google的發(fā)展趨勢(shì)

  本文以下是通過參考臺(tái)灣李宏毅教授的介紹深度學(xué)習(xí)的ppt,“”Deep Learning Tutorial “”雌澄,再加上自己的理解斋泄,簡單介紹下深度學(xué)習(xí)的實(shí)現(xiàn)原理。下面的介紹主要分為兩大部分镐牺,第一部分主要介紹深度學(xué)習(xí)的實(shí)現(xiàn)過程炫掐,第二部分介紹如何創(chuàng)建一個(gè)簡單的深度學(xué)習(xí)模型。
  深度學(xué)習(xí)的過程就是使用多個(gè)處理層對(duì)數(shù)據(jù)進(jìn)行高層抽象睬涧,得到多重非線性變換函數(shù)的過程募胃。就目前而言,深度學(xué)習(xí)主要是與人工神經(jīng)網(wǎng)絡(luò)相結(jié)合的畦浓,因此這里的深度學(xué)習(xí)算法框架也可以成為深度神經(jīng)網(wǎng)絡(luò)算法框架痹束。
深度學(xué)習(xí)通過構(gòu)建深層神經(jīng)網(wǎng)絡(luò),來模擬人類大腦的工作原理讶请。如下圖所示祷嘶,深層神經(jīng)網(wǎng)絡(luò)由一個(gè)輸入層,數(shù)個(gè)隱層夺溢,以及一個(gè)輸出層構(gòu)成论巍。每層有若干個(gè)神經(jīng)元,神經(jīng)元之間有連接權(quán)重风响。每個(gè)神經(jīng)元模擬人類的神經(jīng)細(xì)胞嘉汰,而結(jié)點(diǎn)之間的連接模擬神經(jīng)細(xì)胞之間的連接。深度學(xué)習(xí)框架的基本結(jié)構(gòu)如下圖3所示钞诡。

圖3 深度學(xué)習(xí)的基礎(chǔ)框架

1. 深度學(xué)習(xí)的實(shí)現(xiàn)過程

機(jī)器學(xué)習(xí)的過程就是相當(dāng)于尋找一個(gè)通用函數(shù)(變換)的過程郑现。如:
語音識(shí)別,就是將一連串的語音信號(hào)作為自變量荧降,通過一個(gè)函數(shù)接箫,轉(zhuǎn)換為一個(gè)自然語句:


  圖像識(shí)別,就是將給定的一個(gè)圖片作為自變量朵诫,通過一個(gè)函數(shù)辛友,轉(zhuǎn)換為一個(gè)具體的圖片描述:


  Alpha Go的輸入的是一個(gè)棋局作為自變量,通過一個(gè)函數(shù),輸出為下一步的走法:

  像sari這種對(duì)話系統(tǒng)废累,將用戶說的話通過一個(gè)函數(shù)邓梅,去查找相對(duì)應(yīng)的輸出,作為系統(tǒng)應(yīng)答:


  我們就圖像識(shí)別應(yīng)用邑滨,來直觀地了解深度學(xué)習(xí)的一般框架日缨,如下圖所示。簡單地說掖看,深度學(xué)習(xí)過程就是選擇一個(gè)最佳函數(shù)的過程匣距,也可以說成為函數(shù)尋找最佳參數(shù)的過程。如下圖左所示哎壳,深度學(xué)習(xí)過程主要分為三步:
  1. 輸入一系列的函數(shù)作為待訓(xùn)練模型
  2. 評(píng)價(jià)各個(gè)函數(shù)的好壞毅待,使用誤差率作為標(biāo)準(zhǔn)
  3. 通過每個(gè)函數(shù)的輸出與正確的結(jié)果對(duì)比,來選擇最佳的匹配函數(shù)归榕。下面分別介紹下每一步所做的工作尸红。

圖4 深度學(xué)習(xí)的一般流程

1.1 定義一系列的函數(shù)作為待訓(xùn)練模型

神經(jīng)網(wǎng)絡(luò)中一個(gè)神經(jīng)元就相當(dāng)于一個(gè)簡單的線性函數(shù),線性函數(shù)的定義如下:


  其中刹泄,w1…wk就是作為函數(shù)的參數(shù)外里,也是神經(jīng)元每個(gè)輸入的權(quán)重值,b作為函數(shù)的偏移量循签。神經(jīng)元的結(jié)構(gòu)如下圖5所示级乐。途中除了函數(shù)的定義中存在的權(quán)重值w和偏移量b以外,還存在一個(gè)激活函數(shù)县匠。

圖5 神經(jīng)元的結(jié)構(gòu)圖

  激活函數(shù)是用來引入非線性因素的风科。網(wǎng)絡(luò)中僅有線性模型的話,表達(dá)能力不夠乞旦。比如一個(gè)多層的線性網(wǎng)絡(luò)贼穆,其表達(dá)能力和單層的線性網(wǎng)絡(luò)是相同的。常見的激活函數(shù)有sigmod函數(shù)兰粉,relu函數(shù)和tanh函數(shù)故痊。

1.2 確定函數(shù)好壞的方法

下圖6所示為使用深度學(xué)習(xí)來訓(xùn)練給定的一張數(shù)字圖像所代表的實(shí)際數(shù)字的例子。給定一張2的數(shù)字圖像作為輸入玖姑,輸入層為256個(gè)像素點(diǎn)愕秫,而輸出層則為0-9這10個(gè)數(shù)字對(duì)應(yīng)的softmax值,根據(jù)softmax值的大小來選擇最優(yōu)的結(jié)果作為輸出焰络。

圖6深度學(xué)習(xí)實(shí)例

  Softmax回歸模型是logistic回歸模型在多分類問題上的推廣戴甩,在多分類問題中,待分類的類別數(shù)量大于2闪彼,且類別之間互斥甜孤。比如我們的網(wǎng)絡(luò)要完成的功能是識(shí)別0-9這10個(gè)手寫數(shù)字,若最后一層的輸出為[0,0.7,0.2, 0.1, 0, 0, 0, 0, 0, 0],則表明我們網(wǎng)絡(luò)的識(shí)別結(jié)果為數(shù)字1缴川。
  一個(gè)好的函數(shù)應(yīng)該能夠保證對(duì)于整個(gè)樣本集作為輸入茉稠,輸出的總誤差是盡可能小的,誤差可以表示為計(jì)算的輸出值和真實(shí)值之間的距離把夸。如下圖7所示而线,針對(duì)下圖神經(jīng)網(wǎng)絡(luò),每個(gè)輸出的誤差可以用來計(jì)算結(jié)果值和實(shí)際值之間的差來表示扎即。

圖7 誤差計(jì)算圖

總誤差L等于多個(gè)輸出誤差之和吞获,用下面的公式表示:

1.3 挑選最佳函數(shù)的方法

要在一系列的函數(shù)中尋找最佳的函數(shù)况凉,也就是總的誤差最小的函數(shù)谚鄙,就是為這個(gè)函數(shù)尋找最佳的參數(shù),在神經(jīng)網(wǎng)絡(luò)中稱為權(quán)重值刁绒。對(duì)于下圖8一個(gè)擁有三個(gè)輸入神經(jīng)元的兩層前反饋全連接神經(jīng)網(wǎng)絡(luò)來講闷营,光是第一層就有9個(gè)權(quán)重值,若輸入神經(jīng)元1000知市,那光這一層神經(jīng)網(wǎng)絡(luò)就有1000000個(gè)權(quán)重值傻盟。

圖 8 簡單的三層深度神經(jīng)網(wǎng)絡(luò)

  因此枚舉出所有可能的值并從中選擇一組最優(yōu)的權(quán)重值是不可能的,那么如何找到一個(gè)最優(yōu)的參數(shù)值嫂丙,使得結(jié)果的誤差總和最小呢娘赴,深度學(xué)習(xí)中采用的是梯度下降法,如下圖9所示跟啤。這里假設(shè)橫坐標(biāo)為權(quán)重值w诽表,w是一個(gè)m*1的矩陣。對(duì)于單連接網(wǎng)絡(luò)隅肥,m代表神經(jīng)元的個(gè)數(shù)竿奏,對(duì)于全連接網(wǎng)絡(luò),m代表神經(jīng)元個(gè)數(shù)的平方腥放,縱坐標(biāo)為總的誤差值L泛啸,w和L的關(guān)系可用一條不規(guī)則的曲線表示。尋找最佳w的計(jì)算過程如下:
  1.首先秃症,初始化權(quán)重w
  2.然后,計(jì)算每個(gè)神經(jīng)元輸出的總的誤差值候址,計(jì)算誤差值對(duì)權(quán)重值的偏導(dǎo) 數(shù),也就是下圖曲線的斜率种柑。
  3.如果偏導(dǎo)數(shù)小于零岗仑,說明曲線處于下降趨勢(shì),即隨著w的增加莹规,誤差在減少赔蒲,因此這時(shí)需要繼續(xù)增加w的值。
  4.如果偏導(dǎo)數(shù)大于零,說明曲線處于上升趨勢(shì)舞虱,即隨著w的增加欢际,誤差在增大,因此這時(shí)需要減少w的值矾兜,
  5.回到步驟2损趋,重復(fù)以上過程,直到偏導(dǎo)數(shù)趨近于零椅寺,也就是處于說在一定的范圍內(nèi)浑槽,誤差L相對(duì)于w處于最小值狀態(tài),此時(shí)的w可作為較優(yōu)的一組參數(shù)返帕。

圖9 梯度下降尋找最佳參數(shù)值

  如下圖10桐玻,對(duì)于權(quán)重矩陣θ,使用梯度下降法去尋找較優(yōu)權(quán)重值的計(jì)算過程荆萤。如下圖左镊靴,對(duì)于θ中的每一個(gè)權(quán)值,計(jì)算總誤差相對(duì)于此權(quán)值的偏導(dǎo),如下圖右。

圖10 權(quán)值更新過程

  如果這個(gè)偏導(dǎo)值小于零硬纤,新的權(quán)重值

  使用梯度下降法尋找最優(yōu)權(quán)重值的較為形象的過程如下圖11。此圖近似為一個(gè)山的等高線踊谋,海拔越低代表總的誤差越小。要想找到最優(yōu)解旋讹,首先我們選定一個(gè)初始的下山位置殖蚕,然后通過偏導(dǎo)計(jì)算我們現(xiàn)在是處于上山還是下山方向,如果是下上方向骗村,則選擇一個(gè)步長繼續(xù)下山嫌褪,直到每一次處于上山方向,就代表我們已經(jīng)找到山腳胚股。

圖11 梯度下降

2. 構(gòu)建一個(gè)簡單的深度學(xué)習(xí)模型

下面我們通過創(chuàng)建一個(gè)簡單的深度學(xué)習(xí)框架模型笼痛,這里我們使用keras,建立在TensorFlow和Theano深度學(xué)習(xí)框架之上的一個(gè)較容易上手的深度學(xué)習(xí)框架琅拌。我們使用keras自帶的一個(gè)例子mnist_mlp.py進(jìn)行深度學(xué)習(xí)模型的創(chuàng)建缨伊。根據(jù)上述介紹可知,創(chuàng)建過程主要分為三步:
  1. 定義深度神經(jīng)網(wǎng)絡(luò)模型进宝,相當(dāng)于定義一系列的函數(shù)刻坊,如下圖12所示。模型類型為sequential(線性疊加模型)党晋,線性疊加模型就是把每一層按照次序疊加起來谭胚,每層之間采用全連接方式徐块。創(chuàng)建的神經(jīng)網(wǎng)絡(luò)有三層,add是往model里添加層灾而,輸入為2828的矩陣胡控,輸出結(jié)果為110的矩陣,前兩層使用的激活函數(shù)是sigmod旁趟,最后挨著輸出層使用的激活函數(shù)為softmax昼激。

圖12 初始化神經(jīng)網(wǎng)絡(luò)模型

2. 評(píng)價(jià)各個(gè)函數(shù)的好壞,計(jì)算訓(xùn)練值和真實(shí)值之間的誤差锡搜,如下圖13所示橙困。這里損失函數(shù)使用mse。

圖13 制定誤差函數(shù)

  3. compile用來在模型編譯的時(shí)候配置損失函數(shù)耕餐、優(yōu)化器以及正確率函數(shù)凡傅。fit是用來訓(xùn)練一個(gè)固定迭代次數(shù)的模型。x_train為訓(xùn)練樣本集就是手寫的數(shù)字圖片蛾方,y_train是訓(xùn)練樣本的結(jié)果集像捶,這里是指樣本集的標(biāo)簽,batch_size為每次訓(xùn)練和梯度更新塊的大小桩砰,nb_epoch為迭代次數(shù)。

圖14 挑選最佳函數(shù)

訓(xùn)練好模型后释簿,需要測(cè)試模型的準(zhǔn)確率亚隅,使用evaluate函數(shù),如下圖15庶溶。

圖15 測(cè)試訓(xùn)練模型

執(zhí)行過程如下幾張截圖煮纵,由下圖16輸出可看到底層調(diào)用的是TensorFlow框架,而且訓(xùn)練樣本集有60000個(gè)訓(xùn)練樣本偏螺,測(cè)試樣本集有10000個(gè)測(cè)試樣本行疏。

圖16 開始訓(xùn)練輸出

從下圖可以看出這個(gè)深度學(xué)習(xí)模型有三層,總共的參數(shù)有669706個(gè)套像。如下圖17所示酿联。


圖17 輸出模型信息

  訓(xùn)練數(shù)據(jù)迭代次數(shù)為20次,顯示每次迭代的誤差率和準(zhǔn)確率如下圖:

圖18 顯示迭代次數(shù)夺巩、誤差率及準(zhǔn)確率

3.總結(jié)

本文首先講述了深度學(xué)習(xí)的一般過程贞让,接著介紹了如何使用keras框架構(gòu)建一個(gè)簡單的三層深度學(xué)習(xí)模型,適合深度學(xué)習(xí)的初學(xué)者入門柳譬。另外喳张,使用keras構(gòu)建深度學(xué)習(xí)模型的好處就是簡單容易實(shí)現(xiàn),但卻隱藏了底層的實(shí)現(xiàn)細(xì)節(jié)美澳。如果想清楚底層的實(shí)現(xiàn)的話销部,建議使用TensorFlow框架來構(gòu)建深度學(xué)習(xí)模型摸航。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市舅桩,隨后出現(xiàn)的幾起案子忙厌,更是在濱河造成了極大的恐慌,老刑警劉巖江咳,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逢净,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡歼指,警方通過查閱死者的電腦和手機(jī)爹土,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來踩身,“玉大人胀茵,你說我怎么就攤上這事⌒瑁” “怎么了琼娘?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長附鸽。 經(jīng)常有香客問我脱拼,道長,這世上最難降的妖魔是什么坷备? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任熄浓,我火速辦了婚禮,結(jié)果婚禮上省撑,老公的妹妹穿的比我還像新娘赌蔑。我一直安慰自己,他們只是感情好竟秫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布娃惯。 她就那樣靜靜地躺著,像睡著了一般肥败。 火紅的嫁衣襯著肌膚如雪趾浅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天拙吉,我揣著相機(jī)與錄音潮孽,去河邊找鬼。 笑死筷黔,一個(gè)胖子當(dāng)著我的面吹牛往史,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播佛舱,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼椎例,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼挨决!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起订歪,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤脖祈,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后刷晋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盖高,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年眼虱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了喻奥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡捏悬,死狀恐怖撞蚕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情过牙,我是刑警寧澤甥厦,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站寇钉,受9級(jí)特大地震影響刀疙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜摧莽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一庙洼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧镊辕,春花似錦、人聲如沸蚁袭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽揩悄。三九已至卖哎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間删性,已是汗流浹背亏娜。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蹬挺,地道東北人维贺。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像巴帮,于是被迫代替她去往敵國和親溯泣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子虐秋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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