深度學習之概述(Overview)
原創(chuàng) 2017-10-11 HILL 滬江技術學院
作者: HILL
本文為原創(chuàng)文章涵防,轉(zhuǎn)載請注明作者及出
2016年被稱為人工智能的元年,2017年是人能智能應用的元年;深度學習技術和應用取得飛速發(fā)展;深度學習在互聯(lián)網(wǎng)教育場景也得到廣泛應用。本文主要介紹機器學習及深度學習之定義及基本概念跌穗、相關網(wǎng)絡結構等。
本文主要內(nèi)容包括機器學習的定義及組成分類虏辫、深度學習的定義蚌吸、深度學習和機器學習的區(qū)別、神經(jīng)網(wǎng)絡基本概念及基本結構砌庄、深度學習的相關核心概念(基本假設羹唠、數(shù)據(jù)集、表示娄昆、泛化佩微、容量、優(yōu)化萌焰、超參數(shù)哺眯、誤差、欠擬合扒俯、過擬合奶卓、正則化)、兩種典型深度網(wǎng)絡結構(CNN撼玄、RNN)基本介紹夺姑。
引言
人工智能究竟能夠做什么?對我們有什么影響掌猛?我們從下面兩張圖說起:圖1是工業(yè)革命時期的《紗廠女孩 Cotton Mill Girl》,說明了工業(yè)革命導致機器替代人的體力勞動盏浙,把大量人從繁重的體力勞動中解放出來,更多人從事思考的荔茬、創(chuàng)新的废膘、科學工作,生產(chǎn)力大大提高慕蔚;圖2說明了在人工智能時代丐黄,通過算法和計算力代替人類思考,把人類從重復性的腦力勞動解放出來坊萝,再次解放生產(chǎn)力孵稽,使生產(chǎn)力得到提高和飛躍。
圖1
圖2
關于機器學習
機器學習是機器通過統(tǒng)計學算法十偶,對大量的歷史數(shù)據(jù)進行學習規(guī)律從而生成經(jīng)驗模型菩鲜,利用經(jīng)驗模型對新的樣本做出智能識別或?qū)ξ磥碜龀鲱A測,從而指導業(yè)務惦积。機器學習嚴格定義為:不顯式編程地賦予計算機能力的研究領域接校。機器學習的組成是有數(shù)據(jù)、算法、模型構成的蛛勉,數(shù)據(jù)+算法生成模型鹿寻,通過進行預測和模式識別,進而提供智能化的服務和產(chǎn)品诽凌;參考圖3:機器學習和烹飪的形象對比毡熏,更好理解機器學習。
圖3
機器學習算法分類方式包括學習方式侣诵、算法的類似性兩種分類方式痢法。
學習方式
通過學習方式將機器學習算法進行分類,主要包括:監(jiān)督式學習杜顺、非監(jiān)督式學習财搁、半監(jiān)督式學習、強化學習躬络。
- 監(jiān)督式學習
在監(jiān)督式學習方式下尖奔,輸入數(shù)據(jù)被稱為訓練數(shù)據(jù),每組訓練數(shù)據(jù)有一個明確的表示或結果(Label)穷当;在建立預測模型的時候提茁,監(jiān)督學習建立一個學習過程,將預測結果與訓練數(shù)據(jù)的實際結果進行比較膘滨,不斷的調(diào)整預測模型甘凭,直到模型的預測結果達到一個預期的準確率稀拐。常見應用場景如分類問題和回歸問題火邓。參見算法如邏輯回歸(Logistic Regression)、反向傳播神經(jīng)網(wǎng)絡(Back Propagation Neural Network)德撬。 - 非監(jiān)督式學習
在非監(jiān)督式學習中铲咨,數(shù)據(jù)并不被標識,學習模型為為了推斷出數(shù)據(jù)的一些內(nèi)在結構蜓洪。常見應用場景有關聯(lián)規(guī)則的學習以及聚類等纤勒。常見算法有Apriori算法、K-Means算法隆檀。 - 半監(jiān)督式學習
在半監(jiān)督式學習方式下摇天,輸入數(shù)據(jù)部分被標識,部分沒有被標識恐仑,模型首先需要學習數(shù)據(jù)的內(nèi)在結構以便合理的組織數(shù)據(jù)來進行預測泉坐;算法包括一些對常用監(jiān)督學習算法的延伸,算法首先試圖對為標記數(shù)據(jù)進行建模裳仆,在此基礎上對標記數(shù)據(jù)進行預測腕让。算法例如圖論推理算法(Graph Inference)、拉普拉斯支持向量機(Laplacian SVM)等歧斟。 - 強化學習
在強化學習模式下纯丸,輸入數(shù)據(jù)作為對模型的反饋偏形,不像監(jiān)督模型那樣,輸入數(shù)據(jù)僅僅是作為一個檢查模型對錯的方式觉鼻,在強化學習下俊扭,輸入數(shù)據(jù)直接反饋到模型,模型必須對此立刻作出調(diào)整坠陈。常見的應用場景包括動態(tài)系統(tǒng)以及機器人控制等统扳。常見算法包括Q-Learning以及時間差學習(Temporal difference learning)
算法類似性
根據(jù)算法的功能和形式的類似性對算法進行分類,例如:基于樹的算法畅姊、基于神經(jīng)網(wǎng)絡的算法等咒钟。 - 回歸算法
回歸算法是試圖采用對誤差的衡量來探索變量之間的關系的一類算法。常見算法包括:最小二乘法(Ordinary Least Square)若未,邏輯回歸(Logistic Regression)朱嘴,逐步式回歸(Stepwise Regression),多元自適應回歸樣條(Multivariate Adaptive Regression Splines)以及本地散點平滑估計(Locally Estimated Scatterplot Smoothing)等粗合。 - 基于實例的算法
基于實例的算法常常用來對決策問題建立模型萍嬉,這樣的模型常常先選取一批樣本數(shù)據(jù),然后根據(jù)某些近似性把新數(shù)據(jù)與樣本數(shù)據(jù)進行比較隙疚。通過這種方式來尋找最佳的匹配壤追。因此,基于實例的算法常常也被稱為“贏家通吃”學習或者“基于記憶的學習”供屉。常見的算法包括 k-Nearest Neighbor(KNN), 學習矢量量化(Learning Vector Quantization行冰, LVQ),以及自組織映射算法(Self-Organizing Map 伶丐, SOM) - 正則化方法
正則化方法通车孔觯回歸算法的延伸,根據(jù)算法的復雜度對算法進行調(diào)整哗魂,通常解決過擬合問題肛走,通過正則化項對簡單模型予以獎勵而對復雜算法予以懲罰。算法包括:Ridge Regression录别, Least Absolute Shrinkage and Selection Operator(LASSO)朽色,以及彈性網(wǎng)絡(Elastic Net)。 - 決策樹學習
決策樹算法根據(jù)數(shù)據(jù)的屬性采用樹狀結構建立決策模型组题, 決策樹模型常常用來解決分類和回歸問題葫男。常見的算法包括:分類及回歸樹(Classification And Regression Tree, CART)往踢, ID3 (Iterative Dichotomiser 3)腾誉, C4.5, Chi-squared Automatic Interaction Detection(CHAID), Decision Stump, 隨機森林(Random Forest), 多元自適應回歸樣條(MARS)以及梯度推進機(Gradient Boosting Machine利职,GBM)趣效。 - 基于核的方法
基于核的算法中最著名的是支持向量機(SVM)。 基于核的算法把輸入數(shù)據(jù)映射到一個高階的向量空間猪贪, 在這些高階向量空間里跷敬, 有些分類或者回歸問題能夠更容易的解決。 常見的基于核的算法包括:支持向量機(Support Vector Machine热押,SVM)西傀,徑向基函數(shù)(Radial Basis Function,RBF)桶癣, 以及線性判別分析(Linear Discriminate Analysis拥褂,LDA)等 - 聚類算法
聚類算法通常按照中心點或者分層的方式對輸入數(shù)據(jù)進行歸并。所有的聚類算法都試圖找到數(shù)據(jù)的內(nèi)在結構牙寞,以便按照最大的共同點將數(shù)據(jù)進行歸類饺鹃。常見的聚類算法包括 k-Means算法以及期望最大化算法(Expectation Maximization,EM)间雀。 - 關聯(lián)規(guī)則學習
關聯(lián)規(guī)則學習通過尋找最能夠解釋數(shù)據(jù)變量之間關系的規(guī)則悔详,來找出大量多元數(shù)據(jù)集中有用的關聯(lián)規(guī)則。常見算法包括 Apriori算法和Eclat算法等惹挟。 - 降低維度算法
降低維度算法試圖分析數(shù)據(jù)的內(nèi)在結構茄螃,不過降低維度算法是以非監(jiān)督學習的方式試圖利用較少的信息來歸納或者解釋數(shù)據(jù)。這類算法可以用于高維數(shù)據(jù)的可視化或者用來簡化數(shù)據(jù)以便監(jiān)督式學習使用连锯。常見的算法包括:主成份分析(Principle Component Analysis归苍, PCA),偏最小二乘回歸(Partial Least Square Regression萎庭,PLS)霜医, Sammon映射,多維尺度(Multi-Dimensional Scaling, MDS), 投影追蹤(Projection Pursuit)等驳规。 - 集成方法
集成算法用一些相對較弱的學習模型獨立地就同樣的樣本進行訓練,然后把結果整合起來進行整體預測署海。集成算法的主要難點在于究竟集成哪些獨立的較弱的學習模型以及如何把學習結果整合起來吗购。這是一類非常強大的算法,同時也非常流行砸狞。常見的算法包括:Boosting捻勉,Bootstrapped Aggregation(Bagging),AdaBoost,堆疊泛化(Stacked Generalization,Blending)刀森,梯度推進機(Gradient Boosting Machine, GBM)踱启,隨機森林(Random Forest)。
機器學習分類及實踐路線圖參考圖4。
圖4
關于深度學習
深度學習是一種特定類型的機器學習埠偿,具有強大的能力和靈活性透罢,它將大千世界表示為嵌套的層次概念體系(由較簡單概念間的聯(lián)系定義復雜概念、從一般抽象概括到高級抽象表示)冠蒋。 深度學習層次概念體系如圖5.
圖5
深度學習模型的示意圖(圖6)羽圃。計算機難以理解原始感觀輸入數(shù)據(jù)的含義,如表示為像素值集合的圖像抖剿。將一組像素映射到對象標識的函數(shù)非常復雜朽寞。如果直接處理,學習或評估此映射似乎是不可能的斩郎。深度學習將所需的復雜映射分解為一系列嵌套的簡單映射(每個由模型的不同層描述)來解決這一難題脑融。輸入展示在 可見層(visible layer),這樣命名的原因是因為它包含我們能觀察到的變量缩宜。然后是一系列從圖像中提取越來越多抽象特征的 隱藏層(hidden layer)吨掌。因為它們的值不在數(shù)據(jù)中給出,所以將這些層稱為 ‘‘隱藏”; 模型必須確定哪些概念有利于解釋觀察數(shù)據(jù)中的關系脓恕。這里的圖像是每個隱藏單元表示的特征的可視化膜宋。給定像素,第一層可以輕易地通過比較相鄰像素的亮度來識別邊緣炼幔。有了第一隱藏層描述的邊緣秋茫,第二隱藏層可以容易地搜索可識別為角和擴展輪廓的邊集合。給定第二隱藏層中關于角和輪廓的圖像描述乃秀,第三隱藏層可以找到輪廓和角的特定集合來檢測特定對象的整個部分肛著。最后,根據(jù)圖像描述中包含的對象部分跺讯,可以識別圖像中存在的對象枢贿。
圖6
深度學習與機器學習的區(qū)別
深度學習與機器學習的主要區(qū)別體現(xiàn)以下兩個方面:
數(shù)據(jù)規(guī)模上:深度學習需要大規(guī)模的數(shù)據(jù),數(shù)據(jù)規(guī)模越大對深度學習的效果越好刀脏。經(jīng)驗法則是局荚,監(jiān)督深度學習算法在每類給定約 5000 個標注樣本情況下使用機器學習算法一般將達到可以接受的性能,當至少有 1000 萬個標注樣本的數(shù)據(jù)集用于訓練深度學習模型時愈污,它將達到或超過人類表現(xiàn)耀态。
特征處理方式:深度學習有一個振奮的優(yōu)點,它可以自動的從數(shù)據(jù)中提取特征暂雹。深度學習通過其他較簡單的表示來表達復雜表示首装。
圖7:韋恩圖展示了深度學習是一種表示學習,也是一種機器學習杭跪。
圖7
圖8流程圖展示了AI系統(tǒng)不同部分如何在不同的AI學科中彼此相關仙逻,陰影框表示能從數(shù)據(jù)中學習的組件驰吓。
圖8
神經(jīng)網(wǎng)絡基本概念及結構
深度學習這個概念是架構在神經(jīng)網(wǎng)絡上的。而一個簡單的神經(jīng)網(wǎng)絡如圖9所示系奉。其中每個圓圈表示神經(jīng)元檬贰,每個神經(jīng)元存儲一個數(shù),這些神經(jīng)元通過權重和激活函數(shù)通過一定的連接結構和下一層的神經(jīng)元連接在一起喜最。在這些神經(jīng)元中偎蘸,接受外界輸入的神經(jīng)元被統(tǒng)稱為輸入層(input layer),中間和外界沒有聯(lián)系的神經(jīng)元被稱作隱含層(hidden layer),向外界輸出的神經(jīng)元被稱作輸出層(output layer)瞬内。在神經(jīng)網(wǎng)絡中迷雪,神經(jīng)元之間連接的權重作為訓練參數(shù),通過反向傳播算法(Backpropagation)進行訓練虫蝶。
圖9
深度學習的相關核心概念
- 泛化
在先前未觀測到的輸入上表現(xiàn)良好的能力被稱為泛化(generalization)章咧。機器學習的主要挑戰(zhàn)就是算法模型的泛化能力,我們的算法必須能夠在先前未觀測的新輸入上表現(xiàn)良好能真,而不只是在訓練集上表現(xiàn)良好赁严。深度學習部分發(fā)展動機就是解決人工智能問題的泛化能力。 - 基本假設
平滑先驗(smoothnexx prior)粉铐、局部不變性先驗(local constancy prior)是使用最廣泛的先驗假設疼约,這個先驗表明學習的函數(shù)不應在小區(qū)域內(nèi)發(fā)生很大的變化。
流形(manifold)指連接在一起的區(qū)域蝙泼。數(shù)學上程剥,它是指一組點,且每個點都有其鄰域汤踏。給定一個任意的點织鲸,其流形局部看起來像是歐幾里得空間。流形學習的目的是將其映射回低維空間中溪胶,揭示其本質(zhì)搂擦;流形學習基本思想:假設數(shù)據(jù)在高維具有某種結構特征,希望降到低維后哗脖,仍能保持該結構瀑踢。
- 表示
表示的概念是深度學習核心主題之一;傳統(tǒng)的機器學習算法的性能很大程度上依賴于給定數(shù)據(jù)的表示懒熙,表示的選擇對機器學習算法的性能有巨大的影響丘损;有很多算法的任務是找到數(shù)據(jù)的最佳表示,最佳表示是指該表示在比本身表示的信息更簡單或更易訪問而受到一些懲罰或限制的情況下工扎,盡可能地保存關系數(shù)據(jù)x更多的信息。常見的三種表示包括低維表示衔蹲、稀疏表示和獨立表示肢娘。圖10展示了一個簡單數(shù)據(jù)不同表示的例子,左邊是極坐標的表示蔽挠,右邊是笛卡爾坐標的表示乡话。
圖10
- 誤差、過擬合、欠擬合冰更、容量
誤差:誤差包括訓練誤差(training error)和泛化誤差(generalization error)(也稱為測試誤差,test error)勿锅;機器學習的核心目標是降低泛化誤差接剩。
過擬合:過擬合是指訓練誤差和和測試誤差之間的差距太大。
欠擬合:欠擬合是指模型不能在訓練集上獲得足夠低的誤差珊皿。
容量:模型的容量是指其擬合各種函數(shù)的能力网缝。
容量和誤差之間的典型關系:圖11。 訓練誤差和測試誤差表現(xiàn)得非常不同蟋定。在圖的左端粉臊, 訓練誤差和泛化誤差都非常高。這是 欠擬合機制(underfitting regime)驶兜。當我們增加容量時扼仲, 訓練誤差減小,但是訓練誤差和泛化誤差之間的間距卻不斷擴大抄淑。最終屠凶,這個間距的大小超過了訓練誤差的下降,我們進入到了 過擬合機制(overfitting regime)肆资,其中容量過大矗愧,超過了 最佳容量(optimal capacity)
圖11
- 優(yōu)化、正則化迅耘、超參數(shù)
在機器學習的實踐中贱枣,一個很重要的問題是優(yōu)化的問題。所謂優(yōu)化就是尋找一組機器學習模型的參數(shù)颤专,使得在該參數(shù)條件下纽哥,整個模型的損失函數(shù)(loss function)的值最小,即在該參數(shù)條件下模型和訓練樣本擬合得最好栖秕。相比于傳統(tǒng)的機器學習而言春塌,深度學習的優(yōu)化過程有一個特點就是深度學習的損失函數(shù)是非凸(non-convex)的,也就是損失函數(shù)有許多局部極小值點簇捍,而非僅僅有一個局部極小值點只壳。這樣就增加了深度學習模型尋找最優(yōu)參數(shù)的難度。在深度學習過程中暑塑,一般使用的是小批量梯度下降法(mini-batch gradient descent)吼句,設置一個合適的下降速率(即學習率,learning rate)事格,進行優(yōu)化惕艳。值得注意的一點是搞隐,在優(yōu)化過程中,損失函數(shù)的值并非一定是下降的远搪,而是在波動中逐漸下降劣纲,如圖12所示。
圖12
前面已經(jīng)提到谁鳍,雖然在整個訓練過程中訓練集的損失函數(shù)在不斷地下降癞季,但是測試集的損失函數(shù)有一個先下降然后升高的過程(如圖11所示)。為了防止過擬合倘潜,我們需要人為的對參數(shù)進行一定的限制绷柒,這個限制就叫做正則化(Regularization)。正常用的正則化的方法主要包含L1正則化窍荧,L2正則化和Dropout正則化方法辉巡。通過調(diào)節(jié)這些正則化方法的權重,可以調(diào)節(jié)模型過擬合的程度蕊退。在深度學習的訓練過程中郊楣,為了能夠使模型更好的擬合訓練樣本,需要手動調(diào)節(jié)深度學習網(wǎng)絡的一些參數(shù)瓤荔。這些參數(shù)被稱作超參數(shù) (Hyperparameter)净蚤。這些參數(shù)包含了前面所提到的學習率,正則化的權重等等输硝。由于可調(diào)節(jié)的超參數(shù)很多今瀑,可以先隨機選定一些參數(shù)的值,從中取出最好的点把,然后再對參數(shù)進行微調(diào)橘荠。
- 卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network, CNN)
卷積神經(jīng)網(wǎng)絡是今年來比較熱門的神經(jīng)網(wǎng)絡結構之一,主要應用于圖像識別之類的輸入數(shù)據(jù)有一定空間關聯(lián)性的深度學習場景郎逃。在卷積神經(jīng)網(wǎng)絡中哥童,比較重要的兩種連接層是卷積層(Convolution Layer)和池化層(Pooling Layer)。下面來簡單介紹一下這兩種層的結構褒翰。
圖13
圖13簡要的描述了卷積層是如何工作的贮懈,其中I是原始的輸入圖像,K是卷積層中的過濾器(filter)优训。過濾器是按照空間順序排列的一系列的參數(shù)的集合朵你。在圖中這個過濾器是一個3x3的矩形。其中矩形區(qū)域填充了9個參數(shù)揣非。通過過濾器在原始圖像中不斷滑動(紅色區(qū)域抡医,這個區(qū)域從圖像的左上角一直滑動到右下角),覆蓋的紅色區(qū)域和過濾器的參數(shù)按照順序兩兩相乘早敬,最后求和得到一個數(shù)(IK*)中的綠色區(qū)域魂拦。這樣就進行了一次卷積的運算毛仪。通過使用多個不同的過濾器可以從一個原始的圖像出發(fā)生成包含有原始圖像不同特征的新圖像搁嗓。
圖14
圖14描述了池化層是如何工作的芯勘。池化層通過把圖像分割成很多小區(qū)域,然后取小區(qū)域的特征來把一個圖像縮減成比較小的圖像腺逛。圖中描述了最大池化(Max-Pool)的一個過程荷愕,也就是特征的提取是基于小區(qū)域的最大值」髅可以看到這個池化層把原來的4x4圖縮減成了2x2的圖安疗,減少了特征的維數(shù)。池化層的作用主要是簡化模型和提取特征够委。
- 循環(huán)神經(jīng)網(wǎng)絡(Recurrent Neural Network, RNN)
相比于卷積神經(jīng)網(wǎng)絡荐类,循環(huán)神經(jīng)網(wǎng)絡主要用于做文字和語音識別之類的深度學習場景。循環(huán)神經(jīng)網(wǎng)絡由單元(Cell)按照時間順序連接在一起茁帽,其中單元與單元之間共享參數(shù)玉罐,通過傳遞隱含狀態(tài)(hidden state)相互連接,并且每個單元有輸入和輸出潘拨,如圖15所示吊输。其中當前單元隱含狀態(tài)**ht
和上一個單元的的隱含狀態(tài)ht-1
以及當前輸入值xt
關聯(lián)在一起,并且決定了當前單元的輸出yt
**铁追。
圖15
在實際的訓練和預測過程中季蚂,循環(huán)神經(jīng)網(wǎng)絡常常被展開成固定長度單元的連接構成的計算圖。在這個計算圖中所有的單元共享單元的參數(shù)琅束,如圖16所示扭屁。
圖16
Deep Learning的心得:
隨機器學習框架如TensorFlow、Caffe等的發(fā)展涩禀,機器學習及深度學習模型構建及應用成本大大降低料滥,將算法工程師焦點逐步從算法邏輯本身轉(zhuǎn)移業(yè)務模型構建及應用,開發(fā)效率極大提高埋泵;圖17形象說明大眾對深度學習的理解及深度學習模型構建過程比較像在玩積木一樣幔欧,嘗試各種堆疊的方法。
機器學習(深度學習)系統(tǒng)及應用是復雜的丽声,所需要的周邊基礎設施是龐大而復雜(參見圖18)礁蔗。
圖17
圖18:Only a small fraction of real-world ML systems is composed of the ML code, as shown by the small black box in the middle. The required surrounding infrastructure is vast and complex.
關于HILL
智能學習實驗室(HILL, Hujiang Intelligent Learning Lab)
滬江智能學習實驗室(HILL)成立于 2017 年,旨在融合教育學雁社、心理學和計算機科學等領域的相關理論和技術浴井,探索人工智能在教育領域的應用場景,推進滬江教育產(chǎn)品的智能化能力霉撵。未來也希望將這些能力提供給合作伙伴和整個教育行業(yè)磺浙。HILL的愿景:Activate Intelligence洪囤,Innovate Learning。
系列連載 | 帶你玩轉(zhuǎn)Netty 之 WebSocket
微信掃一掃關注該公眾號