深度學習之概述(Overview)
2016年被稱為人工智能的元年,2017年是人能智能應用的元年;深度學習技術和應用取得飛速發展;深度學習在互聯網教育場景也得到廣泛應用。本文主要介紹機器學習及深度學習之定義及基本概念、相關網絡結構等。
本文主要內容包括機器學習的定義及組成分類、深度學習的定義、深度學習和機器學習的區別、神經網絡基本概念及基本結構、深度學習的相關核心概念(基本假設、數據集、表示、泛化、容量、優化、超參數、誤差、欠擬合、過擬合、正則化)、兩種典型深度網絡結構(CNN、RNN)基本介紹。
引言
人工智能究竟能夠做什麽?對我們有什麽影響?我們從下面兩張圖說起:圖1是工業革命時期的《紗廠女孩 Cotton Mill Girl》,說明了工業革命導致機器替代人的體力勞動,把大量人從繁重的體力勞動中解放出來,更多人從事思考的、創新的、科學工作,生產力大大提高;圖2說明了在人工智能時代,通過算法和計算力代替人類思考,把人類從重復性的腦力勞動解放出來,再次解放生產力,使生產力得到提高和飛躍。
圖2
關於機器學習
機器學習是機器通過統計學算法,對大量的歷史數據進行學習規律從而生成經驗模型,利用經驗模型對新的樣本做出智能識別或對未來做出預測,從而指導業務。機器學習嚴格定義為:不顯式編程地賦予計算機能力的研究領域。機器學習的組成是有數據、算法、模型構成的,數據+算法生成模型,通過進行預測和模式識別,進而提供智能化的服務和產品;參考圖3:機器學習和烹飪的形象對比,更好理解機器學習。
圖3
機器學習算法分類方式包括學習方式、算法的類似性兩種分類方式。
學習方式
通過學習方式將機器學習算法進行分類,主要包括:監督式學習、非監督式學習、半監督式學習、強化學習。
1. 監督式學習
在監督式學習方式下,輸入數據被稱為訓練數據,每組訓練數據有一個明確的表示或結果(Label);在建立預測模型的時候,監督學習建立一個學習過程,將預測結果與訓練數據的實際結果進行比較,不斷的調整預測模型,直到模型的預測結果達到一個預期的準確率。常見應用場景如分類問題和回歸問題。參見算法如邏輯回歸(Logistic Regression)、反向傳播神經網絡(Back Propagation Neural Network)。
2. 非監督式學習
在非監督式學習中,數據並不被標識,學習模型為為了推斷出數據的一些內在結構。常見應用場景有關聯規則的學習以及聚類等。常見算法有Apriori算法、K-Means算法。
3. 半監督式學習
在半監督式學習方式下,輸入數據部分被標識,部分沒有被標識,模型首先需要學習數據的內在結構以便合理的組織數據來進行預測;算法包括一些對常用監督學習算法的延伸,算法首先試圖對為標記數據進行建模,在此基礎上對標記數據進行預測。算法例如圖論推理算法(Graph Inference)、拉普拉斯支持向量機(Laplacian SVM)等。
4. 強化學習
在強化學習模式下,輸入數據作為對模型的反饋,不像監督模型那樣,輸入數據僅僅是作為一個檢查模型對錯的方式,在強化學習下,輸入數據直接反饋到模型,模型必須對此立刻作出調整。常見的應用場景包括動態系統以及機器人控制等。常見算法包括Q-Learning以及時間差學習(Temporal difference learning)
算法類似性
根據算法的功能和形式的類似性對算法進行分類,例如:基於樹的算法、基於神經網絡的算法等。
1. 回歸算法
回歸算法是試圖采用對誤差的衡量來探索變量之間的關系的一類算法。常見算法包括:最小二乘法(Ordinary Least Square),邏輯回歸(Logistic Regression),逐步式回歸(Stepwise Regression),多元自適應回歸樣條(Multivariate Adaptive Regression Splines)以及本地散點平滑估計(Locally Estimated Scatterplot Smoothing)等。
2. 基於實例的算法
基於實例的算法常常用來對決策問題建立模型,這樣的模型常常先選取一批樣本數據,然後根據某些近似性把新數據與樣本數據進行比較。通過這種方式來尋找最佳的匹配。因此,基於實例的算法常常也被稱為“贏家通吃”學習或者“基於記憶的學習”。常見的算法包括 k-Nearest Neighbor(KNN), 學習矢量量化(Learning Vector Quantization, LVQ),以及自組織映射算法(Self-Organizing Map , SOM)
3. 正則化方法
正則化方法通常回歸算法的延伸,根據算法的復雜度對算法進行調整,通常解決過擬合問題,通過正則化項對簡單模型予以獎勵而對復雜算法予以懲罰。算法包括:Ridge Regression, Least Absolute Shrinkage and Selection Operator(LASSO),以及彈性網絡(Elastic Net)。
4. 決策樹學習
決策樹算法根據數據的屬性采用樹狀結構建立決策模型, 決策樹模型常常用來解決分類和回歸問題。常見的算法包括:分類及回歸樹(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)。
5. 基於核的方法
基於核的算法中最著名的是支持向量機(SVM)。 基於核的算法把輸入數據映射到一個高階的向量空間, 在這些高階向量空間裏, 有些分類或者回歸問題能夠更容易的解決。 常見的基於核的算法包括:支持向量機(Support Vector Machine,SVM),徑向基函數(Radial Basis Function,RBF), 以及線性判別分析(Linear Discriminate Analysis,LDA)等
6. 聚類算法
聚類算法通常按照中心點或者分層的方式對輸入數據進行歸並。所有的聚類算法都試圖找到數據的內在結構,以便按照最大的共同點將數據進行歸類。常見的聚類算法包括 k-Means算法以及期望最大化算法(Expectation Maximization,EM)。
7. 關聯規則學習
關聯規則學習通過尋找最能夠解釋數據變量之間關系的規則,來找出大量多元數據集中有用的關聯規則。常見算法包括 Apriori算法和Eclat算法等。
8. 降低維度算法
降低維度算法試圖分析數據的內在結構,不過降低維度算法是以非監督學習的方式試圖利用較少的信息來歸納或者解釋數據。這類算法可以用於高維數據的可視化或者用來簡化數據以便監督式學習使用。常見的算法包括:主成份分析(Principle Component Analysis, PCA),偏最小二乘回歸(Partial Least Square Regression,PLS), Sammon映射,多維尺度(Multi-Dimensional Scaling, MDS), 投影追蹤(Projection Pursuit)等。
9. 集成方法
集成算法用一些相對較弱的學習模型獨立地就同樣的樣本進行訓練,然後把結果整合起來進行整體預測。集成算法的主要難點在於究竟集成哪些獨立的較弱的學習模型以及如何把學習結果整合起來。這是一類非常強大的算法,同時也非常流行。常見的算法包括:Boosting,Bootstrapped Aggregation(Bagging),AdaBoost,堆疊泛化(Stacked Generalization,Blending),梯度推進機(Gradient Boosting Machine, GBM),隨機森林(Random Forest)。
機器學習分類及實踐路線圖參考圖4。
關於深度學習
深度學習是一種特定類型的機器學習,具有強大的能力和靈活性,它將大千世界表示為嵌套的層次概念體系(由較簡單概念間的聯系定義復雜概念、從一般抽象概括到高級抽象表示)。 深度學習層次概念體系如圖5.
深度學習模型的示意圖(圖6)。計算機難以理解原始感觀輸入數據的含義,如表示為像素值集合的圖像。將一組像素映射到對象標識的函數非常復雜。如果直接處理,學習或評估此映射似乎是不可能的。深度學習將所需的復雜映射分解為一系列嵌套的簡單映射(每個由模型的不同層描述)來解決這一難題。輸入展示在 可見層(visible layer),這樣命名的原因是因為它包含我們能觀察到的變量。然後是一系列從圖像中提取越來越多抽象特征的 隱藏層(hidden layer)。因為它們的值不在數據中給出,所以將這些層稱為 ‘‘隱藏”; 模型必須確定哪些概念有利於解釋觀察數據中的關系。這裏的圖像是每個隱藏單元表示的特征的可視化。給定像素,第一層可以輕易地通過比較相鄰像素的亮度來識別邊緣。有了第一隱藏層描述的邊緣,第二隱藏層可以容易地搜索可識別為角和擴展輪廓的邊集合。給定第二隱藏層中關於角和輪廓的圖像描述,第三隱藏層可以找到輪廓和角的特定集合來檢測特定對象的整個部分。最後,根據圖像描述中包含的對象部分,可以識別圖像中存在的對象。
深度學習與機器學習的區別
深度學習與機器學習的主要區別體現以下兩個方面:
-
數據規模上:深度學習需要大規模的數據,數據規模越大對深度學習的效果越好。經驗法則是,監督深度學習算法在每類給定約 5000 個標註樣本情況下使用機器學習算法一般將達到可以接受的性能,當至少有 1000 萬個標註樣本的數據集用於訓練深度學習模型時,它將達到或超過人類表現。
-
特征處理方式:深度學習有一個振奮的優點,它可以自動的從數據中提取特征。深度學習通過其他較簡單的表示來表達復雜表示。
圖7:韋恩圖展示了深度學習是一種表示學習,也是一種機器學習。
圖8流程圖展示了AI系統不同部分如何在不同的AI學科中彼此相關,陰影框表示能從數據中學習的組件。
神經網絡基本概念及結構
深度學習這個概念是架構在神經網絡上的。而一個簡單的神經網絡如圖9所示。其中每個圓圈表示神經元,每個神經元存儲一個數,這些神經元通過權重和激活函數通過一定的連接結構和下一層的神經元連接在一起。在這些神經元中,接受外界輸入的神經元被統稱為輸入層(input layer),中間和外界沒有聯系的神經元被稱作隱含層(hidden layer),向外界輸出的神經元被稱作輸出層(output layer)。在神經網絡中,神經元之間連接的權重作為訓練參數,通過反向傳播算法(Backpropagation)進行訓練。
深度學習的相關核心概念
1. 泛化
在先前未觀測到的輸入上表現良好的能力被稱為泛化(generalization)。機器學習的主要挑戰就是算法模型的泛化能力,我們的算法必須能夠在先前未觀測的新輸入上表現良好,而不只是在訓練集上表現良好。深度學習部分發展動機就是解決人工智能問題的泛化能力。
2. 基本假設
-
平滑先驗(smoothnexx prior)、局部不變性先驗(local constancy prior)是使用最廣泛的先驗假設,這個先驗表明學習的函數不應在小區域內發生很大的變化。
-
流形(manifold)指連接在一起的區域。數學上,它是指一組點,且每個點都有其鄰域。給定一個任意的點,其流形局部看起來像是歐幾裏得空間。流形學習的目的是將其映射回低維空間中,揭示其本質;流形學習基本思想:假設數據在高維具有某種結構特征,希望降到低維後,仍能保持該結構。
3. 表示
表示的概念是深度學習核心主題之一;傳統的機器學習算法的性能很大程度上依賴於給定數據的表示,表示的選擇對機器學習算法的性能有巨大的影響;有很多算法的任務是找到數據的最佳表示,最佳表示是指該表示在比本身表示的信息更簡單或更易訪問而受到一些懲罰或限制的情況下,盡可能地保存關系數據x更多的信息。常見的三種表示包括低維表示、稀疏表示和獨立表示。圖10展示了一個簡單數據不同表示的例子,左邊是極坐標的表示,右邊是笛卡爾坐標的表示。
4. 誤差、過擬合、欠擬合、容量
-
誤差:誤差包括訓練誤差(training error)和泛化誤差(generalization error)(也稱為測試誤差,test error);機器學習的核心目標是降低泛化誤差。
-
過擬合:過擬合是指訓練誤差和和測試誤差之間的差距太大。
-
欠擬合:欠擬合是指模型不能在訓練集上獲得足夠低的誤差。
-
容量:模型的容量是指其擬合各種函數的能力。
容量和誤差之間的典型關系:圖11。 訓練誤差和測試誤差表現得非常不同。在圖的左端, 訓練誤差和泛化誤差都非常高。這是 欠擬合機制(underfitting regime)。當我們增加容量時, 訓練誤差減小,但是訓練誤差和泛化誤差之間的間距卻不斷擴大。最終,這個間距的大小超過了訓練誤差的下降,我們進入到了 過擬合機制(overfitting regime),其中容量過大,超過了 最佳容量(optimal capacity)
5. 優化、正則化、超參數
在機器學習的實踐中,一個很重要的問題是優化的問題。所謂優化就是尋找一組機器學習模型的參數,使得在該參數條件下,整個模型的損失函數(loss function)的值最小,即在該參數條件下模型和訓練樣本擬合得最好。相比於傳統的機器學習而言,深度學習的優化過程有一個特點就是深度學習的損失函數是非凸(non-convex)的,也就是損失函數有許多局部極小值點,而非僅僅有一個局部極小值點。這樣就增加了深度學習模型尋找最優參數的難度。在深度學習過程中,一般使用的是小批量梯度下降法(mini-batch gradient descent),設置一個合適的下降速率(即學習率,learning rate),進行優化。值得註意的一點是,在優化過程中,損失函數的值並非一定是下降的,而是在波動中逐漸下降,如圖12所示。
前面已經提到,雖然在整個訓練過程中訓練集的損失函數在不斷地下降,但是測試集的損失函數有一個先下降然後升高的過程(如圖11所示)。為了防止過擬合,我們需要人為的對參數進行一定的限制,這個限制就叫做正則化(Regularization)。正常用的正則化的方法主要包含L1正則化,L2正則化和Dropout正則化方法。通過調節這些正則化方法的權重,可以調節模型過擬合的程度。在深度學習的訓練過程中,為了能夠使模型更好的擬合訓練樣本,需要手動調節深度學習網絡的一些參數。這些參數被稱作超參數 (Hyperparameter)。這些參數包含了前面所提到的學習率,正則化的權重等等。由於可調節的超參數很多,可以先隨機選定一些參數的值,從中取出最好的,然後再對參數進行微調。
6. 卷積神經網絡(Convolutional Neural Network, CNN)
卷積神經網絡是今年來比較熱門的神經網絡結構之一,主要應用於圖像識別之類的輸入數據有一定空間關聯性的深度學習場景。在卷積神經網絡中,比較重要的兩種連接層是卷積層(Convolution Layer)和池化層(Pooling Layer)。下面來簡單介紹一下這兩種層的結構。
圖13簡要的描述了卷積層是如何工作的,其中I是原始的輸入圖像,K是卷積層中的過濾器(filter)。過濾器是按照空間順序排列的一系列的參數的集合。在圖中這個過濾器是一個3x3的矩形。其中矩形區域填充了9個參數。通過過濾器在原始圖像中不斷滑動(紅色區域,這個區域從圖像的左上角一直滑動到右下角),覆蓋的紅色區域和過濾器的參數按照順序兩兩相乘,最後求和得到一個數(I*K)中的綠色區域。這樣就進行了一次卷積的運算。通過使用多個不同的過濾器可以從一個原始的圖像出發生成包含有原始圖像不同特征的新圖像。
圖14描述了池化層是如何工作的。池化層通過把圖像分割成很多小區域,然後取小區域的特征來把一個圖像縮減成比較小的圖像。圖中描述了最大池化(Max-Pool)的一個過程,也就是特征的提取是基於小區域的最大值。可以看到這個池化層把原來的4x4圖縮減成了2x2的圖,減少了特征的維數。池化層的作用主要是簡化模型和提取特征。
7. 循環神經網絡(Recurrent Neural Network, RNN)
相比於卷積神經網絡,循環神經網絡主要用於做文字和語音識別之類的深度學習場景。循環神經網絡由單元(Cell)按照時間順序連接在一起,其中單元與單元之間共享參數,通過傳遞隱含狀態(hidden state)相互連接,並且每個單元有輸入和輸出,如圖15所示。其中當前單元隱含狀態ht和上一個單元的的隱含狀態ht-1以及當前輸入值xt關聯在一起,並且決定了當前單元的輸出yt。
在實際的訓練和預測過程中,循環神經網絡常常被展開成固定長度單元的連接構成的計算圖。在這個計算圖中所有的單元共享單元的參數,如圖16所示。
Deep Learning的心得:
隨機器學習框架如TensorFlow、Caffe等的發展,機器學習及深度學習模型構建及應用成本大大降低,將算法工程師焦點逐步從算法邏輯本身轉移業務模型構建及應用,開發效率極大提高;圖17形象說明大眾對深度學習的理解及深度學習模型構建過程比較像在玩積木一樣,嘗試各種堆疊的方法。
機器學習(深度學習)系統及應用是復雜的,所需要的周邊基礎設施是龐大而復雜(參見圖18)。
關於HILL
智能學習實驗室(HILL, Hujiang Intelligent Learning Lab)
滬江智能學習實驗室(HILL)成立於 2017 年,旨在融合教育學、心理學和計算機科學等領域的相關理論和技術,探索人工智能在教育領域的應用場景,推進滬江教育產品的智能化能力。未來也希望將這些能力提供給合作夥伴和整個教育行業。HILL的願景:Activate Intelligence,Innovate Learning。
轉載:https://juejin.im/entry/59ddf2006fb9a04509087bcf
深度學習之概述(Overview)