機器學習之梯度下降法(GD)和坐標軸下降法(CD)

梯度下降法

梯度下降法(Gradient Descent, GD)常用于求解無約束情況下凸函數(Convex Function)的極小值,是一種迭代類型的算法,因為凸函數只有一個極值點,故求解出來的極小值點就是函數的最小值點

J(\theta)=\frac{1}{2m}\sum_{i=1}^{m}(h(x^{(i)}_{\theta})-y^{(i)})^{2}

\theta^{*}=\arg_\theta^m\min{J(\theta)}

梯度下降法的優化思想是用當前位置負梯度方向作為搜索方向,因為該方向為當前位置的最快下降方向,所以梯度下降法也被稱為“最速下降法”。梯度下降法中越接近目標值,變量變化越小。計算公式如下

\theta_{j+1}=\theta_{j}-\alpha\frac{\partial}{\partial{\theta_j}}J(\theta)

梯度下降法(數值解)過程

  • Step1:初始化θ(隨機初始化)
  • Step2:沿著負梯度方向迭代,新的θ 能夠使得J(θ) 更小\theta_{j+1}=\theta_{j}-\alpha\frac{\partial}{\partial{\theta_j}}J(\theta)?α:學習率、步長
  • Step3:如果J(θ) 能夠繼續減小,返回Step2,直到迭代完成。

收斂條件:當目標函數的函數值變化非常小的時候或者達到最大迭代次數的時候,就結束循環。

注:僅考慮單個樣本的單個 θ 參數的梯度值

\begin{aligned}\frac{\partial}{\partial{\theta_j}}J(\theta) &=\frac{\partial}{\partial{\theta_j}}\frac{1}{2}(h_{\theta}(x)-y)^2 \\&=2\cdot \cdot \frac(h_{\theta}(x)-y)\cdot \frac{\partial}{\partial{\theta_j}}(h_{\theta}(x)-y)\\&=(h_{\theta}(x)-y)\frac{\partial}{\partial{\theta_j}}(\sum_{i=0}^{n}\theta_{i}x_{i}-y)\\& =(h_{\theta}(x)-y)x_{j}\end{aligned}

4.2批量梯度下降法(BGD)

使用所有樣本的梯度值作為當前模型參數θ 的更新

\begin{aligned}\frac{\partial{J(\theta)}}{\partial{\theta_{j}}}&=\sum_{i=1}^{m}\frac{\partial}{\partial{\theta_j}}\\&=\sum_{i=1}^{m}x_{j}^{(i)}(h_{\theta}(x^{(i)})-y^{(i)})\\&=\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{j}^{(i)}\end{aligned}

4.3隨機梯度下降法(SGD)

使用單個樣本的梯度值作為當前模型參數θ的更新

\frac{\partial}{\partial{\theta_j}}J(\theta)=(h_{\theta}(x)-y)x_{j}

for i= 1 to m,{

\theta_{j}=\theta_{j}+\alpha{(h_{\theta}(x^{(i)})-y^{(i)})x_{j}^{(i)}}

}

BGD和SDB的區別

  • SGD速度比BGD快(整個數據集從頭到尾執行的迭代次數少)
  • SGD在某些情況下(全局存在多個相對最優解,J(θ)不是一個二次函數),SGD有可能會跳出某些小的局部最優解,所以一般情況下不會比BGD差;SGD在收斂的位置會存在J(θ)函數波動的情況,抗噪聲很差。
  • BGD一定能夠得到一個局部最優解(在線性回歸模型中一定是得到一個全局最優解),SGD由于隨機性的存在可能導致最終結果比BGD差
  • 注意:優先選擇SGD

小批量梯度下降法(MBGD)

  • 如果要滿足算法訓練過程較快,又需要保證最終參數訓練的準確率較高,提出小批量梯度下降法(Mini-batch Gradient Descent,簡稱MBGD)。
  • MBGD中是把樣本劃分為b個樣本(b一般為10),然后以這b個樣本的平均梯度為更新方向:

for i = 1 to m/10,{

\theta_{j}=\theta_{j}+\alpha{\sum_{k=i}^{i+10}(h_{\theta}(x^{(i)})-y^{(i)})x_{j}^{(i)}}

}

學習率選擇和參數初始化

由于梯度下降法中負梯度方向作為變量的變化方向,所以有可能導致最終求解的值是局部最優解,所以在使用梯度下降的時候,一般需要進行一些調優策略

  • 學習率的選擇:學習率過大,表示每次迭代更新的時候變化比較大,有可能會跳過最優解;學習率過小,表示每次迭代更新的時候變化比較小,就會導致迭代速度過慢,很長時間都不能結束;
  • 算法初始參數數值的選擇:初始值不同,最終獲得的最小值也有可能不同,因為梯度下降法求解的是局部最優解,所以一般情況下,選擇多次不同初始值運行算法,并最終返回損失函數最小情況下的結果值;
  • 標準化:由于樣本不同特征值的取值范圍不同,可能會導致在各個不同參數上迭代速度不同,為了減少特征取值的影響,可以將特征進行標準化操作。

BGD、SGD、MBGD的區別

當樣本量為m的時候,每次迭代BGD算法中對于參數值更新一次,SGD算法中對于參數值更新m次,MBGD算法中對參數值更新m/n次,相對來講SGD的更新速度最快;

SGD算法中對于每個樣本都需要更新參數值,當樣本值不太正常的時候,就有可能會導致本次的參數更新會產生相反的影響,也就是說SGD算法的結果并不完全收斂,而是在收斂結果處波動;

SGD算法是每個樣本都更新一次參數值,所以SGD算法特別適合樣本數據量特別大的情況以及在線機器學習(Online ML)

梯度下降法案例代碼

坐標軸下降法

坐標軸下降法(Coordinate Descent,CD)是一種迭代法,通過啟發式的方法一步步的迭代求解函數的最小值,和梯度下降法(GD)不同的時候,坐標軸下降法是沿著坐標軸的方向去下降,而不是采用梯度的負方向下降。

坐標軸下降法利用EM算法的思想,在參數更新過程中,每次均先固定m-1個參數值,求解剩下的一個參數的局部最優解;然后進行迭代式的更新操作。

坐標軸下降法的核心思想是多變量函數F(X)可以通過每次沿著一個方向優化來獲取最小值。

其數學依據是:對于一個可微凸函數f(θ),其中θ 為?n*1 的向量,如果對于一個解?\theta=(\theta_1, \theta_2, \dots, \theta_n)?,使得f(θ) 在某個坐標軸?\theta_i(i=1,2,..,n)?上都能達到最小值,則?\theta=(\theta_1, \theta_2, \dots, \theta_n) 就是 f(θ) 的全局的最小值點。

在坐標軸下降法中,優化方向從算法的一開始就固定了,即沿著坐標的方向進行變化。在算法中,循環最小化各個坐標方向的目標函數。即:如果?x_k??給定,那么?x_{k+1}?的第i維度為:

x_i^{k+1}=\arg\min_{y\in R}f(x_1^{k+1}, \dots, x_{i-1}^{k+1}, y, x_{i+1}^k, \dots, x_n^k)

因此,從一個初始的?x_0 求得函數F(x)的局部最優解,可以迭代獲取?x_0,x_1,x_2...?的序列,從而可以得到:

F(x_0)\ge F(x_1)\ge F(x_2)\ge\dots

坐標軸下降法算法過程:

  • 給θ 向量隨機選取一個初值,記做?\theta_0
  • ?對于第k輪的迭代,從?\theta_1^k? 開始計算,\theta_n^k? 到為止,計算公式如下:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????\begin{aligned}\theta_1^k&=\arg\min_{\theta_1}J(\theta_1,\theta_2^{k-1}, \theta_3^{k-1}, \dots, \theta_n^{k-1}) \\\theta_2^k&=\arg\min_{\theta_2}J(\theta_1^k,\theta_2, \theta_3^{k-1}, \dots, \theta_n^{k-1}) \\\dots \\\theta_n^k&=\arg\min_{\theta_n}J(\theta_1^k,\theta_2^k, \theta_3^k, \dots, \theta_n)\end{aligned}

  • 檢查?\theta_k??和?\theta_{k-1}?向量在各個維度上的變化情況,如果所有維度的變化情況都比較小的話,那么認為結束迭代,否則繼續k+1輪的迭代
  • 在求解每個參數局部最優解的時候可以求導的方式來求解
    ?

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

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

相關文章

阿里云Https部署網站

0、開始之前 文章圖片很多,注意流量 首先你得準備好一個已經備案成功的域名,并且有一個在阿里云的服務器部署了的網站。 然后就是你迫切的希望升級網站為HTTPS部署。 那么我們開始吧! 1、申請CA證書 1.1登錄阿里云控制臺,選擇菜單…

mysql數據庫多實例部署

本文系統:rhel5.8 ip : 192.168.100.150 數據庫版本:mysql-5.6.15 1、創建部署mysql服務賬號: 1234[rootdaf ~]# useradd -d /opt/mysql mysql [rootdaf ~]# echo "mysql" |passwd --stdin mysql Changing password for user mysq…

Python 第三方模塊之 numpy.linalg - 線性代數

目錄 numpy.linalg.det() 行列式 numpy.linalg.solve() 方程的解 numpy.linalg.inv() 逆矩陣 np.linalg.eig 特征值和特征向量 np.linalg.svd 奇異值分解 np.linalg.pinv 廣義逆矩陣(QR分解) numpy.linalg模塊包含線性代數的函數。使用這個模塊&am…

rabbitmq direct 多個消費者_一文解析 RabbitMQ 最常用的三大模式

Direct 模式所有發送到 Direct Exchange 的消息被轉發到 RouteKey 中指定的 Queue。Direct 模式可以使用 RabbitMQ 自帶的 Exchange: default Exchange,所以不需要將 Exchange 進行任何綁定(binding)操作。消息傳遞時,RouteKey 必須完全匹配才會被隊列接…

程序員成長最快的環境

除開五大或者ThoughtWorks這種要什么有什么,進去做打字也能光耀門楣的不談。如果是嫁到一個普通軟件公司,怎樣的環境才能最快的成長呢?首先基本的 公司項目管理水平是必要的;其次是穩健而不保守的公司技術選型和一班能溝通的同事。…

【BZOJ4254】Aerial Tramway 樹形DP

【BZOJ4254】Aerial Tramway 題意&#xff1a;給你一座山上n點的坐標&#xff0c;讓你在山里建m條纜車&#xff0c;要求纜車兩端的高度必須相等&#xff0c;且中間經過的點的高度都小于纜車的高度。并且不能存在一個點位于至少k條纜車的下方。求纜車的最大總長度。 n,m<200,…

C# 讀取保存App.config配置文件的完整源碼參考

最近出差在北京做一個小項目&#xff0c;項目里需要讀取配置文件的小功能&#xff0c;覺得挺有參考意義的就把代碼發上來給大家參考一下。我們選擇了直接用微軟的讀取配置文件的方法。 這個是程序的運行設計效果&#xff0c;就是把這些參數可以進行靈活設置&#xff0c;靈活保存…

TensorFlow 簡介

TensorFlow介紹 Tagline&#xff1a;An open-source software library for Machine Intelligence.Definition&#xff1a;TensorFlow TM is an open source software library fornumerical computation using data flow graphs.GitHub&#xff1a;https://github.com/tensorfl…

webbrowser設置為相應的IE版本

注冊表路徑&#xff1a; HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION 或者HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION 究竟選擇哪一個…

jmeter壓力測試_用Jmeter實現對接口的壓力測試

一、多個真實用戶對接口的壓力測試1. 獲取多個真實用戶的token的兩種方法&#xff1a;1)第一種&#xff1a;讓開發幫忙生成多個token(多個用戶賬戶生成的token)&#xff0c;導出為csv格式的文件(以下步驟均以該方法為基礎)2)第二種&#xff1a;自己設置多個用戶賬戶和密碼&…

程序員成長之路(轉)

什么時候才能成為一個專業程序員呢&#xff1f;三年還是五年工作經驗&#xff1f;其實不用的&#xff0c;你馬上就可以了&#xff0c;我沒有騙你&#xff0c;因為專業程序員與業余程序員的區別主要在于一種態度&#xff0c;如果缺乏這種態度&#xff0c;擁有十年工作經驗也還是…

嵌入式開發——PWM高級定時器

學習目標 加強掌握PWM開發流程理解定時器與通道的關系掌握多通道配置策略掌握互補PWM配置策略掌握定時器查詢方式掌握代碼抽取優化策略掌握PWM調試方式學習內容 需求 點亮8個燈,采用pwm的方式。 定時器 通道 <

解決虛擬機時間引起的奇怪問題

一直使用得好好的虛擬機最近出了一個奇怪問題在虛擬機裝好的lamp在客戶端訪問phpmyadmin的時候,使用firefox登錄沒問題,但是使用IE不行總是停留在登錄的界面,而且沒有提供任何的出錯信息,就連在apache的日志里面也看不到.注意到同樣訪問的時候,在IE上顯示的轉向的url是[url]htt…

TensorFlow 基本操作

Tensorflow基本概念 圖(Graph):圖描述了計算的過程&#xff0c;TensorFlow使用圖來表示計算任務。張量(Tensor):TensorFlow使用tensor表示數據。每個Tensor是一個類型化的多維數組。操作(op):圖中的節點被稱為op(opearation的縮寫)&#xff0c;一個op獲得/輸入0個或多個Tensor…

03_zookeeper偽集群安裝

一句話說明白&#xff1a;在1臺機器上模擬多臺機器&#xff0c;對外提供服務 在理解zookeeper集群安裝方法的基礎上&#xff0c;本文描述如何將1個機器模擬為3個節點的zookeeper集群&#xff0c;建議先參考閱讀本文的前一期 zookeeper偽集群安裝總結 在本機上通過復制的方式&am…

python合成語音_MicroPython動手做(25)——語音合成與語音識別

6、AB按鍵切換語言合成項目[mw_shl_codepython,true]#MicroPython動手做(25)——語音合成與語音識別#AB按鍵切換語言合成項目from mpython import *import networkimport timeimport ntptimefrom xunfei import *import audiomy_wifi wifi()my_wifi.connectWiFi("zh"…

專訪谷歌CEO:像對待家人一樣對待員工

導語&#xff1a;《財富》近日公布了“2012年度美國100家最適宜工作的公司”榜單&#xff0c;谷歌當選冠軍。即將于2月6日出版的美國《財富》雜志印刷版將刊登對谷歌CEO拉里佩奇(Larry Page)的專訪&#xff0c;對谷歌的工作環境進行了介紹。 以下為采訪概要&#xff1a; 問&a…

TensorFlow 分布式

一、簡介 使用單臺機器或者單個GPU/CPU來進行模型訓練&#xff0c;訓練速度會受資源的影響&#xff0c;因為畢竟單個的設備的計算能力和存儲能力具有一定的上限的&#xff0c;針對這個問題&#xff0c;TensorFlow支持分布式模型運算&#xff0c;支持多機器、多GPU、多CPU各種模…

第五周測試

---恢復內容開始--- 一 視頻知識 1 linux系統下如何區分內核態與用戶態 在內核態&#xff1a;cs:eip可以是任意的地址&#xff0c;4G的內存地址空間 在用戶態&#xff1a;cs:eip只能訪問0x00000000—0xbfffffff的地址空間 2 系統調用的三層皮&#xff1a;xyz、system_call和sys…

網頁制作小技巧:dl dt dd標簽用法

< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd> 一般我們在做列表的時候通常只會用到ul和li,至于DL一般都很少用到&#xff0c;它也屬于列表類的標簽&#xff0c;下面說一下大概的用法&#xff1a; <dl>標記定義了一個定義列…