目錄
一、人工智能學習思維導圖
Tips:神經網絡和深度學習是什麼關係?
1、從廣義上說深度學習的網絡結構也是多層神經網絡的一種。
傳統意義上的多層神經網絡是隻有輸入層、隱藏層、輸出層。其中隱藏層的層數根據需要而定,沒有明確的理論推導來說明到底多少層合適。而深度學習中最著名的卷積神經網絡CNN,在原來多層神經網絡的基礎上,加入了特徵學習部分,這部分是模仿人腦對信號處理上的分級的。具體操作就是在原來的全連接的層前面加入了部分連接的卷積層與降維層,而且加入的是一個層級。輸入層 - 卷積層 -降維層 -卷積層 - 降維層 -- .... -- 隱藏層 -輸出層。簡單來說,原來多層神經網絡做的步驟是:特徵映射到值。特徵是人工挑選。深度學習做的步驟是 信號->特徵->值。 特徵是由網絡自己選擇。
2、"深度學習"是爲了讓層數較多的多層神經網絡可以訓練,能夠work而演化出來的一系列的新的結構和新的方法。
1)新的網絡結構中最著名的就是CNN,它解決了傳統較深的網絡參數太多,很難訓練的問題,使用了“局部感受野”和“權植共享”的概念,大大減少了網絡參數的數量。關鍵是這種結構確實很符合視覺類任務在人腦上的工作原理。新的結構還包括了:LSTM,ResNet等。
2)新的方法就多了:新的激活函數:ReLU,新的權重初始化方法(逐層初始化,XAVIER等),新的損失函數,新的防止過擬合方法(Dropout, BN等)。這些方面主要都是爲了解決傳統的多層神經網絡的一些不足:梯度消失,過擬合等。
二、算法小結
# 梯度下降
在求解機器學習算法的模型參數,即無約束優化問題時,梯度下降(Gradient Descent)是最常採用的方法之一,另一種常用的方法是最小二乘法。下文對梯度下降法做一個完整的總結。
參考文章:https://www.cnblogs.com/pinard/p/5970503.html
視頻講解:https://www.bilibili.com/video/av38405698
# DDPG確定性策略梯度
從DDPG這個名字看,它是由D(Deep)+D(Deterministic )+ PG(Policy Gradient)組成。DDPG參考了DDQN的算法思想,通過雙網絡和經驗回放,加一些其他的優化,比較好的解決了Actor-Critic難收斂的問題。因此在實際產品中尤其是自動化相關的產品中用的比較多,是一個比較成熟的Actor-Critic算法。
參考文章:https://www.cnblogs.com/pinard/p/10345762.html
# 樸素貝葉斯
在所有的機器學習分類算法中,樸素貝葉斯和其他絕大多數的分類算法都不同。對於大多數的分類算法,比如決策樹,KNN,邏輯迴歸,支持向量機等,他們都是判別方法,也就是直接學習出特徵輸出Y和特徵X之間的關係,要麼是決策函數Y=f(X)Y=f(X),要麼是條件分佈P(Y|X)P(Y|X)。但是樸素貝葉斯卻是生成方法,也就是直接找出特徵輸出Y和特徵X的聯合分佈P(X,Y)P(X,Y),然後用P(Y|X)=P(X,Y)/P(X)P(Y|X)=P(X,Y)/P(X)得出。
參考文章:https://www.cnblogs.com/pinard/p/6069267.html
# 極大似然估計
極大似然估計是建立在極大似然原理的基礎上的一個統計方法,是概率論在統計學中的應用。極大似然估計提供了一種給定觀察數據來評估模型參數的方法,即:“模型已定,參數未知”。通過若干次試驗,觀察其結果,利用試驗結果得到某個參數值能夠使樣本出現的概率爲最大,則稱爲極大似然估計。
參考文章: https://blog.csdn.net/zengxiantao1994/article/details/72787849
# 邏輯迴歸(Logistic Regression)
在線性感知器算法中,我們使用了一個f(x)=x函數,作爲激勵函數,而在邏輯斯蒂迴歸中,我們將會採用sigmoid函數作爲激勵函數,所以它被稱爲sigmoid迴歸也叫對數機率迴歸(logistic regression),需要注意的是,雖然它的名字中帶有迴歸,但事實上它並不是一種迴歸算法,而是一種分類算法。它的優點是,它是直接對分類的可能性進行建模的,無需事先假設數據分佈,這樣就避免了假設分佈不準確所帶來的問題,因爲它是針對於分類的可能性進行建模的,所以它不僅能預測出類別,還可以得到屬於該類別的概率。除此之外,sigmoid函數它是任意階可導的凸函數。
參考文章1:https://www.jianshu.com/p/b2714426c971
參考文章2:https://blog.csdn.net/zouxy09/article/details/20319673
視頻講解1:https://www.bilibili.com/video/av37498638?from=search&seid=1631688472875791399
視頻講解2:https://www.bilibili.com/video/av37329385/?p=1
# 最小二乘法
最小二乘法同梯度下降類似,都是一種求解無約束最優化問題的常用方法,並且也可以用於曲線擬合,來解決迴歸問題。最小二乘法實質就是最小化“均方誤差”,而均方誤差就是殘差平方和的1/m(m爲樣本數),同時均方誤差也是迴歸任務中最常用的性能度量。
參考文章:https://www.cnblogs.com/wangkundentisy/p/7505487.html
# 凸優化
簡單的說,優化問題中,目標函數爲凸函數,約束變量取值於一個凸集中的優化問題稱爲凸優化,舉個簡單例子,設S爲凸集,f(x)爲S上凸函數,則問題min f(x) s.t. x屬於S爲一個凸優化。
參考文章:https://cloud.tencent.com/developer/news/335461
# 線性迴歸
最簡單的線性迴歸就是直接利用一條直線擬合二維平面上的一系列點,目的是利用這條直線概括所有訓練集中樣本的散佈規律或趨勢,最終用於新樣本點的預測。二維平面上直線方程的一般形式爲y=ax+b,使用訓練集中的數據以某種方式訓練該模型後,就可以確定方程中的兩個參數a,b的最優值。後面如果觀察到了新的樣本xi,就可以帶入上面學習到的公式計算y的值了。
參考文章:https://www.cnblogs.com/Belter/p/8487002.html
視頻講解:https://www.bilibili.com/video/av37823773
# 多項式迴歸
在上一篇的一般線性迴歸中,使用的假設函數是一元一次方程,也就是二維平面上的一條直線。但是很多時候可能會遇到直線方程無法很好的擬合數據的情況,這個時候可以嘗試使用多項式迴歸。多項式迴歸中,加入了特徵的更高次方(例如平方項或立方項),也相當於增加了模型的自由度,用來捕獲數據中非線性的變化。添加高階項的時候,也增加了模型的複雜度。隨着模型複雜度的升高,模型的容量以及擬合數據的能力增加,可以進一步降低訓練誤差,但導致過擬合的風險也隨之增加。
參考文章:https://www.cnblogs.com/Belter/p/8530222.html
視頻講解:https://www.bilibili.com/video/av38663814
使用多項式迴歸,如果多項式最高次項比較大,模型就容易出現過擬合。正則化是一種常見的防止過擬合的方法,一般原理是在代價函數後面加上一個對參數的約束項,這個約束項被叫做正則化項(regularizer)。在線性迴歸模型中,通常有兩種不同的正則化項:
- 加上所有參數(不包括θ0θ0)的絕對值之和,即l1l1範數,此時叫做Lasso迴歸;
- 加上所有參數(不包括θ0θ0)的平方和,即l2l2範數,此時叫做嶺迴歸.
參考文章:https://www.cnblogs.com/Belter/p/8536939.html
# 高斯分佈(正態分佈)
正態分佈(Normal distribution)又名高斯分佈(Gaussian distribution),是一個在數學、物理及工程等領域都非常重要的概率分佈,在統計學的許多方面有着重大的影響力。
參考文章:https://blog.csdn.net/hhaowang/article/details/83898881
# 傅里葉變換
傅里葉變換的意義:將時域問題轉換到頻域中解答,從而簡化了問題的處理。
參考文章1:https://blog.csdn.net/guyuealian/article/details/72817527
參考文章2:https://www.cnblogs.com/wjy-lulu/p/8318231.html
視頻講解1https://www.bilibili.com/video/av26085743?from=search&seid=16043164129848890351
視頻講解:https://www.bilibili.com/video/av19141078?from=search&seid=13920867040084411546
# 馬爾可夫鏈
馬爾科夫鏈是指數學中具有馬爾科夫性質的離散事件隨機過程。在其每一步中,系統根據概率分佈可以從一個狀態變到另一個狀態,也可以保持當前狀態。狀態的改變叫做轉移,與不同的狀態改變相關的概率叫做轉移概率。
參考文章:https://blog.csdn.net/tMb8Z9Vdm66wH68VX1/article/details/82056982
# 機器學習中有監督和無監督的七大區別
參考文章:http://www.360doc.com/content/18/0414/10/44507361_745524724.shtml
# SVM支持向量機
支持向量機方法是建立在統計學習理論的VC 維理論和結構風險最小原理基礎上的,根據有限的樣本信息在模型的複雜性(即對特定訓練樣本的學習精度,Accuracy)和學習能力(即無錯誤地識別任意樣本的能力)之間尋求最佳折衷,以期獲得最好的推廣能力(或稱泛化能力)。
參考文章1:https://baijiahao.baidu.com/s?id=1607469282626953830&wfr=spider&for=pc
參考文章2:http://www.blogjava.net/zhenandaci/category/31868.html
視頻講解:https://www.bilibili.com/video/av36830483/?p=1
白板推公式視頻:https://www.bilibili.com/video/av28186618
# PCA(Principal Component Analysis)
PCA即主成分分析方法,是一種使用最廣泛的數據降維算法。PCA的主要思想是將n維特徵映射到k維上,這k維是全新的正交特徵也被稱爲主成分,是在原有n維特徵的基礎上重新構造出來的k維特徵。PCA的工作就是從原始的空間中順序地找一組相互正交的座標軸,新的座標軸的選擇與數據本身是密切相關的。其中,第一個新座標軸選擇是原始數據中方差最大的方向,第二個新座標軸選取是與第一個座標軸正交的平面中使得方差最大的,第三個軸是與第1,2個軸正交的平面中方差最大的。依次類推,可以得到n個這樣的座標軸。通過這種方式獲得的新的座標軸,我們發現,大部分方差都包含在前面k個座標軸中,後面的座標軸所含的方差幾乎爲0。於是,我們可以忽略餘下的座標軸,只保留前面k個含有絕大部分方差的座標軸。事實上,這相當於只保留包含絕大部分方差的維度特徵,而忽略包含方差幾乎爲0的特徵維度,實現對數據特徵的降維處理。
參考文章:https://blog.csdn.net/hustqb/article/details/78394058
視頻講解:https://www.bilibili.com/video/av38544169
# KPCA非線性降維與核函數
講述PCA降維算法時提到,PCA只能處理線性數據的降維,本質上都是線性變換,並且它僅是篩選方差最大的特徵,去除特徵之間的線性相關性。對於線性不可分的數據常常效果很差。KPCA算法其實很簡單,數據在低維度空間不是線性可分的,但是在高維度空間就可以變成線性可分的了。利用這個特點,KPCA只是將原始數據通過核函數(kernel)映射到高維度空間,再利用PCA算法進行降維,所以叫做K PCA降維。因此KPCA算法的關鍵在於這個核函數。
參考文章1:https://www.jianshu.com/p/708ca9fa3023
參考文章2:主成分分析PCA和核函數 https://www.cnblogs.com/lijiankou/p/3160803.html
參考文章3:https://www.jianshu.com/p/047b4d65668f
# Boost集成學習
集成學習(ensemble learning)可以說是現在非常火爆的機器學習方法了。它本身不是一個單獨的機器學習算法,而是通過構建並結合多個機器學習器來完成學習任務。也就是我們常說的“博採衆長”。集成學習可以用於分類問題集成,迴歸問題集成,特徵選取集成,異常點檢測集成等等,可以說所有的機器學習領域都可以看到集成學習的身影。
參考文章:https://www.cnblogs.com/pinard/p/6131423.html
視頻講解:https://www.bilibili.com/video/av38821041?from=search&seid=1481073074695557957
# GBDT
GBDT(Gradient Boosting Decision Tree)是boosting系列算法中的一個代表算法,它是一種迭代的決策樹算法,由多棵決策樹組成,所有樹的結論累加起來作爲最終答案。
參考文章1:https://blog.csdn.net/yyy430/article/details/85108797
參考文章2:https://www.cnblogs.com/pinard/p/6140514.html
三、神經網絡部分
# 感知機
感知機是二類分類的線性分類模型,其輸入爲實例的特徵向量,輸出爲實例的類別,取+1和-1二值。感知機學習旨在求出可以將數據進行劃分的分離超平面,所以感知機能夠解決的問題首先要求特徵空間是線性可分的,再者是二類分類,即將樣本分爲{+1, -1}兩類。
參考文章:https://blog.csdn.net/qq_30611601/article/details/79313609
# 多層感知機MLP
多層感知機(MLP,Multilayer Perceptron)也叫人工神經網絡(ANN,Artificial Neural Network),除了輸入輸出層,它中間可以有多個隱層,最簡單的MLP只含一個隱層,即三層的結構,如下圖:
從上圖可以看到,多層感知機層與層之間是全連接的(全連接的意思就是:上一層的任何一個神經元與下一層的所有神經元都有連接)。多層感知機最底層是輸入層,中間是隱藏層,最後是輸出層。
參考文章: 神經網絡(一):概念
參考文章 神經網絡(二):感知機
參考文章:https://blog.csdn.net/u011734144/article/details/80924207
參考文章:神經網絡和反向傳播算法
# DNN深度神經網絡
DNN,從結構上來說他和傳統意義上的NN(神經網絡)沒什麼區別,但是神經網絡發展時遇到了一些瓶頸問題。一開始的神經元不能表示異或運算,科學家通過增加網絡層數,增加隱藏層可以表達。並發現神經網絡的層數直接決定了它對現實的表達能力。但是隨着層數的增加會出現局部函數越來越容易出現局部最優解的現象,用數據訓練深層網絡有時候還不如淺層網絡,並會出現梯度消失的問題。我們經常使用sigmoid函數作爲神經元的輸入輸出函數,在BP反向傳播梯度時,信號量爲1的傳到下一層就變成0.25了,到最後面幾層基本無法達到調節參數的作用。值得一提的是,最近提出的高速公路網絡和深度殘差學習避免梯度消失的問題。DNN與NN主要的區別在於把sigmoid函數替換成了ReLU,maxout,克服了梯度消失的問題。
參考文章:深度神經網絡(DNN)模型與前向傳播算法
參考文章:深度神經網絡(DNN)的正則化
# CNN卷積神經網絡
CNN的由來:深度學習的深度沒有固定的定義,2006年Hinton解決了局部最優解問題,將隱含層發展到7層,這達到了深度學習上所說的真正深度。不同問題的解決所需要的隱含層數自然也是不相同的,一般語音識別4層就可以,而圖像識別20層屢見不鮮。但隨着層數的增加,又出現了參數爆炸增長的問題。假設輸入的圖片是1K*1K的圖片,隱含層就有1M個節點,會有10^12個權重需要調節,這將容易導致過度擬合和局部最優解問題的出現。爲了解決上述問題,提出了CNN。
參考文章:卷積神經網絡(CNN)模型結構
參考文章:卷積神經網絡(CNN)前向傳播算法
參考文章:卷積神經網絡(CNN)反向傳播算法
參考文章1: https://www.cnblogs.com/skyfsm/p/6790245.html
參考文章2:https://www.zybuluo.com/hanbingtao/note/485480
# RNN循環神經網絡
全連接的DNN還存在着另一個問題——無法對時間序列上的變化進行建模。然而,樣本出現的時間順序對於自然語言處理、語音識別、手寫體識別等應用非常重要。對了適應這種需求,就出現了另一種神經網絡結構——循環神經網絡RNN。在普通的全連接網絡或CNN中,每層神經元的信號只能向上一層傳播,樣本的處理在各個時刻獨立,因此又被成爲前向神經網絡(Feed-forward Neural Networks)。而在RNN中,神經元的輸出可以在下一個時間戳直接作用到自身,即第i層神經元在m時刻的輸入,除了(i-1)層神經元在該時刻的輸出外,還包括其自身在(m-1)時刻的輸出!
# 長短時記憶網絡(Long Short Term Memory Network, LSTM)
長短時記憶網絡(Long Short Term Memory Network, LSTM),它成功的解決了原始循環神經網絡的缺陷,成爲當前最流行的RNN,在語音識別、圖片描述、自然語言處理等許多領域中成功應用。
參考文章:https://zybuluo.com/hanbingtao/note/581764
參考文章:LSTM模型與前向反向傳播算法
# 受限波爾茲曼機RBM
玻爾茲曼機是一大類的神經網絡模型,但是在實際應用中使用最多的則是RBM。RBM本身模型很簡單,只是一個兩層的神經網絡,因此嚴格意義上不能算深度學習的範疇。不過深度玻爾茲曼機(Deep Boltzmann Machine,以下簡稱DBM)可以看做是RBM的推廣。理解了RBM再去研究DBM就不難了。
上面一層神經元組成隱藏層(hidden layer), 用hh向量隱藏層神經元的值。下面一層的神經元組成可見層(visible layer),用vv向量表示可見層神經元的值。隱藏層和可見層之間是全連接的,這點和DNN類似, 隱藏層神經元之間是獨立的,可見層神經元之間也是獨立的。連接權重可以用矩陣W表示。和DNN的區別是,RBM不區分前向和反向,可見層的狀態可以作用於隱藏層,而隱藏層的狀態也可以作用於可見層。隱藏層的偏倚係數是向量b,而可見層的偏倚係數是向量a。
常用的RBM一般是二值的,即不管是隱藏層還是可見層,它們的神經元的取值只爲0或者1。本文只討論二值RBM。
參考文章:受限玻爾茲曼機(RBM)原理總結
四、機器學習知識脈絡
1、監督學習 Supervised learning
- 人工神經網絡 Artificial neural network
- 自動編碼器 Autoencoder
- 反向傳播 Backpropagation
- 玻爾茲曼機 Boltzmann machine
- 卷積神經網絡 Convolutional neural network
- Hopfield網絡 Hopfield network
- 多層感知器 Multilayer perceptron
- 徑向基函數網絡(RBFN) Radial basis function network(RBFN)
- 受限玻爾茲曼機 Restricted Boltzmann machine
- 迴歸神經網絡(RNN) Recurrent neural network(RNN)
- 自組織映射(SOM) Self-organizing map(SOM)
- 尖峯神經網絡 Spiking neural network
- 貝葉斯 Bayesian
- 樸素貝葉斯 Naive Bayes
- 高斯貝葉斯 Gaussian Naive Bayes
- 多項樸素貝葉斯 Multinomial Naive Bayes
- 平均一依賴性評估(AODE) Averaged One-Dependence Estimators(AODE)
- 貝葉斯信念網絡(BNN) Bayesian Belief Network(BBN)
- 貝葉斯網絡(BN) Bayesian Network(BN)
- 決策樹 Decision Tree
- 分類和迴歸樹(CART) Classification and regression tree (CART)
- 迭代Dichotomiser 3(ID3) Iterative Dichotomiser 3(ID3)
- C4.5算法 C4.5 algorithm
- C5.0算法 C5.0 algorithm
- 卡方自動交互檢測(CHAID) Chi-squared Automatic Interaction Detection(CHAID)
- 決策殘端 Decision stump
- ID3算法 ID3 algorithm
- 隨機森林 Random forest
- SLIQ
- 線性分類 Linear classifier
- Fisher的線性判別 Fisher’s linear discriminant
- 線性迴歸 Linear regression
- Logistic迴歸 Logistic regression
- 多項Logistic迴歸 Multinomial logistic regression
- 樸素貝葉斯分類器 Naive Bayes classifier
- 感知 Perceptron
- 支持向量機 Support vector machine
2、無監督學習 Unsupervised learning
- 人工神經網絡 Artificial neural network
- 對抗生成網絡
- 前饋神經網絡 Feedforward neurral network
- 極端學習機 Extreme learning machine
- 邏輯學習機 Logic learning machine
- 自組織映射 Self-organizing map
- 關聯規則學習 Association rule learning
- 先驗算法 Apriori algorithm
- Eclat算法 Eclat algorithm
- FP-growth算法 FP-growth algorithm
- 分層聚類 Hierarchical clustering
- 單連鎖聚類 Single-linkage clustering
- 概念聚類 Conceptual clustering
- 聚類分析 Cluster analysis
- BIRCH
- DBSCAN
- 期望最大化(EM) Expectation-maximization(EM)
- 模糊聚類 Fuzzy clustering
- K-means算法 K-means algorithm
- k-均值聚類 K-means clustering
- k-位數 K-medians
- 平均移 Mean-shift
- OPTICS算法 OPTICS algorithm
- 異常檢測 Anomaly detection
- k-最近鄰算法(K-NN) k-nearest neighbors classification(K-NN)
- 局部異常因子 Local outlier factor
3、半監督學習 Semi-supervised learning
- 生成模型 Generative models
- 低密度分離 Low-density separation
- 基於圖形的方法 Graph-based methods
- 聯合訓練 Co-training
4、強化學習 Reinforcement learning
- 時間差分學習 Temporal difference learning
- Q學習 Q-learning
- 學習自動 Learning Automata
- 狀態-行動-回饋-狀態-行動(SARSA) State-Action-Reward-State-Action(SARSA)
5、深度學習Deep learning
- 深度信念網絡 Deep belief machines
- 深度卷積神經網絡 Deep Convolutional neural networks
- 深度遞歸神經網絡 Deep Recurrent neural networks
- 分層時間記憶 Hierarchical temporal memory
- 深度玻爾茲曼機(DBM) Deep Boltzmann Machine(DBM)
- 堆疊自動編碼器 Stacked Boltzmann Machine
- 生成式對抗網絡 Generative adversarial networks
6、遷移學習 Transfer learning
- 傳遞式遷移學習 Transitive Transfer Learning
7、其他
- 集成學習算法
- Bootstrap aggregating (Bagging)
- AdaBoost
- 梯度提升機(GBM) Gradient boosting machine(GBM)
- 梯度提升決策樹(GBRT) Gradient boosted decision tree(GBRT)
- 降維
- 主成分分析(PCA) Principal component analysis(PCA)
- 主成分迴歸(PCR) Principal component regression(PCR)
- 因子分析 Factor analysis
五、相關主頁網址
1、OpenCV (Open Source Computer Vision Library) 官網地址:https://opencv.org/
2、中國計算機視覺論壇,地址:http://www.cvchina.net/
3、July,個人博客,專注面試、算法、機器學習。地址:https://blog.csdn.net/v_JULY_v/
4、周志華,個人主頁,地址:http://cs.nju.edu.cn/zhouzh/index.htm
5、中科院機器視覺課題組,官網地址:http://vision.ia.ac.cn/zh/index_cn.html
6、臺灣大學的支持向量機庫libsvm項目網址:https://www.csie.ntu.edu.tw/~cjlin/libsvm/
7、斯坦福大學計算機視覺主頁,地址:http://vision.stanford.edu/index.html
8、個人博客:https://www.cnblogs.com/tornadomeet/archive/2012/06/24/2560261.html
9、機器學習算法精講,中科院大牛帶你手推算法。
視頻講解:https://www.bilibili.com/video/av48725230?from=search&seid=4629572223349762345
10、GitHub萬星的中文機器學習資源:https://github.com/apachecn/AiLearning
11、機器學習的數學基礎:https://zhuanlan.zhihu.com/p/25197792
12、總結的比較好的自然語言處理資料github鏈接:https://liuhuanyong.github.io/
13、人工智能論文彙總:https://blog.csdn.net/Sakura55/article/details/81876092