摘要:舉例,神經元,感知機,神經網絡行為主義智能機器人認為人工智能源于控制論。人工智能的研究領域包括專家系統推薦系統等等。是一種實現人工智能的方法根據某些算法,通過大量數據進行訓練和學習,然后對真實世界中的事件做出決策和預測。
1. 緒論
四大流派
符號主義(知識圖譜)
原理主要為物理符號系統(即符號操作系統)假設和有限合理性原理
用數理邏輯描述智能行為, 在計算機上實現了邏輯演繹系統。
舉例,其有代表性的成果為啟發式程序LT邏輯理論家,證明了38條數學定理,表了可以應用計算機研究人的思維多成,模擬人類智能活動。
連接主義(神經網絡)
認為人工智能源于仿生學,特別是對人腦模型的研究。
舉例,MP神經元,感知機,神經網絡
行為主義(智能機器人)
認為人工智能源于控制論。早期的研究工作重點是模擬人在控制過程中的智能行為和作用,如對自尋優、自適應、自鎮定、自組織和自學習等控制論系統的研究,并進行“控制論動物”的研制。
舉例,智能控制和智能機器人
統計主義(機器學習)
基于概率論與數理統計
舉例,貝葉斯分類器(條件概率)
AI,ML,DL的異同、關聯
知乎
AI最初的概念,是用計算機構造與人類擁有同樣智慧的機器。
人工智能的研究領域包括專家系統、CV、NLP、推薦系統等等。
// AI分為弱AI和強AI,
// 弱 AI 讓機器通過觀察和感知, 做到一定程度的理解和推理
// 強 AI 讓機器獲得自適應能力, 解決沒有遇到過的問題
// 目前的科研工作都集中在弱人工智能這部分,并很有希望在近期取得重大突破
// 電影里的人工智能多半都是在描繪強人工智能,而這部分在目前的現實世界里難以真正實現。
ML 是一種實現人工智能的方法
ML 根據某些算法,通過大量數據進行訓練和學習,然后對真實世界中的事件做出決策和預測。
算法:決策樹、聚類、貝葉斯分類、支持向量機等等。
學習方法:監督學習(如分類問題)、無監督學習(如聚類問題)、半監督學習、集成學習、深度學習和強化學習。
預處理:特征工程
DL 一種實現機器學習的技術
DL 利用深度神經網絡來進行特征表達,DL的學習過程就是DNN的訓練過程
DNN 本身并不是一個全新的概念,可大致理解為包含多個隱含層的NN
應用:圖像識別、語音識別
預處理:數據清洗
存在的問題
深度學習模型需要大量的訓練數據,才能展現出神奇的效果,但現實生活中往往會遇到小樣本問題,此時深度學習方法無法入手,傳統的機器學習方法就可以處理
有些領域,采用傳統的簡單的機器學習方法,可以很好地解決了,沒必要非得用復雜的深度學習方法
深度學習的思想,來源于人腦的啟發,但絕不是人腦的模擬,舉個例子,給一個三四歲的小孩看一輛自行車之后,再見到哪怕外觀完全不同的自行車,小孩也十有八九能做出那是一輛自行車的判斷,也就是說,人類的學習過程往往不需要大規模的訓練數據,而現在的深度學習方法顯然不是對人腦的模擬
機器學習的兩個階段
訓練(三步曲)
define Model
定義 model
goodness of a function
定義Loss function
pick the best function
通過 GD 調整參數,使得損失函數達到最小值,此時的 function 就是某個 Model 中的最佳function
# 所有訓練數據用了一次 for e in epoch: # 迭代多少次 for it in iteration: GD(batchsize) update(W) # Epoch: # All sample data in the train set are used once in 1 epoch # Iteration (Batch): # # Batch-size: # The number of data in one iteration
誤差反向傳播, 與GD一起使用, 更新權值, 訓練模型
測試
在 Dev set / Test set 上進行測試
前向傳播, err = y - predict(x), acc = y - err, 給定輸入, 預測輸出, 計算準確率
機器學習的分類(區分差異, 舉例說明)
監督學習
數據集帶標簽, 即訓練集的 y 已知, 可以計算 err = y - h(x)
舉例,線性回歸,圖像識別
非監督學習
數據集無標簽,y 未知,需要通過某種方法自動組織成一個個類別
舉例,聚類算法
半監督學習
數據集一部分有標簽,一部分沒標簽
強化學習
強化學習也是使用未標記的數據。
在監督學習中,能直接得到每個輸入的對應的輸出。強化學習中,訓練一段時間后,你才能得到一個延遲的反饋,并且只有一點提示說明你是離答案越來越遠還是越來越近。
游戲AI,AlphaGo,Dota,不是馬上就能得到游戲結果,但是可以在一段時間延遲后知道自己離勝利是否越來越近。
DeepMind 利用強化學習令游戲 AI 大幅進步,以 AlphaGo 的成功最為典型。
遷移學習
https://blog.csdn.net/jiandan...
從源領域(Source Domain)學習了東西,應用到新的目標領域(Target Domain)
源領域和目標領域之間有區別,有不同的數據分布
樣本遷移、特征遷移、模型遷移、關系遷移
訓練數據少(容易過擬合),原先某個訓練好的模型,部分組件可以重用,部分組件需要修改,用于新的場景,
類似面向對象,可重用性,或者某個web框架可以快速搭建各種web應用
原來識別貓,現在可以識別狗(四條腿的特征可以重用),或者其他動物
訓練真實圖片,識別卡通圖片
線性回歸
機器學習定義
機器學習,對于某類任務 T 和性能度量 P,模型程序可以通過經驗 E 學習和改進,提升它在任務 T 上的性能 P
T 預測
P 準確率
E 訓練集
線性回歸
Y = h(x) = WX + b
X(1) = 28x1, Y(1) = 10x1
三步曲
model, loss function, 通過 GD 使 loss 最小
訓練集上表現不好 ---> 欠擬合 ---> 使用更復雜的模型,使用更多特征作為輸入
訓練集表現好 -> 測試集表現不好 --> 過擬合 ---> 正則化,增加訓練數據
誤差來源分析
Testing Error = Bias error + Variance Error
Bias error ≈ train error = avoidable error + unavoidable error
Variance error ≈ 測試集 上的表現比訓練集上差多少
= test error - train error
欠擬合:bias error 高, variance error 低
過擬合:bias error 低, variance error 高
Good:bias error 低, variance error 低
y5 = W5x^5 + ... + W1x + W0
y1 = W1x + W0, y1 是 y5 的子集
三類數據集
訓練集:訓練模型參數
開發/驗證集:用于挑選超參數
測試集:用于估計泛化誤差,衡量模型性能
數據集不是特別大時,使用 K-折 交叉驗證
TODO 交叉驗證
將數據集D劃分成k個大小相似的互斥子集,
每次用k-1個子集作為訓練集,余下的子集做測試集,最終返回k個訓練結果的平均值。
交叉驗證法評估結果的穩定性和保真性很大程度上取決于k的取值。
參數,自動學習,W,b
超參數,某次訓練中不會改變的,由程序員確定
lr,正則化系數,模型階數,batchsize,epoch,梯度優化算法,filter的尺寸、步長
正則化
L1(θ) = L(θ) + λ[θ]1
[θ]1 = |w1| + |w2| + ... 參數絕對值之和,
作用: 特征篩選
L2(θ) = L(θ) + λ[θ]2
[θ]2 = w1^2 + w2^2 + ... 參數平方和
作用:限制模型復雜度, 避免過擬合, 提高泛化能力
Elastic, L1 + L2
L3(θ) = L(θ) + λ{ρ[θ]1 + (1-ρ)[θ]2}
加快模型訓練
歸一化
使用不同的 GD
SGD, BGD, miniBGD, AdaGrad, RMSProp, SGDM, Adam,
TODO: 不同GD之間的比較
微調學習率lr
TODO: 自適應變化的lr,t++, η--
分類 classification
Why not use linear regression model to solve classification?
線性回歸無法解決多分類問題
有些問題不是線性可分的(異或問題)
Why use cross entropy as loss metric, not MSE (Mean Square Error)?
如果是交叉熵,距離target越遠,微分值就越大,就可以做到距離target越遠,更新參數越快。而平方誤差在距離target很遠的時候,微分值非常小,會造成移動的速度非常慢,這就是很差的效果了。
離目標離目標很近的時候,?L/?w 很小導致更新很慢。
What is Cascading logistic regression model? Why introduce this concept?
https://blog.csdn.net/soulmee...
https://cloud.tencent.com/dev...
串級聯的邏輯回歸模型可以進行,特征轉換,解決非線性的分類,如異或問題
邏輯回歸單元就是神經元的基本結構,可以組成神經網絡
邏輯
f(x) = σ(Σwx + b)
輸出 (0, 1)
Loss = 交叉熵
TODO: 抄公式
https://zhuanlan.zhihu.com/p/...
https://blog.csdn.net/jasonzz...
https://blog.csdn.net/panglin...
線性
f(x) = Σwx + b
輸出 任何值
Loss = 均方差
二分類(logistic回歸, y = 0 or 1)
sigmoid
多分類(softmax回歸, y = 1, 2, 3, ..., k)
softmax
對比三步曲
定義一個函數集,即網絡結構的選擇
goodness of a function, 定義評價函數,即損失函數的選擇
https://blog.csdn.net/soulmee...
以識別 MNIST 為例,對于一張圖片,計算交叉熵作為 loss
loss = - ln[yi], 其中 i 是正確的標簽對應的下標,即 ^yi = 1, 其他 ^y = 0
然后對于一個batch,計算 L = total loss = Σ loss
pick the best function, 挑選一個最好的函數,即如何更新權重進行學習
選擇使 L 最小的 function (網絡參數),作為最佳 function
枚舉是不現實的,神經元個數太多,組合起來數量太大,需要使用梯度下降
w = w - η ?L/?w,重復這個過程,直到 ?L/?w 很小,即 w 的更新量很小
但是NN是非凸優化的,存在局部最小值
反向傳播,用于更新模型參數,
Backpropagation: an efficient way to compute ?L/?w in neural network
To compute the gradients efficiently, we use backpropagation.
forward pass: 計算 ?z/?w
backward pass 計算 ?l/?z = ?l/?a ?a/?z =
會計算梯度(偏導)
正向傳播,用于預測輸出,計算loss
全連接
輸入層
隱藏層
輸出層
梯度消失,梯度爆炸
原因:網絡太深,激活函數不合適,如sigmoid
https://zhuanlan.zhihu.com/p/...
只要是sigmoid函數的神經網絡都會造成梯度更新的時候極其不穩定,產生梯度消失或者爆炸問題。
靠近輸出層的單元的梯度大,學習快,會一下子收斂,認為網絡已經收斂了。而靠近輸入層的單元梯度小,學習慢,且有隨機性。這樣整個網絡就好像是基于隨機情況訓練而來的。效果不好。
如果考慮將權重初始化成大一點的值,又可能造成梯度爆炸。
梯度爆炸和梯度消失問題都是因為網絡太深,以及網絡權值更新不穩定造成的,本質上是因為梯度反向傳播中的連乘效應。
解決方法,可以用新的激活函數 ReLU
解決梯度消失的問題,因為它大于0的部分是線性的。小于0時即為0。
計算量小
https://zhuanlan.zhihu.com/p/25631496 https://zhuanlan.zhihu.com/p/33006526
欠擬合
https://zhuanlan.zhihu.com/p/...
調整網絡結構,增加層數、神經元數,但是越深 ≠ 越好
新的激活函數
MiniBatch and Batch Normalization, 提高訓練速度和效果
選擇合適的損失函數 loss
過擬合
Early Stopping
隨著在訓練數據上的損失不斷減小,在驗證集上的誤差會在達到某個最小值后反而增大,這時可以考慮提早終止網絡的訓練,保留一個在訓練集和驗證集上效果都較好的網絡。
正則化
dropout, 以一定的概率丟棄部分單元,簡化網絡。
更多數據進行訓練
創造訓練數據,比如手寫體識別,圖片角度傾斜15度又變成了新的數據
兩種特定場景的 NN
CNN, 卷積神經網絡
圖像識別
提取出圖像的不同特征,再搭配全連接網絡和softmax進行分類
圖像可以用CNN的原因
pattern具有局部性
圖像的不同區域可能會出現的同樣的pattern
對圖像進行向下采樣,對整體特征的影響不大,
卷積層用到a和b兩個原因,池化層用到c原因。 同時,利用這些原理可以減少計算量。 且,CNN是稀疏連接,且共享參數,大大減少了計算量, CNN可以很好地進行特征提取,再搭配全連接網絡和softmax進行圖像識別(分類) 由于圖像的特征具有局部性、重復性,因此可以通過卷積核進行特征提取 另外,降低圖像分辨率對圖像整體特征的影響較小,因此通過池化進行向下取樣,減少計算量 綜上,對比全連接,CNN是稀疏連接,且共享參數,大大減少了計算量,又有很好的識別效果 kernel/filter * stride * padding * 超參數 size, padding, stride, number-of-filters TODO:結合下面的輸入輸出尺寸,實例計算尺寸,計算特征 * 輸入尺寸 輸出尺寸
TODO:CNN結構,P41
RNN, 循環神經網絡
TODO,結合上次作業
什么是序列數據?舉例說明。
有時間維度的數據稱為時間序列數據。如文本段落、語音輸入、視頻流、DNA序列分析等
RNN 特點
當前的預測值考慮到了之前的運行結果
即使只有一層的RNN模型仍可能出現梯度消失和梯度爆炸,為什么?
https://zhuanlan.zhihu.com/p/...
對RNN進行優化需要用到BPTT,用來表示RNN的記憶狀態,權值的偏導中存在累乘,如果每一項都小于1,那么乘多了就變0了,如果每一項都大于1,那么乘多了又會很大,所以RNN存在梯度消失和爆炸的原因。
LSTM與一般的RNN相比,優勢在哪。LSTM的結構
可以避免梯度消失(無法消除梯度爆炸)
在LSTM中,也有和RNN一樣的記憶單元,叫做細胞狀態(LSTM Cell)
從上圖可以看到,LSTM的單元狀態更新公式中是一個加法而不是乘法
表示以前的記憶需要忘記多少,表示這一次的輸入需要添加多少
因為是加法,所以不容易導致接近于0的情況。
LSTM可以保持長時記憶,LSTM的記憶門可以控制記憶存放多久。不過LSTM可以保持長時間記憶根本原因也是因為LSTM解決了梯度消失的問題吧。
訓練LSTM相當于是訓練每個block的三個門的輸入權值
對于給定問題,能判斷出是否該使用 RNN 模型
當輸入和輸出有一個是序列數據時使用RNN模型。
典型RNN任務:語音識別、音樂生成、語義分析、機器翻譯。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/19943.html
摘要:需要注意的是用矩陣形式如行列表示二維數組,是邏輯上的概念,能形象地表示出行列關系。再次強調二維數組名如是指向行的。一維數組名如是指向列元素的。 哈嘍!這里是一只派大鑫,不是派大星。本著基礎不牢,地動山搖的學習態度,從基礎的C語言語法講到算法再到更高級的語法及框架的學習。更好地讓同樣熱愛編...
摘要:后來知道有了院賽,學長說刷院和杭電就可,我就一直刷院,到最后比賽前院的前五十道基本做完,杭電也弄了十來道,就這樣草草參加比賽了。 博客主頁: https://b...
摘要:支付寶瘋起來連自己都打的項目就是紅藍軍技術攻防演練,他們不僅每周進行全棧級別的演練,每年還會舉行規模極大的期中考試和期末考試。在支付寶,藍軍從屬于螞蟻金服技術風險部,而紅軍則包括及各業務部門的技術團隊。 摘要:?紅軍 VS 藍軍,誰是更強者? ?小螞蟻說: 自古紅藍出CP,在螞蟻金服就有這樣兩支相愛相殺的隊伍——紅軍和藍軍。藍軍是進攻方,主要職責是挖掘系統的弱點并發起真實的攻擊,俗稱...
閱讀 978·2021-11-04 16:08
閱讀 2958·2021-09-13 10:37
閱讀 492·2019-08-30 15:56
閱讀 1926·2019-08-30 15:55
閱讀 2225·2019-08-30 15:53
閱讀 2070·2019-08-30 13:13
閱讀 2908·2019-08-30 12:51
閱讀 1532·2019-08-29 16:06