深入學(xué)習(xí)(DL)可能是當(dāng)前最熱門的技術(shù)熱點(diǎn)之一了。下面是俺看到的一篇文章,簡(jiǎn)單介紹深度學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)的基本原理。
最近開始學(xué)習(xí)深度學(xué)習(xí)Deep Learning,總體感覺是一種新的算法革命,因?yàn)樯疃葘W(xué)習(xí)算法不僅帶來新領(lǐng)域問題解決的突破,同時(shí)類似卷積神經(jīng)網(wǎng)絡(luò)算法本身也有一種普世建模思想,帶來全新的方法論變革!很多大型公司和創(chuàng)新企業(yè)都涉足深度學(xué)習(xí)和人工智能AI領(lǐng)域。
當(dāng)然,深度學(xué)習(xí)的核心依然是大數(shù)據(jù)的特征,如果你認(rèn)為大數(shù)據(jù)很重要,那么你應(yīng)該關(guān)心深入學(xué)習(xí)。
“經(jīng)濟(jì)學(xué)人”說,數(shù)據(jù)是二十一世紀(jì)的新石油。如果數(shù)據(jù)是原油,數(shù)據(jù)庫和數(shù)據(jù)倉庫是在互聯(lián)網(wǎng)上挖掘和抽取數(shù)據(jù)的采油機(jī),那么深度學(xué)習(xí)視為煉油廠,最終將原油轉(zhuǎn)化為有用和有價(jià)值的產(chǎn)品。地下藏有很多“石化燃料”,市場(chǎng)上還有很多鉆機(jī)和水泵,但沒有正確的煉油工具,您就不會(huì)提煉有價(jià)值的東西,這就是深入學(xué)習(xí)的重要原因。
今天,用戶在線行為,做任何事都會(huì)產(chǎn)生數(shù)據(jù)。與石油不同,數(shù)據(jù)是“可持續(xù)的”,并且“爆炸式”地增長(zhǎng)。好消息是,隨著數(shù)據(jù)的不斷增長(zhǎng),我們的“煉油機(jī)”——深度學(xué)習(xí)算法越來越好,特別是得益于GPU運(yùn)算能力和Google開源了度學(xué)習(xí)的算法庫,例如:Tensorflow等。
理論上說:只要數(shù)據(jù)不是垃圾,那么深入學(xué)習(xí)就不會(huì)有垃圾,因此,數(shù)據(jù)越多越好。
深度學(xué)習(xí)算法在過去幾十年中有所改善,特別是近一年有了突破性變革,主要是開源庫、GPU等算法優(yōu)化。開發(fā)人員已經(jīng)TensorFlow,Theano,Keras這樣的開源框架做出了貢獻(xiàn),都使我們可以輕松構(gòu)建深度學(xué)習(xí)算法,就像使用樂高零件一樣。而且由于世界各地玩家的需求,GPU(圖形處理單元)使我們有可能利用深度學(xué)習(xí)算法,以高效的方式構(gòu)建和訓(xùn)練具有令人印象深刻結(jié)果的模型!
深度學(xué)習(xí)逐漸熱起來得益于DeepMind公司設(shè)計(jì)的AlphaGo戰(zhàn)勝了世界圍棋高手。你可能已經(jīng)閱讀了這個(gè)消息,并且知道深度學(xué)習(xí)是很多令人興奮技術(shù)領(lǐng)域發(fā)展秘訣,有很多瘋狂的夢(mèng)想也許成真。
不知您最近感覺到?jīng)]有,google的網(wǎng)頁翻譯已經(jīng)可以自動(dòng)翻譯網(wǎng)頁沒有閱讀障礙。人工智能的發(fā)展得益于深度學(xué)習(xí)計(jì)算的強(qiáng)大和解決方案:
人臉識(shí)別技術(shù)
自動(dòng)駕駛技術(shù)
識(shí)別手寫數(shù)字和文本
視頻和圖像識(shí)別和分類技術(shù)
視頻內(nèi)容和語音實(shí)時(shí)文本
語音識(shí)別技術(shù)
語言自動(dòng)翻譯
自然語言處理
游戲玩家
人造智能(AI),機(jī)器學(xué)習(xí)(ML)和深度學(xué)習(xí)(DL)在微博微信都是熱點(diǎn),他們之間區(qū)別是什么?
人工智能AI:你可能知道圖靈測(cè)試:一臺(tái)電腦通過圖靈測(cè)試,如果一個(gè)人在向計(jì)算機(jī)提出一些書面問題之后,無法判斷書面答復(fù)是來自一個(gè)人還是計(jì)算機(jī)。
Peter Norvig和Stuart Russell定義了計(jì)算機(jī)為了通過圖靈測(cè)試而必須指定的4種能力:
自然語言處理:以英文成功溝通
知識(shí)表示:存儲(chǔ)計(jì)算機(jī)讀取的知識(shí)內(nèi)容
自動(dòng)推理:使用存儲(chǔ)的知識(shí)回答問題,并得出新的結(jié)論
機(jī)器學(xué)習(xí):適應(yīng)新情況,識(shí)別新模式
機(jī)器學(xué)習(xí)ML:是關(guān)于采用自動(dòng)或半自動(dòng)方法,采用線性回歸,KNN,K-Means,決策樹,隨機(jī)森林和SVM訓(xùn)練數(shù)據(jù)集的一系列學(xué)習(xí)算法,通過ML建模,算法可以學(xué)習(xí)并適應(yīng)新的情況,找到可能有趣和重要的模式、趨勢(shì)或相關(guān)性。ML是數(shù)據(jù)驅(qū)動(dòng)的,機(jī)器學(xué)習(xí)算法有很多奇怪的術(shù)語,需要慢慢學(xué)習(xí)。
監(jiān)督類學(xué)習(xí):對(duì)于訓(xùn)練ML,數(shù)據(jù)集可以被標(biāo)注,例如它附有“已知結(jié)果或答案”,告訴計(jì)算機(jī)正確的答案是什么,例如:哪些電子郵件是垃圾郵件,哪些不是;流失或在網(wǎng)等,被稱為監(jiān)督學(xué)習(xí),并且諸如線性回歸、logistics回歸和KNN的算法用于這種監(jiān)督回歸或分類。
非監(jiān)督類學(xué)習(xí):數(shù)據(jù)集可能不被標(biāo)記,你是從字面上講的算法,如K-Mean,關(guān)聯(lián)或Cluster集群模式,它發(fā)現(xiàn)沒有任何的答案,這被稱為無監(jiān)督學(xué)習(xí)。
深度學(xué)習(xí)DL:計(jì)算機(jī)需要能夠完成計(jì)算機(jī)視覺:感知周圍的物體;能夠讓計(jì)算機(jī)控制機(jī)器人:操縱物體并移動(dòng)。像臉部識(shí)別或手寫文字識(shí)別這樣的事情與計(jì)算機(jī)視覺有關(guān),需要將圖形輸入計(jì)算機(jī)進(jìn)行分析。語言翻譯或語音識(shí)別等其他任務(wù)與自然語言處理(NLP)有關(guān)。所以DL是ML的一個(gè)分支,因?yàn)樗€有一套可以訓(xùn)練和學(xué)習(xí)數(shù)據(jù)的學(xué)習(xí)算法,更具體地說DL由神經(jīng)網(wǎng)絡(luò)提供支持。此外,DL實(shí)際上可以在機(jī)器學(xué)習(xí)區(qū)域之外執(zhí)行,并協(xié)助其他領(lǐng)域,如計(jì)算機(jī)視覺和NLP,支持人工智能AI的實(shí)現(xiàn)!
神經(jīng)網(wǎng)絡(luò):什么是神經(jīng)網(wǎng)絡(luò)算法呢?它是否模仿實(shí)際神經(jīng)元細(xì)胞的行為?還是某種神奇的黑盒子?形象說神經(jīng)網(wǎng)絡(luò)確實(shí)類比人的神經(jīng)網(wǎng)絡(luò),通過刺激神經(jīng)末梢不斷反饋后,人們就有了感知,也就學(xué)會(huì)了,成為一種感知器。
感知器:盡管其新發(fā)現(xiàn)的名聲,神經(jīng)網(wǎng)絡(luò)領(lǐng)域根本不是新鮮事物。1958年,美國(guó)心理學(xué)家弗蘭克·羅森布拉特(Frank Rosenblatt)試圖建立“ 感覺,認(rèn)識(shí),記憶和回應(yīng)人類心靈的機(jī)器”,并將機(jī)器稱為感知器。
對(duì)于機(jī)器來模擬人類神經(jīng)系統(tǒng)的感知器類似于:
現(xiàn)在,上面感知器的圖看起來如何工作的,其實(shí)很像前面的神經(jīng)細(xì)胞圖。感知器和其他神經(jīng)網(wǎng)絡(luò)受到我們大腦中真實(shí)神經(jīng)元的啟發(fā)。注意它只是靈感,不能像真正的神經(jīng)元一樣工作。
感知器處理數(shù)據(jù)的過程如下:
在左側(cè),您有x的神經(jīng)元(小圓圈),下標(biāo)1,2,...,m攜帶數(shù)據(jù)輸入。
我們將每個(gè)輸入乘以一個(gè)權(quán)重 w,也標(biāo)記為下標(biāo)1,2,...,m,沿箭頭(也稱為突觸)到中間的大圓。所以w1 * x1,w2 * x2,w3 * x3等等。
一旦所有的輸入乘以一個(gè)權(quán)重,我們將它們?nèi)考悠饋?,并添加另一個(gè)稱為偏差的預(yù)定數(shù)字。
然后,我們把結(jié)果推到右邊?,F(xiàn)在,我們?cè)诰匦沃杏羞@個(gè)step函數(shù)。這意味著如果步驟3的結(jié)果是等于或大于0的任何數(shù)字,那么我們得到1作為輸出,否則如果結(jié)果小于0,我們將get=0作為輸出。
結(jié)果:輸出為1或0。
請(qǐng)注意,如果在激活函數(shù)中將偏差移動(dòng)到激活函數(shù)的右側(cè),如sum(wx)≥-b,那么這個(gè)-b稱為閾值。因此,如果輸入和權(quán)重的總和大于或等于閾值,則激活觸發(fā)1。否則,激活結(jié)果為0。選擇哪種方法幫助您更好地理解,其實(shí)這兩種表示方式是可互換的。
下面添加另一個(gè)感知器圖,這一次每一步用不同顏色。非常重要的是,您完全了解它并記住每一步中發(fā)生的情況,當(dāng)我們討論更復(fù)雜的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)時(shí),將忽略圖形中的中間步驟:
為了理解感知器,我們來看一個(gè)不一定是現(xiàn)實(shí)但非常簡(jiǎn)單的例子。
假設(shè)下面因素決定你是否想學(xué)深度學(xué)習(xí),有三個(gè)因素影響您的決定:
掌握DL后可以賺更多的錢(是的,1,否:0)
相關(guān)數(shù)學(xué)和編程是否容易(是的:1,否:0)
您可以立即使用DL,而不需要昂貴的GPU(是的,1,否:0)
我們使用x1,x2和x3作為每個(gè)因素的輸入變量,并為每個(gè)因素分配一個(gè)二進(jìn)制值(1或0),因?yàn)榇鸢钢皇恰笆恰被颉胺瘛?。假設(shè)你真的很喜歡DL,你愿意克服你對(duì)數(shù)學(xué)和編程的一生的恐懼。而且您也有一些儲(chǔ)蓄現(xiàn)在投入昂貴的Nvidia GPU來訓(xùn)練您的DL型號(hào)。假設(shè)這兩個(gè)因素同樣不那么重要,但是,在學(xué)習(xí)DL之后花費(fèi)了大量的時(shí)間和精力,您真的想要賺更多的錢。
所以對(duì)投資回報(bào)的期望很高,如果你以后不能賺更多的錢,你不會(huì)浪費(fèi)你在DL上的寶貴時(shí)間。
為了了解您的決策偏好,讓我們假設(shè)您在學(xué)習(xí)DL后有100%獲得更多收益的概率,因?yàn)槭袌?chǎng)需求很少。所以x1 = 1。讓我們說數(shù)學(xué)和編程是超級(jí)難。所以x2 = 0。最后,假設(shè)你必須擁有像Titan X這樣的強(qiáng)大的GPU,所以x3 = 0。好的,我們已經(jīng)準(zhǔn)備好了輸入,也可以初始化權(quán)重。
我們?cè)O(shè)定權(quán)重:w1 = 6,w2 = 2,w3 = 2。重量越大,相應(yīng)輸入的影響越大。所以,因?yàn)槟阕钪匾晵赍X來決定學(xué)習(xí)DL,w1> w2和w1> w3。
我們假設(shè)閾值閾值為5,這相當(dāng)于偏置項(xiàng)偏差為-5。我們加上這一切,加上偏見標(biāo)準(zhǔn)檢驗(yàn)。
檢查以下內(nèi)容以確定您是否使用感知器來學(xué)習(xí)DL。
注意閾值為5,如果你想賺更多錢,就要學(xué)習(xí)深入學(xué)習(xí)技術(shù)。這兩個(gè)數(shù)學(xué)公式都很簡(jiǎn)單(x2 = 1),并且您不需要花錢購(gòu)買GPU(x3 = 1),如果以后無法賺取更多的錢,您仍然不會(huì)學(xué)習(xí)DL,見下圖:
現(xiàn)在你知道偏差/閾值的技巧。這個(gè)5的高閾值意味著您的主導(dǎo)因素必須滿足感知器觸發(fā)1的輸出,否則,輸出將為0。
有趣的事情:改變權(quán)重和閾值/偏差將導(dǎo)致不同的可能決策模型。因此,如果我們降低從閾值的閾值= 5至閾值= 3,則我們有更多的可能的方案的輸出為1。現(xiàn)在,最低要求用于輸出= 1是:
情景1: 你以后會(huì)賺更多的錢,所以x1 = 1保證您決定學(xué)習(xí)DL, 無論x2和x3的值如何
情景2: 數(shù)學(xué)很簡(jiǎn)單,您不需要購(gòu)買GPU,所以x2 = x3 = 1也保證您決定學(xué)習(xí)DL, 而不管x1的值如何
下面是說明:
前面簡(jiǎn)單的例子可以幫助您了解感知器如何學(xué)習(xí)?,F(xiàn)在,我們用這個(gè)例子與輸入和權(quán)重一起來說明單層感知器,盡管有限制可以實(shí)現(xiàn)它。
在一個(gè)真正的DL模型中,我們給出了輸入數(shù)據(jù),我們并不能改變。同時(shí),在訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型之前,偏置項(xiàng)被初始化,假設(shè)我們假設(shè)偏差為7。
現(xiàn)在,我們假設(shè)以下輸入數(shù)據(jù),假設(shè)情景:1-你會(huì)賺更多的錢;2-DL的數(shù)學(xué)和編程將是困難的;3-你必須花費(fèi)1400美元才能使用GPU來工作在DL上。
最重要的是,我們假設(shè)你實(shí)際上想要學(xué)習(xí)深入學(xué)習(xí),我們將它作為理想的感知器正確預(yù)測(cè)或確定理想的輸出:
我們進(jìn)一步假設(shè)權(quán)重初始值:
輸入數(shù)據(jù),偏差loss和輸出標(biāo)簽:
當(dāng)然神經(jīng)網(wǎng)絡(luò)的實(shí)際輸出與您想要學(xué)習(xí)DL的真正決定有所不同。那么,由于實(shí)際和期望的輸出之間的差異,神經(jīng)網(wǎng)絡(luò)應(yīng)該如何幫助自己學(xué)習(xí)和改進(jìn)呢?
我們不能改變輸入數(shù)據(jù),現(xiàn)在我們已經(jīng)初始化了我們的偏差。所以我們唯一可以做的就是告訴感知器調(diào)整重量!如果我們告訴感知器將w1增加到7,而不改變w2和w3,那么:
調(diào)整權(quán)重是感知器學(xué)習(xí)過程的關(guān)鍵。具有分段函數(shù)的單層感知器可以利用下面列出的學(xué)習(xí)算法在處理每組輸入數(shù)據(jù)后調(diào)整權(quán)重。嘗試用這個(gè)算法更新權(quán)重:
我們完成了一個(gè)簡(jiǎn)單的有點(diǎn)不太現(xiàn)實(shí)的例子,其實(shí),我們不需要購(gòu)買一個(gè)帶GPU的電腦。如果您正在訓(xùn)練較小的數(shù)據(jù)集作為初學(xué)者,則很有可能不需要GPU。然而,當(dāng)您開始使用大量圖像文件訓(xùn)練更大的數(shù)據(jù)集時(shí),您可以使用AWS,Cloud google或者Google TPU等云服務(wù),而不是真正的去買GPU電腦。(我測(cè)試了一下,一個(gè)小時(shí)的成本大概1美金,不包括存儲(chǔ))。
此外,DL的數(shù)學(xué)原理不容易,但也不是不可逾越的。
大多數(shù)情況下,我們只需要掌握一些矩陣運(yùn)算和基本演算。但請(qǐng)記住,也不是什么很簡(jiǎn)單的事情,還需要有基于Python 的Numpy等數(shù)據(jù)預(yù)處理和計(jì)算能力。
激活函數(shù)不能是線性的,因?yàn)榫哂芯€性激活功能的神經(jīng)網(wǎng)絡(luò)只有一個(gè)隱含層,而不管其架構(gòu)如何復(fù)雜。網(wǎng)絡(luò)的輸入通常是線性變換(輸入*權(quán)重),但現(xiàn)實(shí)世界問題往往非線性的。為了使輸入數(shù)據(jù)非線性,我們使用稱為激活函數(shù)的非線性映射。
激活函數(shù)是確定特定神經(jīng)特征的存在的決策函數(shù)。它映射在0和1之間,其中零表示特征不存在,而1表示該特征存在。不幸的是,在權(quán)重中發(fā)生的小變化不能反映在激活值中,因?yàn)樗荒苋?或1。因此,非線性函數(shù)必須在該范圍之間是連續(xù)的并且可以區(qū)分。神經(jīng)網(wǎng)絡(luò)必須能夠從-∞到+∞的任何輸入,但是在某些情況下,它應(yīng)該能夠?qū)⑵溆成涞椒秶趝0,1}之間或{-1,1}之間的輸出 - 因此需要激活功能。
在激活函數(shù)中需要非線性,因?yàn)槠湓谏窠?jīng)網(wǎng)絡(luò)中的目的是通過權(quán)重和輸入的非線性組合產(chǎn)生非線性決策邊界。
下圖是卷積神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)模型:
俺邊學(xué)習(xí)邊分享!
改編原文:https://medium.com/towards-data-science/introducing-deep-learning-and-neural-networks-deep-learning-for-rookies-1-bd68f9cf5883
沈浩老師
大數(shù)據(jù)挖掘與社會(huì)計(jì)算實(shí)驗(yàn)室主任
中國(guó)市場(chǎng)研究行業(yè)協(xié)會(huì)會(huì)長(zhǎng)
聯(lián)系客服