1. 程式人生 > >coursera《機器學習》吳恩達-week1-03 梯度下降演算法

coursera《機器學習》吳恩達-week1-03 梯度下降演算法

梯度下降演算法

  • 最小化代價函式J
  • 梯度下降
    • 使用全機學習最小化
  • 首先檢視一般的J()函式
  • 問題
    • 我們有J(θ0, θ1)
    • 我們想獲得 min J(θ0, θ1)
  • 梯度下降適用於更一般的功能
    • J(θ0, θ1, θ2 …. θn)
    • min J(θ0, θ1, θ2 …. θn)

這一演算法如何工作?:

  • 從初始假定開始
    • 從0,0開始(或任何其他值)
    • 保持一點點的改變θ0和θ1,來試圖減少
  • 每次更改引數時,可以選擇這降低了梯度J(θ0, θ1)的最可能的
  • 重複
  • 這樣做直到你收斂到區域性的最低點
  • 有一個有趣的性質
    • 你開始的位置可以確定你最終的最低點
      這裡寫圖片描述
    • 這裡我們可以看到一個初始化點產生一個區域性最小值
    • 另一個初始化點產生了另一個區域性最小值

更正式的定義

  • 重複以下步驟直到收斂
    這裡寫圖片描述
  • 這是什麼意思?
    • 通過將θj設定為θj減去α倍的區域性成本函式對於θj的導數
  • 符號
    • :=
      • 表示賦值
      • NB a = b是 真實斷言
  • α (alpha)
    • 是一個叫做學習速率的數字
    • 控制你採取的更新速度有多大
      • 如果α大,則具有較大的下降幅度
      • 如果α小,則幅度較小
  • 導數
    這裡寫圖片描述
    - 之後詳細解釋
  • 一個巧妙的實現梯度下降演算法的實現
    • 如下處理θ0和θ1
    • For j = 0 and j = 1 意味著同時更新θ0和θ1的值
  • 如何實現?
    • 為θ0和θ1計算等式右手側
      • 所以我們需要一個臨時值
    • 然後,更新θ0和θ1的同時
      • 我們以圖形方式顯示
        這裡寫圖片描述
  • 如果您實現非同步更新,則不是梯度下降,並且會出現異常
    • 但它可能看起來是對的 - 所以重要的是要記住這一點!
  • 瞭解演算法
    • 要了解梯度下降,我們將返回一個更簡單的函式,我們最小化一個引數來幫助更詳細地解釋演算法
  • 當θ1是一個實數時 ,min θ1 J(θ1)
  • 演算法中的兩個關鍵術語
    • α(alpha)
  • 細微差別
    - 偏導與導數
    - 當我們有多個變數但是隻相對於一個變數匯出時,使用偏導數
    - 當我們相對於所有變數匯出時,使用導數
  • 微分項
    這裡寫圖片描述
    • 導數說明
    • 在這一點做切線並觀察切線斜率
    • 所以向下移動會生成一個負導數,α總是正的。因此更新j(θ1) 到一個更小的值。
    • 類似的,向上移動會使得j(θ1) 更大
  • alpha(α)
    • 如果alpha太小或太大,會發生什麼
      • 太小
        • 步進太小
        • 太耗時了
      • 太大了
      • 可能錯過最小值,最終不能收斂
  • 當你獲得一個區域性最小值
    • 此處切線斜率\導數為0
    • 因此微分項也為0
    • alpha*0=0
    • 則θ1=θ1-0
    • θ1將保持不變
  • 當您接近全域性最小值時,導數項變小,所以即使alpha固定,您的更新也會變小
    • 隨著演算法的執行,當您接近最小值時,您將採取較小的步驟
    • 所以不需要隨著時間的推移來改變alpha

梯度下降的線性迴歸

  • 應用梯度下降來最小化平方差代價函式J(θ0, θ1)
  • 現在我們有一個偏導數
    這裡寫圖片描述
  • 現在我們展開第一對錶達式、
    • J(θ0, θ1) = 1/2m….
    • hθ(x) = θ0 + θ1*x
  • 當我們需要決定每個引數的導數時:
    • When j = 0
    • When j = 1
  • 標識出針對於θ0和θ1的偏導數
    • 當我們根據j = 0和j = 1對這個表示式求導時,我們得到以下結果
      這裡寫圖片描述
  • 要檢查這個,你需要知道多元微積分
    • 所以我們可以將這些值重新插入梯度下降演算法
  • 它是如何工作的
    • 遇到不同的區域性最優的風險
    • 線性迴歸代價函式總是一個凸函式 - 總是有一個最小值
      • 碗型曲面
      • 一個全域性最優
        • 因此梯度下降總會收斂到全域性最優
          • 實踐中
      • 初始化:
        • θ0 = 900
        • θ1 = -0.1

這裡寫圖片描述

  • 最終達到全域性最低點
    • 這實際上是批量梯度下降
    • 指的是在每個步驟中,您可以檢視所有的培訓資料
      • 每個步驟計算m個訓練樣例
    • 有時,非批次版本存在,它們檢視小資料子集
      • 我們將在課程的後面研究其他形式的梯度下降(當m太大時使用)
  • 存在用於找到最小函式的解的數值解
    • 正則方程 法
    • 漸變下降可以更好地擴充套件到大型資料集
    • 用於大量的語境和機器學習

下一步 - 重要的擴充套件

兩個演算法的擴充套件

  1. 數值解的正則方程
  • 為了解決[min J(θ0,θ1)]這個最小化問題,我們使用精確地數值方法而不是不斷迭代梯度下降的方法
  • 正則方程法
  • 有優缺點
    • 優點
      • 不再是Alpha術語
      • 對於一些問題可以快一些
    • 壞處
      • 更復雜
  1. 我們可以學習更多的功能

我們可以學習更多的函式

  • 所以可能有其他引數有助於價格
    • 例如與房屋
      • 尺寸
      • 年齡
      • 臥室數字
      • 樓層數
    • x1,x2,x3,x4
  • 有多個功能變得很難繪製
    • 不能真正繪製在三維以上
    • 符號也變得更加複雜
      • 繞過這個最好的方法是線性代數的符號
      • 提供符號和一系列可以使用矩陣和向量的事物
      • 例如矩陣
        這裡寫圖片描述
        這裡寫圖片描述
  • 我們在這裡看到這個矩陣顯示了我們
    • 尺寸
    • 臥室數量
    • 樓層數
    • 家庭年齡
  • 所有資料都在一個變數中
    • 數字塊,將所有資料組織成一個大塊
  • 向量
    • 顯示為y
    • 向我們顯示價格
  • 需要線性代數來獲得更復雜的線性迴歸模型
  • 線性代數對於製作計算效率高的模型是有好處的(如後所述)
    • 提供使用大量資料集的好方法
    • 通常,問題的向量化是常見的優化技術