序
宣告:以下是博主精心整理的機器學習和AI系列文章,博主后續會不斷更新該領域的知識:
人工智能AI實戰系列代碼全決議
手把手教你ML機器學習演算法原始碼全決議
有需要的小伙伴趕緊訂閱吧,
人工智能的浪潮正在席卷全球,諸多詞匯時刻縈繞在我們耳邊:人工智能(Artificial Intelligence)、機器學習(Machine Learning)、深度學習(Deep Learning),不少人對這些高頻詞匯的含義及其背后的關系總是似懂非懂、一知半解,

人工智能的研究領域也在不斷擴大,上圖展示了人工智能研究的各個分支,包括專家系統、機器學習、進化計算、模糊邏輯、計算機視覺、自然語言處理、推薦系統等,
人工智能一定程度上來說是機器學習喝深度學習的深層次應用,要想學好人工智能,我們需要掌握的哪些經典演算法呢?
一起來看看吧,
前言
深度學習是很多人面臨的一個挑戰,因為它在過去的十年中已經慢慢地改變了形式,為了在視覺上設定深度學習,下圖展示了AI,機器學習和深度學習三者之間關系的概念,

人工智能領域廣泛,已經有很長一段時間了,深度學習是機器學習領域的一個子集,AI的一個子領域,
一般將深度學習網路與“典型”前饋多層網路(FP)區分開來的方面如下:
比以前的網路更多的神經元
更復雜的連接層的方式
“寒武紀大爆炸”的計算訓練能力
自動特征提取
當我說“更多的神經元”,意思是神經元數量已經上升了多年來表達更復雜的模型,
然后,深度學習可以被定義為具有四個基本網路體系結構之一中的:大量‘引數和層’的神經網路:
無監督的預訓練網路
卷積神經網路
回歸(復)神經網路
遞回神經網路
在本文中,我們主要關注后三種架構,
一、卷積神經網路
是基本上已經跨越使用共享權重的空間延伸的標準神經網路,CNN被設計為通過在內部卷積來識別影像,其看到影像上識別的物件的邊緣,
二、回歸神經網路
是基本上已經通過具有邊緣,其遞進給到下一個時間步長,而不是成在同一時間步驟中的下一層跨越時間延長標準神經網路,RNN被設計為識別序列,例如語音信號或文本,它里面的回圈意味著網路中存在短暫的記憶體,
三、遞回神經網路
更像是一個分層網路,其中輸入序列確實沒有時間方面,但輸入必須以樹狀方式分層處理,以下10種方法可以應用于所有這些體系結構,
經典演算法
1 - 反向傳播(BP)
Back-propagation只是一種計算函式偏導數(或梯度)的方法,函式具有函陣列成的形式(如神經網路),當你使用基于梯度的方法(梯度下降只是其中之一)解決優化問題時,你需要在每次迭代中計算函式梯度,

對于神經網路而言,目標函式具有合成的形式
你如何計算梯度?
BP演算法是Delta規則的推廣,要求每個人工神經元(節點)所使用的激勵函式必須是可微的,BP演算法特別適合用來訓練前向神經網路,有兩種常見的方式來做到這一點:
(一)分析微分,你知道函式的形式,只需使用鏈式規則(基本演算)來計算函式梯度,
(二)使用有限差分進行近似微分,
其中(二)方法的計算量很大,因為評估函式的數量級是 O(N),其中 N 是引數的數量,與分析微分相比,就相形見絀了,然而,有限差分通常用于在除錯時驗證后端時很有效,
2 - 隨機梯度下降(SGD)
想想漸變下降的一種直觀的方式是想象一條源于山頂的河流的小路,
梯度下降的目標正是河流努力實作的目標 - 即到達從山上邁著扯著蛋的步子溜向山腳,
現在,如果山的地形是這樣形成的,即在到達最終目的地(這是山麓的最低點)之前,河流不必完全停下來,那么這是我們所希望的理想情況,
在機器學習中,我們已經找到了從初始點(山頂)開始的解的全域最小值(或最優值),
但是,這可能是因為地形的性質使得路徑上的幾個坑,這可能會迫使河流陷入困境,在機器學習方面,這種‘坑’被稱為區域最優,

因此,梯度下降傾向于卡在區域最小值,這取決于地形的性質(或ML中的函式),
但是,當你有一個特殊的山地形(形狀像一個碗,在ML術語中稱為凸函式),該演算法始終保證找到最佳,
你可以想象這再次描繪了一條河流,這些特殊的地形(又稱凸函式)總是在ML中優化的祝福,另外,取決于你最初從哪里開始(即函式的初始值),你可能會走上一條不同的路,同樣,根據河流的爬升速度(即梯度下降演算法的學習速率或步長),你可能會以不同的方式到達最終目的地,
3 - 學習率衰減
根據隨機梯度下降優化程式調整學習率可以提高性能并減少訓練時間,有時這被稱為 學習速率退火 或 自適應學習速率,

最簡單的學習速率:是隨著時間的推移而降低學習速度,當使用較大的學習速率值時,它們具有在訓練程序開始時進行大的改變的益處,并且降低了學習速率,使得稍后在訓練程序中對較小的速率進行訓練更新,從而對訓練進行更新,這樣可以達到早期快速學習好權重并稍后進行微調的效果,
兩個流行和易于使用的學習率衰減如下:
在訓練程序中逐步降低學習率,
在特定的epochs中降低學習速度比如Adam
4 - Dropout
具有大量引數的深度神經網路是非常強大的機器學習系統,過度擬合也是一個問題,大型網路的使用也很慢,通過在測驗時間結合許多不同的大型神經網路的預測,很難處理過度擬合,Dropout是解決這個問題的一種技巧,

關鍵的思想是在訓練期間從神經網路中隨機丟掉某些單元(連同他們的連接),這可以防止單元適應太多
在訓練期間,從不同的指數級的“稀疏”網路中剔除樣本,
在測驗時間,通過簡單地使用具有較小權重的單個未解壓的網路來容易地近似平均所有這些細化網路的預測的效果,這顯著減少了過擬合,并且比其他正則化方法有了重大改進,
Dropout已被證明可以提高神經網路在視覺監控學習任務,語音識別,檔案分類和計算生物學的性能,在許多基準資料集上獲得最新的結果,
5 - 最大的池化
最大池化是一個基于樣本的離散化程序,目標是對輸入表示(影像,隱藏層輸出矩陣等)進行下采樣,降低其維度,并允許對包含在磁區域中的特征進行假設,

這部分是通過提供表示的抽象形式來解決過度擬合,它通過減少要學習的引數數量來降低計算成本,并為內部表示提供基本的平移不變性,最大池化是通過將最大過濾波器應用于初始表示的通常不重疊的子區域來完成的,
6 - 批量標準化(有時也稱歸一化)
當然,包括深度網路的神經網路需要仔細調整權重,初始化和學習引數,
權重問題:
無論權重的初始化如何,無論是隨機的還是經驗性的選擇,它們都遠離學習權重,考慮一個小批量,在最初的時期,將會有許多例外值在所需的功能激活方面,
深層神經網路本身是不適宜的,即初始層中的小擾動導致后面層的大變化,
在反向傳播程序中,這些現象會導致對梯度的分離,這意味著在學習權重以產生所需輸出之前,梯度必須補償例外值,這導致需要額外的epoch來收斂,

批量歸一化使這些梯度從分散到正常值,并在小批量范圍內流向共同目標(通過歸一化)
學習率問題:一般來說,學習率保持較低,只有一小部分的梯度校正權重,原因是例外激活的梯度不應影響學習的激活,通過批量標準化,這些例外激活減少,因此可以使用更高的學習速度來加速學習程序,
7-LSTM網路:
LSTM網路具有以下三個方面,使其與常規神經網路中的常見神經元不同:
它決定何時讓輸入進入神經元,
它決定何時記住上一個時間中計算的內容
它決定何時讓輸出傳遞到下一個時間戳,
LSTM的優點在于它根據當前的輸入本身來決定所有這些,所以如果你看下面的圖表:

當前時間標記處的輸入信號x(t)決定所有上述3個點,
輸入門決定點1.遺忘門在點2的決策,輸出門在點3輸出決策,單獨的輸入是能夠采取所有這三個決策,這受到我們的大腦如何作業的啟發,并且可以基于輸入來處理突然的背景關系切換,
8-Skip-gram
詞嵌入模型 的目標是為每個詞匯項學習一個高維密集表示,其中嵌入向量之間的相似性顯示了相應詞語之間的語意或句法相似性,
Skip-gram是學習單詞嵌入演算法的模型,此模型(以及許多其他的詞語嵌入模型)背后的主要思想如下:如果 兩個詞匯詞匯共享相似的背景關系,則它們是相似的,

換句話說,假設你有一個句子,就像“貓是哺乳動物”一樣,如果你用“狗”而不是“貓”,這個句子還是一個有意義的句子,所以在這個例子中,“狗”和“貓”可以共享相同的語境(即“是哺乳動物”),
9 - Continuous Bag Of Words(CBOW)
在自然語言處理問題中,我們希望學習將檔案中的每個單詞表示為一個數字的向量,使得出現在相似的背景關系中的單詞具有彼此接近的向量,
在連續的單詞模型中,目標是能夠使用圍繞特定單詞的背景關系并預測特定單詞,基于上述假設,你可以考慮一個背景關系視窗(一個包含k個連續項的視窗)
然后你應該跳過其中一個單詞,試著去學習一個能夠得到除跳過項外的所有項的神經網路,并預測跳過的項,如果兩個詞在一個大語料庫中反復共享相似的語境,則這些詞的嵌入向量將具有相近的向量,

我們通過在一個大的語料庫中采取大量的句子來做到這一點,每當我們看到一個單詞時,我們就會聽到這個單詞,然后,我們將背景關系單詞輸入到一個神經網路,并在這個背景關系的中心預測單詞,
當我們有成千上萬個這樣的背景關系單詞和中心詞時,我們有一個神經網路資料集的實體,我們訓練神經網路,最后編碼的隱藏層輸出表示特定單詞的嵌入,恰巧當我們通過大量的句子進行訓練時,類似語境中的單詞得到相似的向量,
10 - 遷移學習(brilliant idea)
讓我們考慮一下影像如何穿過卷積神經網路,假設你有一個影像,你應用卷積,并得到像素的組合作為輸出,
假設他們是邊緣,現在再次應用卷積,所以現在你的輸出是邊或線的組合,現在再次應用卷積,所以你的輸出是線的組合等等,
你可以把它看作是每一層尋找一個特定的模式,神經網路的最后一層往往會變得非常細化,在ImageNet上,你的網路最后一層就是尋找baby,狗或飛機等等,你可能會看到網路尋找眼睛或耳朵或嘴巴或輪子,

深度CNN中的每一層都逐漸建立起越來越高層次的特征表征,最后幾層往往是專門針對你輸入模型的任何資料,另一方面,早期的圖層更為通用,在一大類圖片中有許多簡單的圖案,
轉移學習就是當你在一個資料集上訓練CNN時,切掉最后一層,在不同的資料集上重新訓練最后一層的模型,直觀地說,你正在重新訓練模型以識別不同的高級功能,因此,訓練時間會減少很多,所以當你沒有足夠的資料或者訓練需要太多的資源時,遷移學習是一個有用的工具,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/271512.html
標籤:AI
上一篇:馬斯克的火箭又炸了,這次可能怪美國宇航管理局:因督導員遲到,星艦原型SN11被迫在濃霧中發射...
下一篇:第一篇:初學編程對未來的展望
