當前位置:首頁 » 操作系統 » 感知器學習演算法

感知器學習演算法

發布時間: 2023-03-26 22:38:54

⑴ 歷史上第一個機器學習演算法是什麼

‍‍

Adaboost是一種迭代演算法,其核心思想是針對同一個訓練集訓練不同的分類器(弱分類器),然後把這些弱分類器集合起來,構成一個更強的最終分類器(強分類器)。其演算法本身是通過改變數據分布來實現的,它根據每次訓練集之中每個樣本的分類是否正確,以及上次的總體分類的准確率,來確定每個樣本的權值。將修改過權值的新數據集送給下層分類器進行訓練,最後將每次訓練得到的分類器最後融合起來,作為最後的決策分類器。使用adaboost分類器可以排除一些不必要的訓練數據特徵,並將關鍵放在關鍵的訓練數據上面。

‍‍

⑵ 干貨 | 基礎機器學習演算法

本篇內容主要是面向機器學習初學者,介紹常見的機器學習演算法,當然,歡迎同行交流。

哲學要回答的基本問題是從哪裡來、我是誰、到哪裡去,尋找答案的過程或許可以借鑒機器學習的套路:組織數據->挖掘知識->預測未來。組織數據即為設計特徵,生成滿足特定格式要求的樣本,挖掘知識即建模,而預測未來就是對模型的應用。

特徵設計依賴於對業務場景的理解,可分為連續特徵、離散特徵和組合高階特徵。本篇重點是機器學習演算法的介紹,可以分為監督學習和無監督學習兩大類。

無監督學習演算法很多,最近幾年業界比較關注主題模型,LSA->PLSA->LDA 為主題模型三個發展階段的典型演算法,它們主要是建模假設條件上存在差異。LSA假設文檔只有一個主題,PLSA 假設各個主題的概率分布不變(theta 都是固定的),LDA 假設每個文檔和詞的主題概率是可變的。

LDA 演算法本質可以藉助上帝擲骰子幫助理解,詳細內容可參加 Rickjin 寫的《 LDA 數據八卦》文章,淺顯易懂,順便也科普了很多數學知識,非常推薦。

監督學習可分為分類和回歸,感知器是最簡單的線性分類器,現在實際應用比較少,但它是神經網路、深度學習的基本單元。

線性函數擬合數據並基於閾值分類時,很容易受雜訊樣本的干擾,影響分類的准確性。邏輯回歸(Logistic Regression)利用 sigmoid 函數將模型輸出約束在 0 到 1 之間,能夠有效弱化雜訊數據的負面影響,被廣泛應用於互聯網廣告點擊率預估。

邏輯回歸模型參數可以通過最大似然求解,首先定義目標函數 L ( theta ),然後 log 處理將目標函數的乘法邏輯轉化為求和邏輯(最大化似然概率 -> 最小化損失函數),最後採用梯度下降求解。

相比於線性分類去,決策樹等非線性分類器具有更強的分類能力,ID3 和 C4.5 是典型的決策樹演算法,建模流程基本相似,兩者主要在增益函數(目標函數)的定義不同。

線性回歸和線性分類在表達形式上是類似的,本質區別是分類的目標函數是離散值,而回歸的目標函數是連續值。目標函數的不同導致回歸通常基於最小二乘定義目標函數,當然,在觀測誤差滿足高斯分布的假設情況下,最小二乘和最大似然可以等價。

當梯度下降求解模型參數時,可以採用 Batch 模式或者 Stochastic 模式,通常而言,Batch 模式准確性更高,Stochastic 模式復雜度更低。

上文已經提到,感知器雖然是最簡單的線性分類器,但是可以視為深度學習的基本單元,模型參數可以由自動編碼( Auto Encoder )等方法求解。

深度學習的優勢之一可以理解為特徵抽象,從底層特徵學習獲得高階特徵,描述更為復雜的信息結構。例如,從像素層特徵學習抽象出描述紋理結構的邊緣輪廓特徵,更進一步學習獲得表徵物體局部的更高階特徵。

俗話說三個臭皮匠賽過諸葛亮,無論是線性分類還是深度學習,都是單個模型演算法單打獨斗,有沒有一種集百家之長的方法,將模型處理數據的精度更進一步提升呢?當然,Model Ensembe l就是解決這個問題。Bagging 為方法之一,對於給定數據處理任務,採用不同模型/參數/特徵訓練多組模型參數,最後採用投票或者加權平均的方式輸出最終結果。

Boosting為Model Ensemble 的另外一種方法,其思想為模型每次迭代時通過調整錯誤樣本的損失權重提升對數據樣本整體的處理精度,典型演算法包括 AdaBoost 、GBDT 等。

不同的數據任務場景,可以選擇不同的 Model Ensemble 方法,對於深度學習,可以對隱層節點採用 DropOut 的方法實現類似的效果。

介紹了這么多機器學習基礎演算法,說一說評價模型優劣的基本准則。欠擬合和過擬合是經常出現的兩種情況,簡單的判定方法是比較訓練誤差和測試誤差的關系,當欠擬合時,可以設計更多特徵來提升模型訓練精度,當過擬合時,可以優化特徵量降低模型復雜度來提升模型測試精度。

特徵量是模型復雜度的直觀反映,模型訓練之前設定輸入的特徵量是一種方法,另外一種比較常用的方法是在模型訓練過程中,將特徵參數的正則約束項引入目標函數/損失函數,基於訓練過程篩選優質特徵。

模型調優是一個細致活,最終還是需要能夠對實際場景給出可靠的預測結果,解決實際問題。期待學以致用! 作者 曉惑 本文轉自阿里技術,轉載需授權

⑶ 多層感知器訓練樣本過多,預測不準,訓練樣本小則訓練精度好!

文檔介紹:
多層感知器學習演算法研究
中文摘要
多層感知器是一種單向傳播的多層前饋網路模型,由於具有高度的非線性映射能 力,是目前神經網路研究與應用中最基本的網路模型之一,廣泛應用於模式識別、圖 像處理、函數逼近、優化計算、最優預測和自適應控制等領域。而多層感知器採用的 是BP演算法。BP演算法的收斂速度慢是個固有的缺點,因為它是建立在基於只具有局 部搜索能力的梯度法之上的,是只具有局部搜索能力的方法,若用於多個極小點的目 標函數時,是無法避免陷入局部極小和速度慢的缺點的。因此,對BP演算法的研究一 直以來都是非常重要的課題。
畢業設計課題旨在對多層感知器的學習演算法進行研究,並提出一種新的學習算 法。由於BPWE (權值外推BP)演算法和TBP (三項BP)演算法都是基於權值調整的改 進演算法,而考慮將TBP演算法中的均衡因子融入到BPWE演算法中,從而使後者對權值 的調整由原來的兩項增加為三項,從而提出一種新的學習演算法TWEBP演算法。為了 驗證本演算法的優點,採用了三個例子,分別對異或問題、三分類問題和函數逼近問題 進行了實驗,發現其收斂速度和逃離局部極小點的能力都優於傳統演算法。

⑷ 什麼是LMS演算法

LMS演算法是指 Least mean square 演算法的意思。
全稱 Least mean square 演算法。是最小均方演算法中文。
感知器和自適應線性元件在歷史上幾乎是同時提出的,並且兩者在對權值的調整的演算法非常相似。它們都是基於糾錯學習規則的學習演算法。感知器演算法存在如下問題:不能推廣到一般的前向網路中;函數不是線性可分時,得不出任何結果。而由美國斯坦福大學的Widrow和Hopf在研究自適應理論時提出的LMS演算法,由於其容易實現而很快得到了廣泛應用,成為自適應濾波的標准演算法。

⑸ 線性模型

這一篇的內容旨在對之前學習過的四種不同線性分類模型( Logistic 回歸、softmax回歸、感知器和支持向量機 )做一個整理。這些模型的區別主要在於使用了不同的損失函數。

線性模型(Linear Model)是機器學習中應用最廣泛的模型,指通過樣本特徵的線性組合來進行預測的模型。給定一個 維樣本 ,其線性組合函數為:

其中 為 維的權重向量, 為偏置。線性回歸就是典型的線性模型,直接用 來預測輸出目標 。

在分類問題中,由於輸出 是一些離散的標簽, 的值域為實數,因此無法直接用 來進行預測,需要引入一個 非線性的決策函數(Decision Function) 來預測輸出目標:

其中 也稱為 判別函數(Discriminant Function)

也就是說,一個線性分類模型(Linear Classification Model)或線性分類器(Linear Classifier),是由一個(或多個)線性的判別函數 和非線性的決策函數 組成。

二分類(Binary Classification)的類標簽 只有兩種取值,通常可設為 。

在二分類中我們只需要一個線性判別函數 。所有滿足 的點組成一個分割超平面(Hyperplane),稱為決策邊界(Decision Boundary)或決策平面(Decision Surface)。決策邊界將特徵空間一分為二,劃分成兩個區域,每個區域對應一個類別。

線性模型試圖學習到參數 ,使得對於每個樣本 盡量滿足:

上面兩個公式也可以合並,即參數 盡量滿足:

接下來我們會看到,對線性模型來說, 這一表達式是十分重要的。

於是我們可以定義: 對於訓練集 ,若存在權重向量 ,對所有樣本都滿足 ,那麼訓練集 是線性可分的

接下來我們考慮多分類的情形,假設一個多類分類問題的類別為 ,常用的方式有以下三種:

若存在類別 ,對所有的其他類別 ,都滿足 ,那麼 屬於類別 。即:

「一對其餘」和「一對一」都存在一個缺陷:特徵空間中會存在一些難以確定類別的區域,而「argmax」方式很好地解決了這個問題 。下圖給出了用這三種方式進行三類分類的示例,其中不同顏色的區域表示預測的類別,紅色直線表示判別函數 的直線。在「argmax」方式中,類 和類 的決策邊界實際上由 決定,其法向量為 。

在本節中我們採用 以符合Logistic 回歸的描述習慣。

為解決連續線棗簡早性函數不適合進行分類的問題,我們引入非線性函數 來預測類別標簽的後驗概率 :

其中 通常稱為 激活函數(Activation Function) ,其作用是把線性函數的值域從實數區間「擠壓」到了 之間,可以用來表示概率。

在Logistic回歸中,我們使用Logistic函數來作為激活函數。標簽 的後驗概率為:

標簽 的後驗概率為:

進行變換後得到:

其中 為樣本 為正反例後驗概率的比值,稱為 幾率(Odds) ,幾率的對數稱為對數幾率。因此,Logistic 回歸也稱為 對數幾率回歸(Logit Regression)

Logistic回歸採用交叉熵作為損失函數,並使用梯度下降法來對參數進行優化。 其風險函數為:

風險函數 是關於參數 的連續可導的凸函數。因此Logistic回歸除咐判了梯度下凳雀降法之外還可以用高階的優化方法,比如牛頓法,來進行優化。

Softmax回歸,也稱為多項(multinomial)或多類(multi-class)的Logistic回歸,是 Logistic回歸在多類分類問題上的推廣

對於多類問題,類別標簽 可以有 個取值。給定一個樣本x,Softmax回歸預測的屬於類別 的條件概率為:

其中 是第 類的權重向量。

Softmax回歸的決策函數可以表示為:

給定 個訓練樣本 , Softmax回歸使用交叉熵損失函數來學習最優的參數矩陣 。

採用交叉熵損失函數,Softmax回歸模型的風險函數為:

風險函數 關於 的梯度為:

採用梯度下降法,Softmax回歸的訓練過程為:

感知器可謂是最簡單的人工神經網路,只有一個神經元。

感知器是一種簡單的兩類線性分類模型,其分類准則為:

給定N 個樣本的訓練集: ,其中 ,感知器學習演算法試圖找到一組參數 ,使得對於每個樣本 有

感知器的學習演算法是一種錯誤驅動的在線學習演算法,先初始化一個權重向量 (通常是全零向量),然後每次分錯一個樣本 時,即 ,就用這個樣本來更新權重:

根據感知器的學習策略,可以反推出 感知器的損失函數 為:

採用隨機梯度下降,其每次更新的梯度為:

感知器收斂性不再證明,參考之前的筆記 https://www.jianshu.com/p/d83aa6c8068f 。

感知器的學習到的權重向量和訓練樣本的順序相關。 在迭代次序上排在後面的錯誤樣本,比前面的錯誤樣本對最終的權重向量影響更大 。比如有1000個訓練樣本,在迭代100個樣本後,感知器已經學習到一個很好的權重向量。在接下來的899個樣本上都預測正確,也沒有更新權重向量。但是在最後第1000 個樣本時預測錯誤,並更新了權重。這次更新可能反而使得權重向量變差。

為了改善這種情況,可以使用「參數平均」的策略來提高感知器的魯棒性,也叫 投票感知器 (投票感知器是一種集成模型)。

投票感知器記錄第 次更新後得到的權重 在之後的訓練過程中正確分類樣本的次數 。這樣最後的分類器形式為:

投票感知器雖然提高了感知器的泛化能力,但是需要保存 個權重向量。在實際操作中會帶來額外的開銷。因此,人們經常會使用一個簡化的版本,也叫做平均感知器:

其中 為平均的權重向量。

給定N 個樣本的訓練集: ,其中 ,如果兩類樣本是線性可分的,即存在一個超平面:

將兩類樣本分開,那麼對於每個樣本都有 。

數據集 中每個樣本 到分割超平面的距離為:

定義整個數據集 中所有樣本到分割超平面的最短距離為間隔(Margin) :

如果間隔 越大,其分割超平面對兩個數據集的劃分越穩定,不容易受雜訊等因素影響。支持向量機的目標是尋找一個超平面 使得 最大,即:

令 ,則上式等價於:

數據集中所有滿足 的點,都稱為 支持向量

接下來的推導不詳細敘述了,之前的筆記里已經記錄過。

軟間隔的優化問題形式如下:

其中 稱為 Hinge損失函數 。 可以看作是正則化系數。

其實這一節才是整理的關鍵,有助於釐清各個分類器之間的聯系。

⑹ 為什麼感知器選擇正負一作為分類的輸出,而不是1,2或5,-5

感知啟沒器學習演算法是神羨清經網路中的一個概念,單層感知器是最簡單的神經網路,輸入層和輸出層直接相連。

每一個輸入端和其上的權值相乘,然後將這些乘積相加得到乘積和,這個結果與閾值相比較(一般為0),若大於閾值輸出端就取1,反之,輸出端取-1。

2、權值更新
初始權重向量W=[0,0,0],更新公式W(i)=W(i)+ΔW(i);ΔW(i)=η*(y-y』)*X(i);
η:學習率,介於[0,1]之間
y:輸入樣本的正確分類
y』:感知器計算出來的分類
通過上面公式不斷更新權值,直到達到分類要求。

3、演算法步驟

初始化權重向量W,與輸入向量做點乘悄派納,將結果與閾值作比較,得到分類結果1或-1。

⑺ 感知機演算法及收斂性證明

感知機演算法其實已經很熟悉了,這次看《統計學習方法》權當復習一遍,然後有一橘念個point對我來說是新的—— 感知機演算法實際上採用了隨機梯度下降 。這其實是一個很顯然的點,但我之前看到的資料都是直接說明了超平面參數的更新方式,並從幾何直觀上解釋了這樣做是為了讓超平面向誤分樣本點的方向旋轉,而未從梯度的角度來解釋,這里補充一下這個角度。

感知機(perceptron)是二分類線性分類模型,其輸入空間(特徵空間)是 ,輸出空間是 ,前伍簡由輸入空間到輸出空間的如下函數:

稱為感知機。 和 分別是感知機的權值和偏置。

感知機的損失函數定義為 所有誤分類點到超平面的距離慧褲之和 ,即:

其中 表示誤分類點的集合,若 固定,則損失函數梯度為:

採用隨機梯度下降法,每次隨機選取一個誤分類點 ,對 進行更新:

其中 稱為學習率。

感知機演算法流程如下:

(1)選取初值 。
(2)在訓練集中選取數據 。
(3)如果 ,則更新參數:

(4)轉至(2)直至訓練集中無誤分點。

所謂感知機演算法的收斂性,就是說只要給定而分類問題是線性可分的,那麼按上述感知機演算法進行操作,在有限次迭代後一定可以找到一個可將樣本完全分類正確的超平面。

首先,為了方便推導,我們將偏置 並入權重向量 ,記作 ,同樣將輸入向量加以擴充,記作 ,顯然, 。

既然樣本是線性可分的,我們可以假設有一個滿足條件 的超平面 將樣本點完全正確分開,且存在 ,對所有 ,有:

令 ,則感知機演算法在訓練集上誤分類次數 滿足:

證明:

結合上述兩個結論,可以得到:

從而感知機演算法的收斂性得證。

⑻ 感知機(Perceptron)

在之前的文章中我們已經講過了邏輯回歸分類器,現在趁熱打鐵總結一下與邏輯回歸非常相似的感知機模型。感知機模型是一個非常古老的分類演算法,現在很少會單獨使用它,但是它的原理簡單有效,很值得學習和理解,從原理上來說,感知機模型是神經網路和支持向量機的基礎,理解了感知機有利於理解支持向量機和神經網路的原理。

在 廣義線性模型(4)邏畝旁輯回歸 中我們說邏輯回歸可以視為包含一個線性回歸和一個值域映射兩個過程,如果拿邏輯回歸與感知機作比較的話,可以說感知機也同樣包括這兩個過程,只不過它的值域映射比邏輯回歸簡單很多,感知機直接將線性模型的輸出映射為+1和-1,即需要預測的兩個類別上,正可謂簡單粗暴。所以說,感知機也是線性模型,用來處理線性可分的二分類問題,同樣屬於判別模型。

感知機假設數據線性可分的,希望通過學習得到一個線性的決策邊界,將訓練數據集正樣本點和負樣本點完全正確分開的分離,在決策邊界一側為正樣本,另一側為負樣本,這個思路跟邏輯回歸是一樣的。

感知機模型可以表示為下式,其中 函數將線性模型的輸出映射為預測類別:

由點到超平面的距離計算方法可知: 代表了樣本點到決策邊界的距離(文章沒有用 的形式,拋棄了常數項的問題,其實是不準確的,若有看官,還請不要介意);

同時我們可知, 的樣本類別輸出值取為1,滿足 的樣本類別輸出值取為-1,因此正確分類的樣本滿足 ,而錯誤分類的樣本滿足 , 表示了錯誤分類的樣本到決策超平面的距離,感知機損失函數的優化目標,就是期望使錯誤分類的所有樣本到超平面的距離之和最小(正樣本+1,負樣本-1這樣的定義方式使得定義損失函數變得很方便),損失函數為:

式中,M為樣本中所有錯誤分類樣本點的集合。實際上,我們會把損失函數中參數的L2正則項 扔掉,認為它不會影響優化結果,即得到損失函數:

為什麼可以不考慮 呢? 搜索解空間的時候, 會一直在變化啊?我覺得這個挺難理解的,根據資料及猜測,我覺得勉強能接受的原因為:

確定了損失函數的形式,接下來就要進行損失函數的優化,還是使用梯度下降,由於損失函數中只有錯誤分類的樣本點才參與計算,所以不需要使用普通的批量梯度下降了,我們選擇使用 隨機梯度下降 每次迭代只使用一個錯誤分類的樣本來對參數進行更新

感知機的學習演算法的原始形式即直接使用梯度下降,其學習過程為:

可以發現,在原始形式中,每一輪迭代都需要判斷各個樣本點是不是錯誤分類點,既對於每個樣本點 都需要計算 ,向量內積 的時間復雜度為 ,因此總的時間復雜度為 ,其中N為樣本點數量,k為迭代次數(雖然每次迭代不需要全部遍歷N個樣本,不過表達時間復雜度時可以去掉因子保留變數,表示成 ),這個時間復雜度還是比較高的,有沒有更快捷的計算方法呢?我們來看看感知機的學習演算法的對偶形式。

什麼叫對偶形式?這里的對偶可不是「三尺劍,六鈞弓」的意思,優化理論中的對偶問題是指每一個線性規劃問題(稱為原始問題)有一迅余橡個與它對應的對偶線性規劃問題(稱為對偶問題),原始問題與對偶問題的解是對應的,得出一個問題的解,另一個問題的解也就得到了,可以簡單的理解為從不同角度看待同一個問題,通過改變這個問題的形式使得我們更好求解。

根據感知機學習演算法的原始形式可知,只有錯誤分類的樣本點才會用於梯度下降計算,對於被 次誤分類而更新的樣本 ,它參與 迭代的次數同樣為 。如果令參數 初始值為 , 這樣我們的 的表達毀汪式可以寫為:

表示對全部樣本 中的每個個樣本點進行 次梯度下降,其中沒被錯誤分類過的樣本點 。引用知乎上一個答案對 的理解:

這樣參數 的學習問題就轉變成了樣本錯誤分類次數 的學習問題,此之謂「對偶」也。這樣做的好處是什麼呢?原始形式的痛點在於 中的內積運算,在對偶問題中轉變為:

由內積 轉變為內積 ,區別是 是已知的,可以提前通過矩陣運算得到Gram矩陣保存下來重用,樣本循環和迭代的時間復雜度不變, 個 維向量的內積計算提前,所以時間復雜度大概可以表示為 ,與 倒不太好比較,不過這里按矩陣運算的時間復雜度完全沒有優化來計算的,實際肯定比這小得多,並且工程上矩陣運算都是高度優化過的,非常快,所以對偶形式在使用效率上是很有優勢的。

對偶形式的學習過程為:

感知機演算法原理很簡單,但其中很多思路很棒,所以由它發展出了神經網路、支持向量機這樣的更復雜、更准確的演算法,搞懂了感知機模型的基本原理,接下來我們就來寫一寫跟它很相似的支持向量機~



主要參考

《統計學習方法》 李航
感知機的損失函數為什麼可以採用函數間隔(忽略1/||w||)?
如何理解感知機學習演算法的對偶形式?

⑼ 神經網路演算法

20 世紀五、六⼗年代,科學家 Frank Rosenblatt其受到 Warren McCulloch 和 Walter Pitts早期的⼯作的影響,發明了感知機(Perceptrons)。

⼀個感知器接受⼏個⼆進制輸⼊, ,並產⽣⼀個⼆進制輸出:

如上圖所示的感知機有三個輸⼊: 。通常可以有更多或更少輸⼊。 我們再引⼊權重: ,衡量輸入對輸出的重要性。感知機的輸出為0 或者 1,則由分配權重後的總和 ⼩於等於或者⼤於閾值決定。和權重⼀樣,閾值(threshold)是⼀個實數,⼀個神經元的參數。⽤更精確的代數形式如下:

給三個因素設置權重來作出決定:

可以把這三個因素對應地⽤⼆進制變數 來表⽰。例如,如果天⽓好,我們把

,如果不好, 。類似地,如果你的朋友陪你去, ,否則 。 也類似。

這三個對於可能對你來說,「電影好不好看」對你來說最重要,而天氣顯得不是那麼的重要。所以你會這樣分配權值: ,然後定義閾值threshold=5。

現在,你可以使⽤感知器來給這種決策建⽴數學模型。

例如:

隨著權重和閾值的變化,你可以得到不同的決策模型。很明顯,感知機不是⼈做出決策使⽤的全部模型。但是這個例⼦說明了⼀個感知機如何能權衡不同的依據來決策。這看上去也可以⼤致解釋⼀個感知機⽹絡有時確實能夠做出一些不錯的決定。

現在我們隊上面的結構做一點變化,令b=-threshold,即把閾值移到不等號左邊,變成偏置, 那麼感知器的規則可以重寫為:

引⼊偏置只是我們描述感知器的⼀個很⼩的變動,但是我們後⾯會看到它引導更進⼀步的符號簡化。因此,我們不再⽤閾值,⽽總是使⽤偏置。

感知機是首個可以學習的人工神經網路,它的出現引起的神經網路的第一層高潮。需要指出的是,感知機只能做簡單的線性分類任務,而且Minsky在1969年出版的《Perceptron》書中,證明了感知機對XOR(異或)這樣的問題都無法解決。但是感知機的提出,對神經網路的發展是具有重要意義的。

通過上面的感知機的觀察我們發現一個問題,每個感知機的輸出只有0和1,這就意味著有時我們只是在單個感知機上稍微修改了一點點權值w或者偏置b,就可能造成最終輸出完全的反轉。也就是說,感知機的輸出是一個階躍函數。如下圖所示,在0附近的時候,輸出的變化是非常明顯的,而在遠離0的地方,我們可能調整好久參數也不會發生輸出的變化。

這樣階躍的跳變並不是我們想要的,我們需要的是當我們隊權值w或者偏置b做出微小的調整後,輸出也相應的發生微小的改變。這同時也意味值我們的輸出不再只是0和1,還可以輸出小數。由此我們引入了S型神經元。

S型神經元使用 S 型函數,也叫Sigmoid function函數,我們用它作為激活函數。其表達式如下:

圖像如下圖所示:

利⽤實際的 σ 函數,我們得到⼀個,就像上⾯說明的,平滑的感知器。 σ 函數的平滑特性,正是關鍵因素,⽽不是其細部形式。 σ 的平滑意味著權重和偏置的微⼩變化,即 ∆w 和 ∆b,會從神經元產⽣⼀個微⼩的輸出變化 ∆output。實際上,微積分告訴我們

∆output 可以很好地近似表⽰為:

上面的式子是⼀個反映權重、偏置變化和輸出變化的線性函數。這⼀線性使得我們可以通過選擇權重和偏置的微⼩變化來達到輸出的微⼩變化。所以當 S 型神經元和感知器本質上是相同的,但S型神經元在計算處理如何變化權重和偏置來使輸出變化的時候會更加容易。

有了對S型神經元的了解,我們就可以介紹神經網路的基本結構了。具體如下:

在⽹絡中最左邊的稱為輸⼊層,其中的神經元稱為輸⼊神經元。最右邊的,即輸出層包含有輸出神經元,在圖中,輸出層只有⼀個神經元。中間層,既然這層中的神經元既不是輸⼊也不是輸出,則被稱為隱藏層。

這就是神經網路的基本結構,隨著後面的發展神經網路的層數也隨之不斷增加和復雜。

我們回顧一下神經網路發展的歷程。神經網路的發展歷史曲折盪漾,既有被人捧上天的時刻,也有摔落在街頭無人問津的時段,中間經歷了數次大起大落。

從單層神經網路(感知機)開始,到包含一個隱藏層的兩層神經網路,再到多層的深度神經網路,一共有三次興起過程。詳見下圖。

我們希望有⼀個演算法,能讓我們找到權重和偏置,以⾄於⽹絡的輸出 y(x) 能夠擬合所有的 訓練輸⼊ x。為了量化我們如何實現這個⽬標,我們定義⼀個代價函數:

這⾥ w 表⽰所有的⽹絡中權重的集合, b 是所有的偏置, n 是訓練輸⼊數據的個數,
a 是表⽰當輸⼊為 x 時輸出的向量,求和則是在總的訓練輸⼊ x 上進⾏的。當然,輸出 a 取決於 x, w和 b,但是為了保持符號的簡潔性,我沒有明確地指出這種依賴關系。符號 ∥v∥ 是指向量 v 的模。我們把 C 稱為⼆次代價函數;有時也稱被稱為均⽅誤差或者 MSE。觀察⼆次代價函數的形式我們可以看到 C(w, b) 是⾮負的,因為求和公式中的每⼀項都是⾮負的。此外,代價函數 C(w,b)的值相當⼩,即 C(w; b) ≈ 0,精確地說,是當對於所有的訓練輸⼊ x, y(x) 接近於輸出 a 時。因

此如果我們的學習演算法能找到合適的權重和偏置,使得 C(w; b) ≈ 0,它就能很好地⼯作。相反,當 C(w; b) 很⼤時就不怎麼好了,那意味著對於⼤量地輸⼊, y(x) 與輸出 a 相差很⼤。因此我們的訓練演算法的⽬的,是最⼩化權重和偏置的代價函數 C(w; b)。換句話說,我們想要找到⼀系列能讓代價盡可能⼩的權重和偏置。我們將采⽤稱為梯度下降的演算法來達到這個⽬的。

下面我們將代價函數簡化為C(v)。它可以是任意的多元實值函數, 。
注意我們⽤ v 代替了 w 和 b 以強調它可能是任意的函數,我們現在先不局限於神經⽹絡的環境。

為了使問題更加簡單我們先考慮兩個變數的情況,想像 C 是⼀個只有兩個變數 和 的函數,我們的目的是找到 和 使得C最小。

如上圖所示,我們的目的就是找到局部最小值。對於這樣的一個問題,一種方法就是通過微積分的方法來解決,我們可以通過計算導數來求解C的極值點。但是對於神經網路來說,我們往往面對的是非常道的權值和偏置,也就是說v的維數不只是兩維,有可能是億萬維的。對於一個高維的函數C(v)求導數幾乎是不可能的。

在這種情況下,有人提出了一個有趣的演算法。想像一下一個小球從山頂滾下山谷的過程, 我們的⽇常經驗告訴我們這個球最終會滾到⾕底。我們先暫時忽略相關的物理定理, 對球體的⾁眼觀察是為了激發我們的想像⽽不是束縛我們的思維。因此與其陷進物理學⾥凌亂的細節,不如我們就這樣問⾃⼰:如果我們扮演⼀天的上帝,能夠構造⾃⼰的物理定律,能夠⽀配球體可以如何滾動,那麼我們將會採取什麼樣的運動學定律來讓球體能夠總是滾落到⾕底呢?

為了更精確地描述這個問題,讓我們思考⼀下,當我們在 和 ⽅向分別將球體移動⼀個很⼩的量,即 ∆ 和 ∆ 時,球體將會發⽣什麼情況。微積分告訴我們 C 將會有如下變化:

也可以用向量表示為

現在我們的問題就轉換為不斷尋找一個小於0的∆C,使得C+∆C不斷變小。

假設我們選取:

這⾥的 η 是個很⼩的正數(稱為學習速率),於是

由於 ∥∇C∥2 ≥ 0,這保證了 ∆C ≤ 0,即,如果我們按照上述⽅程的規則去改變 v,那麼 C
會⼀直減⼩,不會增加。

所以我們可以通過不斷改變v來C的值不斷下降,是小球滾到最低點。

總結⼀下,梯度下降演算法⼯作的⽅式就是重復計算梯度 ∇C,然後沿著相反的⽅向移動,沿著⼭⾕「滾落」。我們可以想像它像這樣:

為了使梯度下降能夠正確地運⾏,我們需要選擇合適的學習速率η,確保C不斷減少,直到找到最小值。

知道了兩個變數的函數 C 的梯度下降方法,我們可以很容易的把它推廣到多維。我們假設 C 是⼀個有 m 個變數 的多元函數。 ∆C 將會變為:

其中, ∇C為

∆v為:

更新規則為:

在回到神經網路中,w和b的更新規則為:

前面提到神經⽹絡如何使⽤梯度下降演算法來學習他們⾃⾝的權重和偏置。但是,這⾥還留下了⼀個問題:我們並沒有討論如何計算代價函數的梯度。這里就需要用到一個非常重要的演算法:反向傳播演算法(backpropagation)。

反向傳播演算法的啟示是數學中的鏈式法則。

四個方程:

輸出層誤差方程:

當前層誤差方程:

誤差方程關於偏置的關系:

誤差方程關於權值的關系

演算法描述:

檢視這個演算法,你可以看到為何它被稱作反向傳播。我們從最後⼀層開始向後計算誤差向量δ。這看起來有點奇怪,為何要從後⾯開始。但是如果你認真思考反向傳播的證明,這種反向移動其實是代價函數是⽹絡輸出的函數的結果。為了理解代價隨前⾯層的權重和偏置變化的規律,我們需要重復作⽤鏈式法則,反向地獲得需要的表達式。

參考鏈接: http://neuralnetworksanddeeplearning.com/

熱點內容
mysqllinux安裝 發布:2025-05-19 22:42:55 瀏覽:357
android開發必備 發布:2025-05-19 22:36:08 瀏覽:889
硬碟緩存什麼用 發布:2025-05-19 22:09:41 瀏覽:13
蘋果筆記本配置好的有哪些 發布:2025-05-19 22:08:57 瀏覽:16
oracle存儲過程中批量修改表結構 發布:2025-05-19 22:02:22 瀏覽:521
php支付寶sdk 發布:2025-05-19 22:01:06 瀏覽:603
雲掃墓源碼 發布:2025-05-19 22:00:32 瀏覽:594
executeupdatesql 發布:2025-05-19 21:58:36 瀏覽:218
中國電信如何轉人工密碼是多少 發布:2025-05-19 21:44:54 瀏覽:210
求階乘的c語言 發布:2025-05-19 21:15:20 瀏覽:965