《機器學習(周志華)》筆記--線性模型(4)--梯度解釋、梯度下降法算法思想、算法原理、算法流程、代碼實現


四、邏輯回歸

5、梯度下降法

(1)梯度解釋

  偏導數:單來說是對於一個多元函數,選定一個自變量並讓其他自變量保持不變,只考察因變量與選定自變量的變化關系。

  梯度:梯度的本意是一個向量,由函數對每個參數的偏導組成,表示某一函數在該點處的方向導數沿着該方向取得最大值,即函數在該點處沿着該方向變化最快,變化率最大。

        

  梯度向量的方向即為函數值增長最快的方向,沿着梯度方向可以最快地找到函數的最大值,而我們要求誤差的最小值,所以在梯度下降中我們要沿着梯度相反的方向:

                    

    其中0<=η<=1為學習率,學習率的大小會對我們的算法產生影響,學習率太小,逼近極值點的速度慢,學習率太大,逼近極值點的速度快,但容易產生震盪。

(2)梯度下降算法思想:

  梯度下降是一種非常通用的優化算法,能夠為大范圍的問題找到最優解

  梯度下降的中心思想就是迭代地調整參數從而使損失函數最小化。

  假設你迷失在山上的迷霧中,你能感覺到的只有你腳下路面的坡度。快速到達山腳的一個策略就是沿着最陡的方向下坡,這就是梯度下降的做法。即通過測量參數向量 θ 相關的損失函數的局部梯度,並不斷沿着降低梯度的方向調整,直到梯度降為 0 ,達到最小值。

  梯度下降公式如下:

        

  對應到每個權重公式為:

           

    其中 ,η 為學習率,是 0 到 1 之間的值,是個超參數,需要我們自己來確定大小

 (3)算法原理:

  在傳統機器學習中,損失函數通常為凸函數,假設此時只有一個參數,則損失函數對參數的梯度即損失函數對參數的導數。

  如果剛開始參數初始在最優解的左邊,如圖 5.3.1 。很明顯,這個時候損失函數對參數的導數是小於 0 的,而學習率是一個 0 到 1 之間的數,此時按照公式更新參數,初始的參數減去一個小於 0 的數是變大,也就是在坐標軸上往右走,即朝着最優解的方向走。

                                              

                 圖 5.3.1                                                    圖5.3.2

  如果參數初始在最優解的右邊,如圖5.3.2。此時按照公式更新,參數將會朝左走,即最優解的方向。

  所以,不管剛開始參數初始在何位置,按着梯度下降公式不斷更新,參數都會朝着最優解的方向走。

(4)梯度下降算法流程 

  1)隨機初始參數

  2)確定學習率

  3)求出損失函數對參數梯度

  4)按照公式更新參數

  5)重復 3) 4)直到滿足終止條件(如:損失函數或參數更新變化值小於某個閾值,或者訓練次數達到設定閾值)

(5)代碼實現梯度下降

  要求:使用 Python 實現梯度下降算法,並損失函數最小值時對應的參數thetatheta會返回給外部代碼,由外部代碼來判斷theta是否正確。

# -*- coding: utf-8 -*-
import numpy as np
import warnings
warnings.filterwarnings("ignore")

def gradient_descent(initial_theta,eta=0.05,n_iters=1000,epslion=1e-8):
    '''
    梯度下降
    :param initial_theta: 參數初始值,類型為float
    :param eta: 學習率,類型為float
    :param n_iters: 訓練輪數,類型為int
    :param epslion: 容忍誤差范圍,類型為float
    :return: 訓練后得到的參數
    '''
    theta = initial_theta
    i_iter = 0
    while i_iter < n_iters:
        gradient = 2*(theta-3)
        last_theta = theta
        theta = theta - eta*gradient
        if(abs(theta-last_theta)<epslion):
            break
        i_iter +=1
    return theta

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM