1. 程式人生 > >深度學習之(十一)Deep learning中的優化方法:隨機梯度下降、受限的BFGS、共軛梯度法

深度學習之(十一)Deep learning中的優化方法:隨機梯度下降、受限的BFGS、共軛梯度法

  三種常見優化演算法:SGD(隨機梯度下降),LBFGS(受限的BFGS),CG(共軛梯度法)

     1.SGD(隨機梯度下降)

       隨機梯度下降(Stochastic Gradient Descent, SGD)是隨機和優化相結合的產物,是一種很神奇的優化方法,屬於梯度下降的一種,適用於大規模問題。

  要想扯清楚它,還得先談談梯度下降。眾所周知,每個優化問題都會有一個目標函式F(w)F(w),梯度下降採用迭代的策略,從初始點w0w0開始,每次沿著目標函式在當前點的負梯度方向前進一段距離,即

wt+1=wtηtF(wt)wt+1=wt−ηt∇F(wt)
只要步長ηtηt設定合理,就可以得到一個單調遞減的序列f(w0),f(w1),f(w0),f(w1),⋯,直至不再下降即可得到最優解ww∗。 對於一般的優化問題,梯度下降可以找到區域性最優解,對於凸優化問題,梯度下降可以得到全域性最優解,下面我們只考慮凸優化問題。

  考慮如下的目標函式

F(w)=EiDfi(w)F(w)=Ei∼Dfi(w) 其中每個fifi都是關於ww的凸函式,下標ii服從分佈DD。由期望的線性性有 F(w)=EiDfi(w)∇F(w)=Ei∼D∇fi(w) 顯然當DD是取值很多的離散分佈或是連續分佈時,F(w)∇F(w)計算開銷很大甚至根本無法計算,這個方法也就行不通了。但這樣的問題在機器學習領域又很常見,比如感知機、SVM、LASSO的優化目標都可以寫成如下的形式 λ
Ω(w)+1Ni=1NL(w,xi)
λΩ(w)+1N∑i=1NL(w,xi)
其中Ω(w)Ω(w)是關於ww的凸正則化項,L(w,xi)L(w,xi)是模型在樣本xixi上的損失,這裡DD就是在NN個離散點上概率均為1/N1/N的離散分佈。因此為了克服梯度下降的這個弱勢,隨機梯度下降應運而生。

 隨機梯度下降的想法很簡單,就是不直接計算梯度的精確值,而是用梯度的無偏估計

fi(w)∇fi(w)代替之作為下降方向,即在t+1t+1輪隨機挑選出下標ii作如下更新:

wt+1=wtηtfi(wt)wt+1=wt−ηt∇fi(wt) 那麼肯定有人要問,這麼簡單靠譜麼?可以證明在一定條件下,這樣得到的序列f
(w0),f(w1),
f(w0),f(w1),⋯
中的最小值依期望收斂到f(w)f(w∗)。具體來說,設 ηt0,t=0η2t<,t=0ηt=ηt≥0, ∑t=0∞ηt2<∞, ∑t=0∞ηt=∞ 並假設存在常數GG滿足對於任意t,it,iE[fi(wt)2]G2E[∥∇fi(wt)∥2]≤G2及常數RR滿足E[w0w2]R2E[∥w0−w∗∥2]≤R2,並記fbest(t)=min{f(w0),,f(wt)}fbest(t)=min{f(w0),⋯,f(wt)},那麼當tt→∞時,E[fbest(t)]f(w)E[fbest(t)]→f(w∗)

  設t+1t+1輪隨機挑出的下標為ii,那麼

wt+1w2=wtηtfi(w)w2=wtw22ηtfi(w)(wtw)+η2tfi(w)2∥wt+1−w∗∥2=∥wt−ηt∇fi(w)−w∗∥2=∥wt−w∗∥2−2ηt∇fi(w)⊤(wt−w∗)+ηt2∥∇fi(w)∥2 結合條件期望的線性性有 E[wt+1w2|wt]=E[wtw2|wt]2ηtE[fi(w)(wtw

相關推薦

深度學習Deep learning優化方法隨機梯度下降受限BFGS梯度

  三種常見優化演算法:SGD(隨機梯度下降),LBFGS(受限的BFGS),CG(共軛梯度法)。      1.SGD(隨機梯度下降)        隨機梯度下降(Stochastic Gradient Descent, SGD)是隨機和優化相結合的產物,是一種很神奇的優化方法,屬於

Tensorflow深度學習LeNet的實現CIFAR-10資料集

一、LeNet的簡介 LeNet是一個用來識別手寫數字的最經典的卷積神經網路,是Yann LeCun在1998年設計並提出的。Lenet的網路結構規模較小,但包含了卷積層、池化層、全連線層,他們都構成了現代CNN的基本元件。 LeNet包含輸入層在內共有

python學習筆記函數

last 函數返回 traceback keep disco show 全局變量 not 默認參數 牛刀小試:   定義一個無參函數 1 >>> def myFirstFunc(): 2 ... print("Hello python

嵌入式核心及驅動開發學習筆記 中斷優化處理

ARM cortex-A系列的核心不支援中斷巢狀。在核心中斷函式中,如果中斷處理時間過長,產生中斷巢狀,重者系統崩潰,輕者也會影響其他事件處理。這也是中斷中不能使用延時函式的原因。 但是有些高實時性裝置(比如網絡卡),就是需要處理大量的業務。為了滿足中斷處理時間儘量短的原則

各種音視訊編解碼學習詳解 編解碼學習筆記Flash Video系列

 最近在研究音視訊編解碼這一塊兒,看到@bitbit大神寫的【各種音視訊編解碼學習詳解】這篇文章,非常感謝,佩服的五體投地。奈何大神這邊文章太長,在這裡我把它分解成很多小的篇幅,方便閱讀。大神部落格傳送門:https://www.cnblogs.com/skyofbitbit/p/3651

學習裝置樹Backlight

開發板:tiny4412SDK + S702 + 4GB Flash 要移植的核心版本:Linux-4.4.0 (支援device tree) u-boot版本:友善之臂自帶的 U-Boot 2010.12 busybox版本:busybox 1.25 目標: 由於 tiny4

機器學習總結深度學習演算法CNN,SAE,等及常見問題總結

(1)CNN 層級結構:輸入層->卷積層->激勵層->卷積層->激勵層。。。 資料輸入層(資料預處理):三種方法:去均值(即0均值化,CNN常用,訓練集所有畫素值減去均值,把

學習Vue

head move 就會 基本 參數 mode onclick set stat 本篇繼續學習vuex,還是以實例為主;我們以一步一步學Vue(四)中講述的例子為基礎,對其改造,基於vuex重構一遍,這是原始的代碼: todolist.js ; (functio

Python學習筆記裝飾器

before 原來 return wrap 文本 wiki 模塊 http 學習筆記 摘抄:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014318

如鵬網學習筆記JQuery

on() jquery操作 等於 asc 空字符串 name屬性 string 包含 ret 一、jQuery簡介   jQuery是一個JavaScript庫,特性豐富,包含若幹對象和很多函數,可以替代傳統DOM編程的操作方式和操作風格   jQuery通過對DOM

Python學習筆記

def __init__ 實現 完成 cti uniq ive 枚舉 elf 一、Python的多重繼承功能   Python中的主線是單一繼承的   Python中可以存在功能類,即專註於完成一定功能的類,相當於其他一些動態語言中的接口的概念   class Class_

EF學習筆記實施繼承

long cannot oid data- turn cati com list pac 學習總目錄:ASP.NET MVC5 及 EF6 學習筆記 - (目錄整理) 上篇鏈接:EF學習筆記(十) 處理並發 本篇原文鏈接:Implementing Inheritance 面

R語言學習筆記廣義線性模型

學習筆記 Education 5.0 1.3 style only 可能性 div erro #Logistic 回歸 install.packages("AER") data(Affairs,package="AER") summary(Affairs) a

JavaScript學習筆記——閉包

進行 性能 ole 直接 狀態 聲明變量 垃圾 函數 官方網站 在學習廖雪峰前輩的JavaScript教程中,遇到了一些需要註意的點,因此作為學習筆記列出來,提醒自己註意! 如果大家有需要,歡迎訪問前輩的博客https://www.liaoxuefeng.com/學習。

學習筆記——數據庫的索引碎片計劃緩存統計信息

部分 null 文章 mage like 分享 show not 決定 1.索引碎片 數據庫存儲本身是無序的,建立了聚集索引,會按照聚集索引物理順序存入硬盤。既鍵值的邏輯順序決定了表中相應行的物理順序 而且在大多數的情況下,數據庫寫入頻率遠低於讀取頻率,索引的存在為了讀

ShaderLab學習小結貼圖模糊效果

世界坐標 導數 隨著 bsh 物體 建立 51cto ack pda 建立cube,賦上貼圖,camera不動,旋轉cube,正面向著camera的貼圖清晰,或者說法線方向與camera的視方向平行的清晰,成90度的最為模糊,其它角度的在最清晰和最模糊之間最清晰此時其他幾個

Linux學習筆記用戶組管理 用戶管理

.net nologin follow 另一個 window ftp log product windows文件 一、linux和windows互傳文件 目前我所學到的linux與windows互傳文件的方法有兩種; yum install -y lrzsz輸入sz

hadoop學習筆記MapReduce數據類型

筆記 ash all 記錄 write 一個 操作 png bool 一、序列化 1 hadoop自定義了數據類型,在hadoop中,所有的key/value類型必須實現Writable接口。有兩個方法,一個是write,一個是readFileds。分別用於讀(反序列化操

Spark項目電商用戶行為分析大數據平臺JSON及FASTJSON

附加 處理 用戶行為分析 基於 大數據平臺 base IT 為什麽 init 一、概述 JSON的全稱是”JavaScript Object Notation”,意思是JavaScript對象表示法,它是一種基於文本,獨立於語言的輕量級數據交換格式

Nodejs學習筆記—數據采集器示例request和cheerio

列表 意思 9.1 很多 AD 開發 com http undefined 寫在之前   很多人都有做數據采集的需求,用不同的語言,不同的方式都能實現,我以前也用C#寫過,主要還是發送各類請求和正則解析數據比較繁瑣些,總體來說沒啥不好的,就是效率要差一些,   用nodej