機器學習之梯度降低

1、梯度降低

  引入:當咱們獲得了一個目標函數後,如何進行求解?直接求解嗎?(並不必定能夠直接求解,線性迴歸能夠當作是一個特例)機器學習

  梯度:梯度的本意是一個向量(矢量),表示某一函數在該點處的方向導數沿着該方向取得最大值,即函數在該點處沿着該方向(此梯度的方向)變化最快,變化率最大(爲該梯度的模)。在機器學習中通常指的就是目標函數的偏導數。函數

  降低:正常求出來的一個梯度是朝着梯度上升的一個方向,因此梯度降低就是梯度上升的反方向。學習

  基本過程:首先,咱們有一個可微分的函數。這個函數就表明着一座山。咱們的目標就是找到這個函數的最小值,也就是山底。根據以前的場景假設,最快的下山的方式就是找到當前位置最陡峭的方向,而後沿着此方向向下走,對應到函數中,就是找到給定點的梯度 ,而後朝着梯度相反的方向,就能讓函數值降低的最快!由於梯度的方向就是函數之變化最快的方向因此,咱們重複利用這個方法,反覆求取梯度,最後就能到達局部的最小值,這就相似於咱們下山的過程。局部優化達到最大的優化。優化

  常規套路:機器學習的套路就是我交給機器一堆數據,而後告訴它什麼樣的學習方式是對的(目標函數),而後讓它朝着這個方向去作。spa

  如何優化:一口吃不成個胖子,咱們要靜悄悄的一步步的完成迭代(每次優化一點點,累積起來就是個大成績了)。blog

  如今假設有這樣一個目標函數:內存

  

   

  如今咱們須要尋找山谷的最低點,也就是咱們的目標函數終點(什麼樣的參數能使得目標函數達到極值點)。效率

  那麼下山要分幾步走呢?首先隨機取一個點bfc

  (1):而後找到當前最合適的方向
  (2):走那麼一小步,走快了該」跌倒 」了
  (3):按照方向與步伐去更新咱們的參數,也就是重複一二步。方法

 2、梯度降低策略選擇

  (1)批量梯度降低:(容易獲得最優解,可是因爲每次考慮全部樣本,速度很慢)
  (2)隨機梯度降低:(每次找一個樣本,迭代速度快,但不必定每次都朝着收斂的方向)
  (3)小批量梯度降低法:(每次更新選擇一小部分數據來算,實用!)batch

 3、學習率

  上面提到咱們會按照方向去更新參數,那麼更新的幅度就叫作步長,通常叫作學習率。

  (1)學習率(步長):對結果會產生巨大的影響,通常小一些
  (2)如何選擇:從小的時候,不行再小
  (3)批處理數量:32,64,128均可以,不少時候還得考慮內存和效率

  

  損失函數就是用來表現預測與實際數據的差距程度,loss表示用來表現預測與實際數據的差距,咱們的目標就是讓loss的值越接近0越好。

相關文章
相關標籤/搜索