1. 程式人生 > >機器學習演算法篇:從為什麼梯度方向是函式變化率最快方向詳談梯度下降演算法

機器學習演算法篇:從為什麼梯度方向是函式變化率最快方向詳談梯度下降演算法


梯度下降法是機器學習中常用的引數優化演算法,使用起來也是十分方便!很多人都知道梯度方向便是函式值變化最快的方向,但是有認真的思考過梯度方向是什麼方向,梯度方向為什麼是函式值變化最快的方向這些問題嘛,本文便以解釋為什麼梯度方向是函式值變化最快方向為引子引出對梯度下降演算法的研究,後面也將通過線性迴歸詳細介紹梯度下降演算法以及演算法調優方式及其變種



一、證明梯度方向是函式變化率最快方向


1、由導數看梯度

在很多梯度下降法教程中,都有提到梯度這個概念。從微積分角度,對多元函式的引數求偏導,將各引數偏導數以向量的形式展示出來便是梯度向量。如二元函式f(x,y)的梯度向量便是:
(fx,f

y)T {(\frac{\partial f}{\partial x},\ \frac{\partial f}{\partial y})}^{T}

記作gradf(x,y)∇f(x,y),同理如果是三元函式,則梯度向量便是:

(fx,fy,fz)T{(\frac{\partial f}{\partial x},\frac{\partial f}{\partial y},\frac{\partial f}{\partial z})}^{T}

梯度方向是函式變化最快的方向,沿著梯度向量方向更易找到函的最大值;反之沿著梯度向量相反的方向,梯度減少最快,更易找到函式的最小值。相信有挺多人都會有疑問,為什麼梯度方向是函式變化最快的方向,下面我們便從函式導數的角度講解為什麼?知其然知其所以然,探尋梯度本質。

(1) 先從單變數導數看起:

對於單變數函式f(x),在x0處導數定義為:

f(x0)=yx=limx>0f(x0+x)f(x0)x f^{'}\left( x_{0} \right) = \ \operatorname{}{\frac{y}{x} = \ \lim_{x - > 0}\frac{f\left( x_{0} + x \right) - f(x_{0})}{x}}

公式含義如下圖所示:

在這裡插入圖片描述

從幾何意義上說,導數代表了函式在該點出切線斜率,表示此點處的變化率,因此單變數函式只有一個變數x在變動,所以便只有這一個方向上的變化率。因此對於多元函式來說便存在偏導數、方向導數,表示多個方向上的變化率。

(2) 偏導數到方向導數

我們以二元函式f(x,y)偏導數為例,偏導數指的是二元函式沿座標軸的變化率:

fx(x,y) 指y方向固定不變時,函式值沿x軸的變化率;

fy(x,y) 指x方向固定不變時,函式值沿y軸的變化率

顯然偏導數只是給出了函式值沿著座標軸的變化率,這自然是完全不夠的,如下圖:

在這裡插入圖片描述

將上圖二元函式看成一個山峰,當一個人處於黑色十字位置處想要儘快下山時,我們需有沿著任意方向的變化率才能夠判斷沿著哪個方向走才能夠最快的下山。

當前我們已經有了沿著座標軸x軸和y軸方向的變化率,接下來我們將推出該平面沿著任意方向的變化率,然後找出下降最快的變化率方向(可類比於已知平面的兩個基向量然後表示平面內任意向量),看下圖:

在這裡插入圖片描述

為了解決人如何沿著山峰變化率最快的方向走到山谷,我們先抽象問題作出幾個假設:

<1> 假設山峰表面是一個二維曲面z = f(x,y)

<2> 人在山峰表面的初始點假設是M0(x,y)

<3> 假設M0處下山變化率最快的方向為L向量方向

<4> M1點(x + x,y +y)L向量方向上離M0很近的點

<5>角度φL向量與x軸的夾角,ρ表示M0M1 點之間距離: (x)2+(y)2\sqrt{{(x)}^{2}+ {(y)}^{2}}

則函式沿任意方向L向量方向的方向導數定義為:

fl=f(x+x,y+y)f(x,y)ρ \frac{\partial f}{\partial l} = \ \operatorname{}\frac{f\left( x + x,y + y \right) - \ f(x,y)}{\rho}

二維平面z = f(x,y)在M0是可微分的,根據函式的增量有下式:

f(x+x,y+y)f(x,y)=fxx+fyy+o(ρ) f\left( x + x,y + y \right) - \ f\left( x,y \right) = \ \frac{\partial f}{\partial x}x + \ \frac{\partial f}{\partial y}y + o(\rho)

上式兩邊除以ρ可得:

f(x+x,y+y)f(x,y)ρ=fxxρ+fyyρ+o(ρ)ρ \frac{f\left( x + x,y + y \right) - \ f\left( x,y \right)}{\rho} = \ \frac{\partial f}{\partial x}\frac{x}{\rho} + \ \frac{\partial f}{\partial y}\frac{y}{\rho} + \frac{o(\rho)}{\rho}

其中可知:

xρ=x(x)2+(y)2=cosφ \frac{x}{\rho} = \ \frac{x}{\sqrt{{(x)}^{2} + {(y)}^{2}}} = cos\varphi

yρ=y(x)2+(y)2=sinφ \frac{y}{\rho} = \ \frac{y}{\sqrt{{(x)}^{2} + {(y)}^{2}}} = sin\varphi

因此有:

fl=f(x+x,y+y)f(x,y)ρ=limρ&gt;0(fxcosφ+fysinφ+o(ρ)ρ) \frac{\partial f}{\partial l} = \ \operatorname{}\frac{f\left( x + x,y + y \right) - \ f(x,y)}{\rho} = \ \lim_{\rho - &gt; 0}(\frac{\partial f}{\partial x}\ cos\varphi + \frac{\partial f}{\partial y}\ sin\varphi + \frac{o\left( \rho \right)}{\rho})

這裡我們便推出了一個重要表示式,二維山峰平面上任意導數變化率方向可表示成:

fl=fxcosφ+fy sinφ \frac{\partial f}{\partial l} = \ \frac{\partial f}{\partial x}\ cos\varphi + \frac{\partial f}{\partial y}\text{\ sinφ}

別忘了我們最初的問題,我們最終的目的是要求的是變化率最快的方向,在得出任意變化率方向的表示式後,我們繼續向下看:這裡令:

A=(fx,fy)T=(fx(x,y),fy(x,y))T A = \left( \frac{\partial f}{\partial x},\ \frac{\partial f}{\partial y} \right)^{T} = \ {(f_{x}\left( x,y \right),\ f_{y}(x,y))}^{T}

l=(cosφ,sinφ) l = (cos\varphi,\ sin\varphi)

則有任意梯度方向:

fl=AL=Alcosβ    β Al \frac{\partial f}{\partial l} = AL = \left| A \right|*\left| l \right|*cos\beta\ \ \ \ \text{β\ }Al

於是我們也可得出要想讓∂ f/∂L最大,則β,即任意變化率向量方向L和A同方向

啊啊啊,請注意啦,這裡A的方向是什麼,大家仔細看A=(fx,fy)TA = \left( \frac{\partial f}{\partial x},\ \frac{\partial f}{\partial y} \right)^{T}

這不正是我們上面說的二元函式的梯度方向嘛。因此我們便二元函式的偏導陣列成的向量:
(fx,fy)T\left( \frac{\partial f}{\partial x},\ \frac{\partial f}{\partial y} \right)^{T}

即定義為函式的梯度方向,也就是函式變化率最快的方向。




二、線性迴歸理解梯度下降法


首先我們應該明白,梯度下降法是無約束優化演算法。當對某個函式求最值時便並且該函式可微時便可以使用梯度下降演算法進行求解最值。下面我們先從形象上認識一下梯度下降演算法:

在這裡插入圖片描述

假設我們站在山峰的某個位置,現在要一步一步下山,為了最快的到達山谷,我們走每一步時先計算時當前位置的負梯度方向,沿著負梯度方向向下走,這樣我們便可以儘快的到達山谷,這邊是梯度下降演算法的思想。當然從上圖中我們可以看出,梯度下降演算法不一定會找到全域性最優解,可能是區域性最優解。下面我們用線性迴歸問題實際應用一下梯度下降演算法

這裡先介紹幾個梯度下降法的概念,方便後續內容理解:

(1) 學習率:表示為 α,控制步長大小,即引數到達最優值的快慢

(2) 步長:即是梯度下降演算法每一步沿負梯度方向前進的距離,表示為:αJ(θ)θ\alpha\frac{\partial J(\theta)}{\partial\theta}

(3) 特徵: 表示為xi(i = 0,1,2,…,n),即樣本的維度

(4) 假設函式: 表示為h~θ( x ),即模型的預測輸出值

(5) 損失函式: 表示為J( θ ) 即定義預測輸出值和真實輸出值之間的差距,本文下面例子中便利用了最小二乘法定義損失函式

這裡理解一個數據的例子來理解線性迴歸,房屋銷售的資料,資料描述的是房屋的特徵和房屋銷售價格的關係。其中房屋特徵包括:面積、房間數量、地段、朝向等,對應的該房屋的銷售價格。對於這批資料我們做出以下假設:

m: 表示資料的銷售數量

x: 資料的特徵,假設共有n個特徵,xi(i = 0,1,2,…,n) 表示資料的n個特徵

y:輸出變數,也就是房屋的價格 (xj,yj):表示第j個訓練樣本,(j = 1,2,…,m) 共有m個數據

(xij, yij):表示第j個數據的第i個特徵,i =0,1,2,…,n資料共n個特徵

針對上述資料,我們希望建立一個模型來描述房屋特徵和房屋售價之間的關係,並通過梯度下降法求出最優的模型。

梯度下降演算法有代數法和矩陣法兩種描述形式,下面將分別從代數法和矩陣法給出上述問題的解決方案

1、 梯度下降法代數法推導過程

我們假設房屋的銷售價格和房屋特徵是線性關係,於是我們定義假設函式為,其中θi(i= 0,1,2,…,n) 為模型引數,xi(i =0,1,2,…,n) 表示每個樣本的n個特徵:

hθ(x)=θ0+θ1x1+θ2x2++θnxn=i=1nθixi(x0=1) h_{\theta}\left( x \right) = \theta_{0} + \theta_{1}x_{1} + \theta_{2}x_{2} + \ldots + \theta_{n}x_{n}\ \ = \ \sum_{i = 1}^{n}{\theta_{i}x_{i}\text{\ \ \ \ }}\ (x_{0} = 1)

相關推薦

機器學習演算法為什麼梯度方向函式變化率方向詳談梯度下降演算法

梯度下降法是機器學習中常用的引數優化演算法,使用起來也是十分方便!很多人都知道梯度方向便是函式值變化最快的方向,但是有認真的思考過梯度方向是什麼方向,梯度方向為什麼是函式值變化最快的方向這些問題嘛,本文便以解釋為什麼梯度方向是函式值變化最快方向為引子引出對梯度

機器學習概念一文詳解凸函式和凸優化,乾貨滿滿

在機器學習各種優化問題中,凸集、凸函式和凸優化等概念經常出現,其是各種證明的前提條件,因此認識其性質對於優化問題的理解尤為重要,本文便就凸集、凸函式和凸優化等各種性質進行闡述,文末分享一波凸優化的學習資料和視訊! 一、幾何體的向量表示 在介紹凸集等概念之前

機器學習概念監督學習、過擬合,正則化,泛化能力等概念以及防止過擬合方法總結

上個系列【數字影象處理】還將繼續更新,最近由於用到機器學習演算法,因此將之前學習到的機器學習知識進行總結,打算接下來陸續出一個【機器學習系列】,供查閱使用!本篇便從機器學習基礎概念說起! 一、解釋監督學習,非監督學習,半監督學習的區別 監督學習、非監督學

機器學習演算法大似然估計證明小二乘法合理性

最小二乘法的核心思想是保證所有資料誤差的平方和最小,但我們是否認真思考過為什麼資料誤差平方和最小便會最優,本文便從最大似然估計演算法的角度來推導最小二乘法的思想合理性,下面我們先了解一下最大似然估計和最小二乘法,最後我們通過中心極限定理剋制的誤差ε服從正態分佈

機器學習回顧(5)樸素貝葉斯演算法

1 引言 說到樸素貝葉斯演算法,很自然地就會想到貝葉斯概率公式,這是我們在高中的時候就學過的只是,沒錯,這也真是樸素貝葉斯演算法的核心,今天我們也從貝葉斯概率公式開始,全面擼一擼樸素貝葉斯演算法。 2 貝葉斯概率公式 2.1 聯合概率與全概率公式 定義1:完備事件組 ${A_1} \cup {A_2

機器學習回顧(6)KNN演算法

  1 引言¶   本文將從演算法原理出發,展開介紹KNN演算法,並結合機器學習中常用的Iris資料集通過程式碼例項演示KNN演算法用法和實現。

機器學習回顧(7)決策樹演算法(ID3、C4.5)

  注:本系列所有部落格將持續更新併發布在github上,您可以通過github下載本系列所有文章筆記檔案。   1 演算法概述¶

機器學習回顧(8)CART決策樹演算法

注:本系列所有部落格將持續更新併發布在github和gitee上,您可以通過github、gitee下載本系列所有文章筆記檔案。 1 引言 上一篇部落格中介紹了ID3和C4.5兩種決策樹演算法,這兩種決策樹都只能用於分類問題,而本文要說的CART(classification and regression

機器學習回顧(16)蒙特卡洛演算法

          蒙特卡羅(MC,Monte Carlo)方法是一種隨機取樣模擬求解的方法,又被稱統計試驗方法或者統計模擬方法。起初,蒙特卡羅方法的提出是20世紀40年代馮·諾伊曼,

Andrew Ng 機器學習筆記 15 大資料集梯度下降

隨機梯度下降 隨機梯度下降原理 小批量梯度下降 小批量梯度下降vs隨機梯度下降 隨機梯度下降的收

Andrew Ng 機器學習筆記 10 評價學習演算法

評估假設函式 模型選擇 正則化引數λ對假設函式的影響 λ 在訓練集上的變化 λ在交叉驗證集上的變化 學習曲線(Lear

機器學習系列文章Apriori關聯規則分析演算法原理分析與程式碼實現

1.關聯規則淺談     關聯規則(Association Rules)是反映一個事物與其他事物之間的相互依存性和關聯性,如果兩個或多個事物之間存在一定的關聯關係,那麼,其中一個事物就能通過其他事物預測到。關聯規則是資料探勘的一個重要技術,用於從大量資料中挖掘出有價值的資料

機器學習Python,NumPy函式庫基礎

NumPy函式庫基礎 (參考自《機器學習實戰》) 先開啟Pyhton >>> from numpy import * 引入NumPy函式庫所有模組 >>> random.rand(4,4) 隨機建立4x4矩陣 >>

機器學習方法(9)------梯度提升決策樹GBDT

● 每週一言 生命在於運動,無論腦力還是體力。 導語 前面第3、4兩節介紹了決策樹,由於決策樹簡單有效,可解釋性強,因此被包裝成了一些更為高效的機器學習演算法,其中最為知名的就是梯度提升決策樹GBDT(Gradient Boosting Decisio

機器學習筆記九K近鄰演算法(KNN)

一.基本思想 K近鄰演算法,即是給定一個訓練資料集,對新的輸入例項,在訓練資料集中找到與該例項最鄰近的K個例項,這K個例項的多數屬於某個類,就把該輸入例項分類到這個類中。如下面的圖: 通俗一點來說,就是找最“鄰近”的夥伴,通過這些夥伴的類別來看自己的類別

用Python開始機器學習(10聚類演算法之K均值)

我們之前接觸的所有機器學習演算法都有一個共同特點,那就是分類器會接受2個向量:一個是訓練樣本的特徵向量X,一個是樣本實際所屬的型別向量Y。由於訓練資料必須指定其真實分類結果,因此這種機器學習統稱為有監督學習。然而有時候,我們只有訓練樣本的特徵,而對其型別一無所知。這種情況,我

機器學習決策樹提煉出分類器演算法

,用到決策樹一般都會出現過擬合問題,因此需要對決策樹進行剪枝,闡述了常用的幾種剪枝的方法(這些方法都出現在了sklearn的決策樹建構函式的引數中),後面總結了sklearn調包分析用決策樹做分類和迴歸的幾個例子,下面通過一個簡單的例子,提煉出構建一棵分類決策樹的演算法思想,進一步體會下決策樹的分類原

[轉]機器學習科普文章“一文讀懂機器學習,大資料/自然語言處理/演算法全有了”

       在本篇文章中,我將對機器學習做個概要的介紹。本文的目的是能讓即便完全不瞭解機器學習的人也能瞭解機器學習,並且上手相關的實 踐。這篇文件也算是EasyPR開發的番外篇,從這裡開始,必須對機器學習瞭解才能進一步介紹EasyPR的核心。當然,本文也面對一般讀者,不會對

用Python開始機器學習(4KNN分類演算法) sklearn做KNN演算法 python

http://blog.csdn.net/lsldd/article/details/41357931 1、KNN分類演算法 KNN分類演算法(K-Nearest-Neighbors Classification),又叫K近鄰演算法,是一個概念極其簡單,而分類效果又很優秀的

機器學習筆記三梯度下降

一.迭代思想 這裡要寫的其實跟主題梯度下降是沒有關係的。但是它能夠讓非常新的新手體會迴圈往復的迭代修改一個或者多個值到最優的思想。所以這裡把這個列到最開始,隨便看看體會一下就行了。 假設我們現在要來求解一個線性方程組, 這個方程組很容易,可以用各種方法