1. 程式人生 > >演算法工程師修仙之路:吳恩達機器學習(九)

演算法工程師修仙之路:吳恩達機器學習(九)

吳恩達機器學習筆記及作業程式碼實現中文版

神經網路引數的反向傳播演算法


代價函式

  • 假設神經網路的訓練樣本有 m m 個,每個包含一組輸入 x x

    和一組輸出訊號 y y L L 表示神經網路層數, S
    I S_I
    表示每層的神經元個數( S l S_l
    表示輸出層神經元個數), S L S_L 代表最後一層中處理單元的個數。

  • 將神經網路的分類定義為兩種情況:二類分類和多類分類。

    • 二類分類: S L = 1 S_L=1 , y = 0 o r 1 y=0 or 1 表示哪一類;
    • K類分類: S L = k S_L=k , y i = 1 y_i=1 表示分到第 i i 類; (k>2)
  • 邏輯迴歸問題中我們的代價函式為:

    • J ( θ ) = 1 m i = 1 m [ y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 y ( i ) ) l o g ( 1 h θ ( x ( i ) ) ) ] + λ 2 m j = 1 n θ j 2 J(\theta)=-\frac{1}{m}\sum_{i=1}^m[y^{(i)}log(h_\theta(x^{(i)})) + (1−y^{(i)}) log(1-h_\theta(x^{(i)}))]+\frac{\lambda}{2m}\sum_{j=1}^n\theta_j^2
    • 在邏輯迴歸中,我們只有一個輸出變數,又稱標量( scalar),也只有一個因變數 y y
  • 在神經網路中,我們可以有很多輸出變數, h θ ( x ) ℎ_\theta(x) 是一個維度為K的向量,並且我們訓練集中的因變數也是同樣維度的一個向量,因此我們的代價函式會比邏輯迴歸更加複雜一些:

    • J ( Θ ) = 1 m [ i = 1 m k = 1 k [ y k ( i ) l o g ( h Θ ( x ( i ) ) ) k + ( 1 y k ( i ) ) l o g ( 1 ( h Θ ( x ( i ) ) ) k ) ] + λ 2 m l = 1 L 1 i = 1 S l j = 1 S l + 1 ( Θ j i ( l ) ) 2 ] J(\Theta)=-\frac{1}{m}[\sum_{i=1}^m\sum_{k=1}^k[y_k^{(i)}log(h_\Theta(x^{(i)}))_k + (1−y_k^{(i)}) log(1-(h_\Theta(x^{(i)}))_k)]+\frac{\lambda}{2m}\sum_{l=1}^{L-1}\sum_{i=1}^{S_l}\sum_{j=1}^{S_l+1}(\Theta_{ji}^{(l)})^2]
    • 這個看起來複雜很多的代價函式背後的思想還是一樣的,我們希望通過代價函式來觀察演算法預測的結果與真實情況的誤差有多大。
    • 唯一不同的是,對於每一行特徵,我們都會給出K個預測,基本上我們可以利用迴圈,對每一行特徵都預測K個不同結果,然後在利用迴圈在K個預測中選擇可能性最高的一個,將其與 y y 中的實際資料進行比較。
    • 正則化的那一項只是排除了每一層 θ 0 \theta_0 後,每一層的 θ \theta 矩陣的和。最裡層的迴圈 j j 迴圈所有的行(由 S l + 1 S_l+1 層的啟用單元數決定),迴圈 i i 則迴圈所有的列,由該層( S l S_l 層)的啟用單元數所決定。即: h θ ( x ) ℎ_\theta(x) 與真實值之間的距離為每個樣本真實值減去每個類輸出的加和,對引數進行優化的偏置項處理所有引數的平方和。

反向傳播演算法

  • 為了計算代價函式的偏導數 J ( Θ ) Θ i j ( l ) \frac{\partial J(\Theta)}{\partial\Theta_{ij}^{(l)}} ,我們需要採用一種反向傳播演算法,也就是首先計算最後一層的誤差,然後再一層一層反向求出各層的誤差,直到倒數第二層。

  • 假設我們的訓練集只有一個例項( x ( 1 ) , y ( 1 )

    相關推薦

    演算法工程師機器學習

    吳恩達機器學習筆記及作業程式碼實現中文版 神經網路引數的反向傳播演算法 代價函式 假設神經網路的訓練樣本有 m

    演算法工程師機器學習

    吳恩達機器學習筆記及作業程式碼實現中文版 第六章 神經網路學習 特徵和直觀理解 從本質上講,神經網路能夠通過學習得出其自身的一系列特徵。 神經網路中,單層神經元( 無中間層)的計算可用來表示邏輯運算,比如邏輯與(AND)、邏輯或(OR)。 邏輯

    演算法工程師機器學習

    吳恩達機器學習筆記及作業程式碼實現中文版 第六章 神經網路學習 非線性假設 無論是線性迴歸還是邏輯迴歸都有這樣一個缺點:當特徵太多時,計算的負荷會非常大。 使用非線性的多項式項,能夠幫助我們建立更好的分類模型。假設我們有非常多的特徵,例如大於 100 個

    演算法工程師機器學習

    吳恩達機器學習筆記及作業程式碼實現中文版 第五章 正則化 過擬合問題 線性迴歸和邏輯迴歸能夠有效地解決許多問題,但是當將它們應用到某些特定的機器學習應用時,會遇到過擬合(over-fitting)的問題,可能會導致它們效果很差。 正則化(regulari

    演算法工程師機器學習

    吳恩達機器學習筆記及作業程式碼實現中文版 第四章 Logistic迴歸 簡化代價函式與梯度下降 邏輯迴歸的代價函式: C

    演算法工程師機器學習

    吳恩達機器學習筆記及作業程式碼實現中文版 第四章 Logistic迴歸 分類 在分類問題中,要預測的變數y是離散的值,邏輯迴歸 (Logistic Regression) 演算法是目前最流行使用最廣泛的一種學習演算法。 在分類問題中,我們嘗試預測的是結果

    演算法工程師機器學習

    吳恩達機器學習筆記及作業程式碼實現中文版 第三章 多變數線性迴歸 多維特徵 現在我們對房價模型增加更多的特徵,例如房間數樓層等,構成一個含有多個變數的模型,模型中的特徵為

    演算法工程師機器學習

    吳恩達機器學習筆記及作業程式碼實現中文版 第二章 單變數線性迴歸 模型描述 我們使用一個監督學習演算法的例子:預測住房價格。 我們要使用一個數據集,資料集包含俄勒岡州波特蘭市的住房價格。 在這裡,我要根據不同房屋尺寸所售出的價格,畫出我的資

    演算法工程師機器學習

    吳恩達機器學習筆記及作業程式碼實現中文版 第一章 緒論:初識機器學習 什麼是機器學習 Machine Learning(機器學習)是研究計算機怎樣模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的效能。 機器學習被用

    演算法工程師機器學習十三

    吳恩達機器學習筆記及作業程式碼實現中文版 第十章 支援向量機 優化目標 在監督學習中,許多學習演算法的效能都非常類似,因此,重要的不是你該選擇使用學習演算法 A 還是學習演算法 B,而更重要的是,所建立的大量資料在應用這些演算法時,表現情況通常依賴於你的水平。比如你

    演算法工程師機器學習

    吳恩達機器學習筆記及作業程式碼實現中文版 第七章 神經網路引數的反向傳播演算法 理解反向傳播 為了更好地理解反向傳播演算法,我們再來仔細研究一下前向傳播的原理: 反向傳播演算法做的是: 梯度檢測 當我們對一個較為複雜

    演算法工程師機器學習十五

    吳恩達機器學習筆記及作業程式碼實現中文版 第十章 支援向量機 大間隔分類器的數學原理 假設我有兩個二維向量 u

    演算法工程師機器學習十四

    吳恩達機器學習筆記及作業程式碼實現中文版 第十章 支援向量機 直觀上對大間隔的理解 人們有時將支援向量機看作是大間距分類器。 支援向量機模型的代價函式,在左邊這裡我畫出了關於 z 的代價函式

    演算法工程師機器學習十二

    吳恩達機器學習筆記及作業程式碼實現中文版 第九章 機器學習系統設計 確定執行的優先順序 以一個垃圾郵件分類器演算法為例進行討論。 為了解決這樣一個問題,我們首先要做的決定是如何選擇並表達特徵向量

    演算法工程師機器學習十一

    吳恩達機器學習筆記及作業程式碼實現中文版 第八章 應用機器學習的建議 決定下一步做什麼 獲得更多的訓練例項——通常是有效的, 但代價較大, 下面的方法也可能有效, 可考慮先採用下面的幾種方法: 嘗試減少特徵的數量; 嘗試獲得更多的特徵

    演算法工程師機器學習作業

    吳恩達機器學習筆記及作業程式碼實現中文版 第一個程式設計作業:單變數線性迴歸(python程式碼實現) 一元線性迴歸 問題描述 在本練習的這一部分中,您將使用只有單變數的線性迴歸方法預測餐車的利潤。 假設你是一家連鎖餐廳的執行長,正在

    演算法工程師python3官方文件筆記

    本筆記來自於python手冊的中文版 Python 簡介 Python 中的註釋以 # 字元起始,直至實際的行尾。 註釋可以從行首開始,也可以在空白或程式碼之後,但是不出現在字串中。 文字字串中的 # 字元僅僅表示 # 。 程式碼中的註釋

    演算法工程師python3官方文件筆記

    本筆記來自於python手冊的中文版 使用 Python 直譯器 呼叫 Python 直譯器 通常你可以在主視窗輸入一個檔案結束符(Unix系統是Control-D,Windows系統是Control-Z)讓直譯器以 0 狀態碼退出。如果那沒有作用,你可以通過輸入

    演算法工程師python3廖雪峰教程筆記

    此筆記摘錄於廖雪峰先生的教程,感謝廖先生的無私分享,特此致敬! python簡介 Python是一種什麼語言? 用任何程式語言來開發程式,都是為了讓計算機幹活,而計算機幹活的CPU只認識機器指令,所以,儘管不同的程式語言差異極大,最後都得“翻譯”成

    演算法工程師python3官方文件筆記

    本筆記來自於python手冊的中文版 第一章 開胃菜 雖然 Python 易於使用,但它卻是一門完整的程式語言。 與 Shell 指令碼或批處理檔案相比,它為編寫大型程式提供了更多的結構和支援。 Python 提供了比 C 更多的錯誤檢查