發(fā)布時間:2024-01-24閱讀(9)

在介紹深度學習之前,先和大家介紹一下AI和Machine Learning,才能理清AI、Machine Learning、Deep Learning三者之間的關系。
1956年8月,在美國漢諾威小鎮(zhèn)的達特茅斯學院中,幾位科學家在會議上正式提出了“人工智能”這一概念,這一年也被稱為人工智能元年。在此之前,人類已經(jīng)制造出各類各樣的機器如汽車、飛機等,但這些機器都需要經(jīng)過人來操作使用,無法自己具備操作的能力。科學家探討能不能制造出一個可以像人類大腦的一樣思考的機器,擁有人類的智慧,這就是人工智能。
同時科學家們也對AI未來的發(fā)展暢想了三個階段:

大家在電影上看到的各種AI都是強人工智能,但目前我們仍處在弱人工智能階段,什么時候進入強人工智能階段未知。強人工智能階段,機器可以完美媲美人腦,像人類一樣有情感地、批判性地去思考。同時可以快速學習,擁有極強的自學能力。
那么如何實現(xiàn)人工智能了,實現(xiàn)人工智能的方法是什么了?
實現(xiàn)人工智能的方法我們統(tǒng)稱為“機器學習”。同樣是1956年的美國達特茅斯會議上,IBM的工程師Arthur Samuel正式提出了“Machine Learning”這個概念,1956年真的是特殊的一年。
機器學習既是一種實現(xiàn)AI的方法,又是一門研究如何實現(xiàn)AI的學科,你可以理解為和數(shù)學、物理一樣的學科。機器學習,簡單來說就是從歷史數(shù)據(jù)中學習規(guī)律,然后將規(guī)律應用到未來中。國內大家一致推薦的,南京大學周志華教授的機器學習教材西瓜書里面如此介紹機器學習。

機器學習是機器從歷史數(shù)據(jù)中學習規(guī)律,來提升系統(tǒng)的某個性能度量。其實人類的行為也是通過學習和模仿得來的,所以我們就希望計算機和人類的學習行為一樣,從歷史數(shù)據(jù)和行為中學習和模仿,從而實現(xiàn)AI。
簡單點講,大家從小到大都學習過數(shù)學,刷過大量的題庫。老師和我們強調什么?要學會去總結,從之前做過的題目中,總結經(jīng)驗和方法。總結的經(jīng)驗和方法,可以理解為就是機器學習產(chǎn)出的模型,然后我們再做數(shù)學題利用之前總結的經(jīng)驗和方法就可以考更高的分。有些人總結完可以考很高的分,說明他總結的經(jīng)驗和方法是對的,他產(chǎn)出的的模型是一個好模型。
既然有了機器學習這一方法論,科學家們基于這一方法論,慢慢開始提出了各類各樣的算法和去解決各種“智能”問題。就像在物理學領域,物理學家們提出了各種各樣的定理和公式,不斷地推動著物理學的進步。牛頓的三大定律奠定了經(jīng)典力學的基礎。而傳統(tǒng)機器學習的決策樹、貝葉斯、聚類算法等奠定了傳統(tǒng)機器學習的基礎。
但是隨著研究的不斷深入,傳統(tǒng)機器學
習算法在很多“智能”問題上效果不佳,無法實現(xiàn)真正的“智能”。就像牛頓三大定律,無法解釋一些天文現(xiàn)象。在1905年,愛因斯坦提出了“相對論”,解釋了之前牛頓三大定律無法解釋的天文現(xiàn)象。同樣2006年,加拿大多倫多大學教授Geoffrey Hinton對傳統(tǒng)的神經(jīng)網(wǎng)絡算法進行了優(yōu)化,在此基礎上提出了Deep Neural Network的概念,他們在《Science》上發(fā)表了一篇Paper,下面鏈接是那篇文章:http://www.cs.toronto.edu/~hinton/science.pdf
引起了Deep Learning在學術界研究的熱潮。2012年Geoffrey Hinton老爺子的課題組,在參加業(yè)界知名的ImageNet圖像識別大賽中,構建的CNN網(wǎng)絡AlexNet一舉奪得冠軍,且碾壓第二名(SVM方法)。也正是因為該比賽,Deep Learning引起了工業(yè)界的關注,迅速將Deep Learning引進到工業(yè)界的應用上。深度學習技術解決了很多傳統(tǒng)機器學習算法效果不佳的“智能”問題,尤其是圖片識別、語音識別和語義理解等。某種程度上,深度學習就是機器學習領域的相對論。
將人工智能和機器學習帶到了一個新高度的技術就是:Deep Learning。深度學習是一種機器學習的技術。
同時大家應該聽到過一大堆的“學習”名詞:機器學習、深度學習、強化學習等等。在這里面機器學習是“爸爸”,是父節(jié)點;其他都是它“兒子”,是子節(jié)點。AI、Machine Learning和Deep Learning的關系可以通過下圖進行描述。

讓機器實現(xiàn)人工智能是人類的一個美好愿景,而機器學習是實現(xiàn)AI的一種方法論,深度學習是該方法論下一種新的技術,在圖像識別、語義理解和語音識別等領域具有優(yōu)秀的效果。
那么深度學習到底是一門什么技術?“深度”到底代表什么?
二、深度學習與神經(jīng)網(wǎng)絡介紹深度學習就必須要介紹神經(jīng)網(wǎng)絡,因為深度學習是基于神經(jīng)網(wǎng)絡算法的,其實最開始只有神經(jīng)網(wǎng)絡算法,上文也提到2006年Geoffrey Hinton老爺子提出了Deep Learning,核心還是人工神經(jīng)網(wǎng)絡算法,換了一個新的叫法,最基本的算法沒有變。學過生物的都知道神經(jīng)網(wǎng)絡是什么?下圖是生物神經(jīng)網(wǎng)絡及神經(jīng)元的基本組成部分。

人類的大腦可以實現(xiàn)如此復雜的計算和記憶,就完全靠900億神經(jīng)元組成的神經(jīng)網(wǎng)絡。那么生物神經(jīng)網(wǎng)絡是如何運作的了?可以參照下圖:

通過神經(jīng)元接收外界信號,達到一定閾值,觸發(fā)動作電位,通過突觸釋放神經(jīng)遞質,可以是興奮或抑制,影響突觸后神經(jīng)元。通過此實現(xiàn)大腦的計算、記憶、邏輯處理等,進行做出一系列行為等。同時不斷地在不同神經(jīng)元之間構建新的突觸連接和對現(xiàn)有突觸進行改造,來進行調整。有時候不得不感嘆大自然的鬼斧神工,900億神經(jīng)元組成的神經(jīng)網(wǎng)絡可以讓大腦實現(xiàn)如此復雜的計算和邏輯處理。
科學家們從生物神經(jīng)網(wǎng)絡的運作機制得到啟發(fā),構建了人工神經(jīng)網(wǎng)絡。其實人類很多的發(fā)明都是從自然界模仿得來的,比如飛機和潛艇等。下圖是最經(jīng)典的MP神經(jīng)元模型,是1943年由科學家McCulloch和Pitts提出的,他們將神經(jīng)元的整個工作過程抽象為下述的模型。

現(xiàn)在我們知道了最簡單的神經(jīng)元模型了,我們如何使用該模型從歷史數(shù)據(jù)中進行學習,推導出相關模型了。我們使用上述MP模型學習一個最簡單的二分類模型。

如上圖,為了訓練簡單,我們訓練集里面只有兩條數(shù)據(jù)。同時激活函數(shù),我們也是最簡單的激活函數(shù),當φ(?) > 0時輸出為1,當φ(?) ≤ 0時輸出為0。然后對于參數(shù)的更新規(guī)則Updated Rule,我們使用的Sequential Delta learning rule和Back Propagation算法,該規(guī)則和算法不詳細介紹了,可以理解為就像物理、數(shù)學領域一些科學家發(fā)現(xiàn)的普適性定理和公式,已經(jīng)得到了證明,用就完事了。
因為Input只有1個值x_1,所以初始設定參數(shù)ω_1,同時還需要一個Bias,我們將Bias設定為ω_0。上述兩個參數(shù),我們需要從歷史數(shù)據(jù)中學習出來,但是最開始我們需要一個初始值,假設初始值為ω_1 = 2, ω_0 = 1.5 ;然后我們通過不斷地更新迭代最終ω_1和 ω_0 將穩(wěn)定在兩個固定的值,這就是我們最終通過一個簡單MP模型學習出來的參數(shù)。下圖是整個更新迭代學習的過程:

大家可以看到上圖最后一次循環(huán)ω已經(jīng)不再發(fā)生變化,說明[0.5,-1]就是最終我們學習出來的固定參數(shù)。那么上述整個過程就是一個通過神經(jīng)網(wǎng)絡MP模型學習的全過程。下圖是最終學習出來的Classifier分類器,我們帶入一個新的數(shù)據(jù),就可以進行Class預測了。

上文我們已經(jīng)介紹了人工神經(jīng)網(wǎng)絡經(jīng)典的MP模型,那么在深度學習里面我們使用的是什么樣的神經(jīng)網(wǎng)絡了,這個”深度“到底指的是什么了?其實就是如下圖所示的,輸入層和輸出層之間加更多的”Hidden Layer“隱藏層,加的越多越”深“。

最早的MP神經(jīng)網(wǎng)絡實際應用的時候因為訓練速度慢、容易過擬合、經(jīng)常出現(xiàn)梯度消失以及在網(wǎng)絡層次比較少的情況下效果并不比其他算法更優(yōu)等原因,實際應用的很少。中間很長一段時間神經(jīng)網(wǎng)絡算法的研究一直處于停滯狀態(tài)。人們也嘗試模擬人腦結構,中間加入更多的層”Hidden Layer“隱藏層,和人腦一樣,輸入到輸出中間要經(jīng)歷很多層的突觸才會產(chǎn)生最終的Output。加入更多層的網(wǎng)絡可以實現(xiàn)更加復雜的運算和邏輯處理,效果也會更好。
但是傳統(tǒng)的訓練方式也就是我Part 2.2里面介紹的:隨機設定參數(shù)的初始值,計算當前網(wǎng)絡的輸出,再根據(jù)當前輸出和實際Label的差異去更新之前設定的參數(shù),直到收斂。這種訓練方式也叫做Back Propagation方式。Back Propagation方式在層數(shù)較多的神經(jīng)網(wǎng)絡訓練上不適用,經(jīng)常會收斂到局部最優(yōu)上,而不是整體最優(yōu)。同時Back Propagation對訓練數(shù)據(jù)必須要有Label,但實際應用時很多數(shù)據(jù)都是不存在標簽的,比如人臉。
當人們加入更多的”Hidden Layer“時,如果對所有層同時訓練,計算量太大,根本無法訓練;如果每次訓練一層,偏差就會逐層傳遞,最終訓練出來的結果會嚴重欠擬合(因為深度網(wǎng)絡的神經(jīng)元和參數(shù)太多了)。
所以一直到2006年,Geoffrey Hinton老爺子提出了一種新的解決方案:無監(jiān)督預訓練對權值進行初始化 有監(jiān)督訓練微調。
歸納一下Deep Learning與傳統(tǒng)的神經(jīng)網(wǎng)絡算法最大的三點不同就是:
不管怎么樣Deep Learning也還是在傳統(tǒng)神經(jīng)網(wǎng)絡算法基礎上演變而來的,它還是一種基于神經(jīng)網(wǎng)絡的算法。
三、深度學習框架大家了解了深度學習和神經(jīng)網(wǎng)絡以后,相信大家也經(jīng)常聽到如下的英文單詞:Tensorflow、Caffe、Pytorch等,這些都是做什么的了。Tensorflow是Google旗下的開源軟件庫,里面含有深度學習的各類標準算法API和數(shù)據(jù)集等,Pytorch是Facebook旗下的開源機器學習庫,也包含了大量的深度學習標準算法API和數(shù)據(jù)集等。Caffe是賈揚清大神在UC Berkeley讀博士時開發(fā)的深度學習框架,2018年時并入到了Pytorch中。
因為深度學習發(fā)展至今,很多算法都已經(jīng)是通用的,而且得到過驗證的了。
那么有些公司就希望將一些標準算法一次性開發(fā)好,封裝起來,后面再使用時直接調用引入即可,不需要再寫一遍。就像大家小時候學習英文一樣,英文字典有牛津版本的,也有朗文版本的。對于收錄的英文單詞,英文單詞如何使用,如何造句等,已經(jīng)有了標準的用法。我們只需要查閱這些字典即可,而Tensorflow、Caffe、Pytorch做的其實也就是計算機屆的牛津、朗文英文大詞典。國內百度目前也有自己的深度學習框架Paddle-Paddle。
目前一般是學術界用Pytorch較多,Pytorch更適合新手入門,上手快。工業(yè)界用Tensorflow較多,更適合工業(yè)界的落地和部署等。
四、深度學習在工業(yè)界主要應用領域目前深度學習應用最廣泛的就是傳統(tǒng)機器學習算法解決不了的領域或者是效果不佳的領域:視覺、自然語言和語音識別領域。當樣本數(shù)量少的時候,傳統(tǒng)機器學習算法還可以通過一些結構化特征組合在一起然后區(qū)分出來。
比如區(qū)分汽車和摩托車,可以通過輪子數(shù)量。但對于人臉,千萬張人臉相似的太多,已經(jīng)完全無法通過鼻子、頭發(fā)、眼睛這些簡單的特征組合進行區(qū)分了。需要探索更多更復雜的特征,組合在一起才能將千萬張人臉區(qū)分開來。

所以這時候就需要Deep Learning構建多層神經(jīng)網(wǎng)絡,探索組合更多的特征,才能識別區(qū)分千萬級別甚至億萬級別的人臉。這在傳統(tǒng)神經(jīng)網(wǎng)絡算法和機器學習算法是完全實現(xiàn)不了的。
當然實現(xiàn)上述功能,也是因為現(xiàn)階段有了更多的數(shù)據(jù)可以進行訓練,同時有了更好的算力可以快速完成訓練。傳統(tǒng)的CPU進行訓練,可能訓練幾個月都訓練不出來結果。GPU的出現(xiàn)和改進加速了上述訓練過程。
目前應用最廣的一些領域:

本文由 @King James 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉載。
題圖來自 Unsplash,基于 CC0 協(xié)議
歡迎分享轉載→http://www.avcorse.com/read-236595.html
Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號-5 TXT地圖HTML地圖XML地圖