梯度下降法和隨機梯度下降法

1. 梯度

  在微積分里面,對多元函數的參數求?偏導數,把求得的各個參數的偏導數以向量的形式寫出來,就是梯度。比如函數f(x,y), 分別對x,y求偏導數,求得的梯度向量就是(?f/?x,??f/?y)T,簡稱grad f(x,y)或者▽f(x,y)。對于在點(x0,y0)的具體梯度向量就是(?f/?x0,??f/?y0)T.或者▽f(x0,y0),如果是3個參數的向量梯度,就是(?f/?x,??f/?y,?f/?z)T,以此類推。

  那么這個梯度向量求出來有什么意義呢?他的意義從幾何意義上講,就是函數變化增加最快的地方。具體來說,對于函數f(x,y),在點(x0,y0),沿著梯度向量的方向就是(?f/?x0,??f/?y0)T的方向是f(x,y)增加最快的地方。或者說,沿著梯度向量的方向,更加容易找到函數的最大值。反過來說,沿著梯度向量相反的方向,也就是 -(?f/?x0,??f/?y0)T的方向,梯度減少最快,也就是更加容易找到函數的最小值。

2.梯度下降法

? ? ? ?什么是梯度下降法呢/

舉個例子,我們在下山的時候,如果山中濃霧太大,而且我們有不清楚路線,那我們可以以當前的所處的位置為基準,尋找這個位置最陡峭的地方,然后朝著山的高度下降的地方走,同理,如果我們的目標是上山,也就是爬到山頂,那么此時應該是朝著最陡峭的方向往上走。然后每走一段距離,都反復采用同一個方法,最后就能成功的抵達山谷。

梯度下降法的過程與這個例子很相似,一個函數可微分。這個函數就代表著一座山。我們的目標就是找到這個函數的最小值,也就是山底。根據之前的場景假設,最快的下山的方式就是找到當前位置最陡峭的方向,然后沿著此方向向下走,對應到函數中,就是找到給定點的梯度?,然后朝著梯度相反的方向,就能讓函數值下降的最快!因為梯度的方向就是函數之變化最快的方向,所以,我們重復利用這個方法,反復求取梯度,最后就能到達局部的最小值,這就類似于我們下山的過程。

什么是梯度:

? ? ? ? 一個多元函數的梯度方向是該函數值增大最陡的方向。具體化到1元函數中時,梯度方向首先是沿著曲線的切線的,然后取切線向上增長的方向為梯度方向,2元或者多元函數中,梯度向量為函數值f對每個變量的導數,該向量的方向就是梯度的方向,當然向量的大小也就是梯度的大小。

?

梯度下降法詳解:

? ? ? ?對于一個多元函數j(x),在x點處做線性逼近(求一階導數)

? ? ? ? j(x+x0)=j(x)+Δ'(x)*?j(x0)+o(無窮小),其中?j(x0)為j(x0)的倒數;

對于一個函數做了線性逼近,可以判斷在x這個點的增加方向和減小方向;雖然做線線逼近不能告訴我們這個函數的極值點在什么地方,但能告訴我們極值點在什么方向,因此我們可以根據這個方向(即下山的方向)選取一個較小的步長(學習率)來沿著這個方向走下去,找到極值點。

? ? ? J是關于x的一個函數,我們當前所處的位置為x0點,要從這個點走到J的最小值點,也就是山底。首先我們先確定前進的方向,也就是梯度的反向,然后走一段距離的步長,也就是α,走完這個段步長,就到達了x1這個點!

為什么要加一個負號,?
梯度前加一個負號,就意味著朝著梯度相反的方向前進!我們在前文提到,梯度的方向實際就是函數在此點上升最快的方向!而我們需要朝著下降最快的方向走,自然就是負的梯度的方向,所以此處需要加上負號
梯度下降法的難點:
(1)梯度的計算
在機器學習中目標函數經常是求和函數的形式,因此求和函數的求導很費時(樣本數量多)
(2)學習率的選擇
學習率過大,會出現震蕩不收斂(找不到極值點),過小,收斂速度較慢。

幾種梯度下降法介紹

批量梯度下降法(Batch Gradient Descent)

    批量梯度下降法,是梯度下降法最常用的形式,具體做法也就是在更新參數時使用所有的樣本來進行更新,這個方法對應于前面3.3.1的線性回歸的梯度下降算法,也就是說3.3.1的梯度下降算法就是批量梯度下降法。  

?

    由于我們有m個樣本,這里求梯度的時候就用了所有m個樣本的梯度數據。

隨機梯度下降法(Stochastic Gradient Descent)

    隨機梯度下降法,其實和批量梯度下降法原理類似,區別在與求梯度時沒有用所有的m個樣本的數據,而是僅僅選取一個樣本j來求梯度。對應的更新公式是:

   

?

    隨機梯度下降法,和4.1的批量梯度下降法是兩個極端,一個采用所有數據來梯度下降,一個用一個樣本來梯度下降。自然各自的優缺點都非常突出。對于訓練速度來說,隨機梯度下降法由于每次僅僅采用一個樣本來迭代,訓練速度很快,而批量梯度下降法在樣本量很大的時候,訓練速度不能讓人滿意。對于準確度來說,隨機梯度下降法用于僅僅用一個樣本決定梯度方向,導致解很有可能不是最優。對于收斂速度來說,由于隨機梯度下降法一次迭代一個樣本,導致迭代方向變化很大,不能很快的收斂到局部最優解。

    那么,有沒有一個中庸的辦法能夠結合兩種方法的優點呢?有!這就是4.3的小批量梯度下降法。

小批量梯度下降法(Mini-batch Gradient Descent)

  小批量梯度下降法是批量梯度下降法和隨機梯度下降法的折衷,也就是對于m個樣本,我們采用x個樣子來迭代,1<x<m。一般可以取x=10,當然根據樣本的數據,可以調整這個x的值。對應的更新公式是:

   

下面談談隨機梯度下降法;

? ? ? ? 這種方法主要是解決梯度計算的問題,上面談到梯度計算很困難就是因為樣本大那隨機梯度下降法只計算一個樣本;

簡要談一談鞍點,如圖

?

鞍點(saddle point)這個詞來自 z=x^2-y^2的圖形,在x軸方向向上曲,在y軸方向向下曲,像馬鞍,鞍點為(0,0)。

擁有兩個以上參數的函數。它的曲面在鞍點好像一個馬鞍,在某些方向往上曲,在其他方向往下曲。在一幅等高線圖里,一般來說,當兩個等高線圈圈相交叉的地點,就是鞍點。

由于只是初學,簡要了解一下什么是梯度下降法;以后在有機會再深入探討;

本文參考:

1.? 鞍點參考原文:https://blog.csdn.net/baidu_27643275/article/details/79250537?

2.梯度下降參考原文:https://www.cnblogs.com/pinard/p/5970503.html

轉載于:https://www.cnblogs.com/fcfc940503/p/10959775.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/275044.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/275044.shtml
英文地址,請注明出處:http://en.pswp.cn/news/275044.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

一張圖看程序媛阿源的2021個人年度流水賬

大家好&#xff0c;我是若川。持續組織了5個月源碼共讀活動&#xff0c;感興趣的可以點此加我微信 ruochuan12 參與&#xff0c;每周大家一起學習200行左右的源碼&#xff0c;共同進步。同時極力推薦訂閱我寫的《學習源碼整體架構系列》 包含20余篇源碼文章。本文來自讀者阿源小…

案例研究:設計與方法_如何進行1小時的重新設計(案例研究)

案例研究:設計與方法速度設計簡介 (Intro to Speed Designing) I’ve been an advocate of speed redesigning technique for a while. The idea is simple — decrease the hand-eye lag and make super quick decisions, seemingly without thinking. The logic behind it is…

圖文并茂重新認識下遞歸

大家好&#xff0c;我是若川。持續組織了5個月源碼共讀活動&#xff0c;感興趣的可以點此加我微信 ruochuan12 參與&#xff0c;每周大家一起學習200行左右的源碼&#xff0c;共同進步。同時極力推薦訂閱我寫的《學習源碼整體架構系列》 包含20余篇源碼文章。對于大部分前端(包…

《C和指針》讀書筆記

看過了經典的K&R C&#xff0c;又看了這本Pointers on C&#xff0c;溫習了C語言的基本語法。 在重溫過程中&#xff0c;感覺需要重點把握的知識是指針、結構和動態內存分配。 這對今后的算法和操作系統方面的研究學習很有幫助。 3.2.3 聲明指針int* b, c, d;本以為這條語句…

FPGA設計者的5項基本功

記得《佟林傳》里&#xff0c;佟林練的基本功是“繞大樹、解皮繩”&#xff0c;然后才練成了什么“鬼影隨行、柳葉綿絲掌”。 在我看來&#xff0c;成為一名說得過去的FPGA設計者&#xff0c;需要練好5項基本功&#xff1a;仿真、綜合、時序分析、調試、驗證。 需要強調的一點是…

unity 全息交互ui_UI向3D投影全息界面的連續發展

unity 全息交互uiThe user interface has been natural in its evolution and strategically heading towards the 3D-projection holographic interface (3D-PHI) era.用戶界面在其發展過程中一直很自然&#xff0c;并且在戰略上正朝著3D投影全息界面( 3D-PHI )時代邁進。 Si…

開發工具 快捷鍵整理

快捷鍵大全 JAVA 開發工具 MyEclipse -------------------------------------MyEclipse 快捷鍵1(CTRL)-------------------------------------Ctrl1 快速修復CtrlD: 刪除當前行 CtrlQ 定位到最后編輯的地方 CtrlL 定位在某行 CtrlO 快速顯示 OutLine CtrlT 快速顯示當前類…

前端構建新世代,Esbuild 原來還能這么玩!

大家好&#xff0c;我是若川。持續組織了5個月源碼共讀活動&#xff0c;感興趣的可以點此加我微信 ruochuan12 參與&#xff0c;每周大家一起學習200行左右的源碼&#xff0c;共同進步。同時極力推薦訂閱我寫的《學習源碼整體架構系列》 包含20余篇源碼文章。今天分享一篇esbui…

大三下學期十四周總結

在小組的學習方面&#xff0c;這周主要是對微信小程序的學習。對JSON格式請求在Spring boot與小程序之間的交互有了一些了解。對微信的接口wx.request、wx.uploadFile、wx.chooseImage的接口的使用。微信開發后臺傳過來的響應數據如果不是標準的json格式&#xff0c;需要在小程…

平面設計師和ui設計師_平面設計師為什么要享受所有樂趣?

平面設計師和ui設計師Graphic designers are pretty cool. We have to admit that. Be it their dressing style, their attitude and most importantly their enviable gadgets. Large Mac monitor, wacom tablet, drawing sets, swatchbooks , iPad pro with pencil, humungo…

轉:Xcode下的GDB調試命令

Xcode的調試器為用戶提供了一個GDB的圖形化界面&#xff0c;GDB是GNU組織的開放源代碼調試器。您可以在Xcode的圖形界面里做任何事情&#xff1b;但是&#xff0c;如果您需要您可以在命令行里使用GDB的命令&#xff0c;且gdb可以在終端運行&#xff0c;也可以在Xcode下的控制臺…

web表單設計:點石成金_設計復雜的用戶表單:12個UX最佳實踐

web表單設計:點石成金It’s been a few years that I’ve been taking interest in designing complex user forms, where a lot of information is requested from users. Here are a few industries where you regularly find such flows:幾年來&#xff0c;我一直對設計復雜…

跨平臺開發框架到底哪家強?5款主流框架橫向對比!

跨平臺開發框架到底哪家強&#xff1f;目前市場上有多個專業做跨平臺開發的框架&#xff0c;那么對開發者來說究竟哪一個框架更符合自己的需求呢&#xff1f;筆者特地總結對比了一下不同框架的特性。國內外筆者選擇了一共5個主流的測評對象&#xff0c;分別是RN&#xff0c;Flu…

【一句日歷】2019年6月

【2019年6月1日兒童節星期六】 人們在協商&#xff0c;解決和處理各種狀況時&#xff0c;若要獲得圓滿的結果&#xff0c;平靜的心和自我控制能力必不可少。任何人都明白。如果我們不能很好地控制自我&#xff0c;反而讓焦躁和嗔怒干擾了我們&#xff0c;那么我們的工作不再具有…

Android學習摘要一之Android歷史

Google與你998年9月7日創立&#xff0c;經過十幾年在搜索引擎方面的精耕細作&#xff0c;成為全球互聯網巨頭&#xff0c;尤其在地圖搜索的應用更是引人注目。Google與2007年11月5日宣布基于Linux平臺的開源手機操作系統&#xff0c;名稱為Android&#xff0c;中文譯為“機器人…

c#創建web應用程序_創建Web應用程序圖標集的6個步驟

c#創建web應用程序I am not great at creating logos or icons, mainly because of the lack of practice. So when I was tasked to create an unique icon set for our web app, I wasn’t confident that things will turn out right. After researching effective and rele…

基于pnpm + lerna + typescript的最佳項目實踐 - 理論篇

本文來自作者金虹橋程序員 投稿原文鏈接&#xff1a;https://juejin.cn/post/7043998041786810398本系列文章分為兩篇&#xff1a;理論篇和實踐篇 理論篇&#xff1a;介紹pnpm&#xff08;pnpm的特點、解決的問題等&#xff09;、lerna&#xff08;lerna的常用命令&#xff09;…

nginx 多進程 + io多路復用 實現高并發

一、nginx 高并發原理 簡單介紹&#xff1a;nginx 采用的是多進程&#xff08;單線程&#xff09; io多路復用(epoll)模型 實現高并發 二、nginx 多進程 啟動nginx解析初始化配置文件后會 創建&#xff08;fork&#xff09;一個master進程 之后 這個進程會退出 master 進程會…

轉載:程序員從初級到中級10個秘訣

Justin James曾發表過一篇博文《10 tips for advancing from a beginner to an intermediate developer》&#xff0c;為我們分享如何才能完成程序員從初級到中級的蛻變&#xff0c;現將中文譯文轉載于此&#xff0c;供大家借鑒。 在一封與TechRepublic會員交流的郵件當中&…

ux設計工具_UX設計中的工具和實用主義

ux設計工具There’s a zillion tools for User Experience and User Interface Design. Don’t take my word for it: a simple Google search for “what are the best tools for wireframing” (to take just one aspect of UX) leads you to endless pages of “The 20 best…