最小值的最優化問題

無約束極小值的最優化條件

?

關于多元函數極小值點的必要條件:

滿足的點稱之為f(x)的駐點或穩定點,但是反過來,滿足梯度條件的點不一定是f(x)的局部極小值。因此,定理轉化為求解下面的方程組問題:??

? ? ? ? ? ? ? ? ? ? ? ? ?

?

  對于上面的線性方程組,利用解析法(如高斯消元法、矩陣三角分解法等)可以較方便求解,但是遺憾的是,f(x)一般是很復雜的非線性函數,求解非線性方程組并不比求解最優化問題簡單,甚至比求解最優化問題更困難、更復雜。因此,在機器學習領域,求解最優化問題,一般不會通過解析法來求解上式,而是通過數值計算方法來直接求取函數極值。

  迭代法是數值計算最常用的最優化方法,它的基本思想是:首先給定f(x)的一個極小值點得到初始估計x0,然后通過迭代的方式得到點序列{xt},如果這個點序列的極限x*逼近極小值點,那么成這個序列為極小化序列。這個極小化序列通過迭代公式可以寫成:

? ? ? ? ? ? ?

  其中d是一個方向向量,λ稱為步長(或學習率),當λ和d都被確定后,也就可以唯一確定點下一個點xk+1,并以此迭代,最后求得極小值點。

  注意:各種迭代算法的區別就在于得到步長λ和方向d的方式不同。一個好的迭代算法應滿足的兩個條件:遞減性和收斂性。

?

?

梯度下降:

  梯度下降是神經網絡最常用的優化方法之一。它的方向就是f在該點x0處函數值增長最快的方向。基于梯度的這個性質,如果把迭代的每一步沿著當前點的梯度方向的反方向進行迭代,那么就能得到一個逐步遞減的極小化序列。

  根據每一次迭代所使用的訓練數據集范圍不同,可以把梯度下降算法區分為:

  •   批量梯度下降:也稱之為最速下降法,誤差損失函數有全量訓練數據我的誤差構成,因此,當數據量很大的時候,速度會非常慢,同時,它不能以在線的方式更新模型,也就是,當訓練數據有新元素加入時,需要對全量的數據進行更新,效率很低。因此當前的梯度下降法一般都不會采用這個策略。
  • ? ? ? ?隨機梯度下降:隨機梯度下降是對批量梯度下降的改進,該算法每一次更新,只考慮一個樣本數據的誤差損失,因此,它的速度要遠遠優于批量梯度下降。更主要的是,它能進行在線的參數更新。但是缺點是:由于單個樣本會出現相似或重復的情況,數據的更新會出現冗余,此外,單個數據之間的差異會比較大,造成每一次迭代的損失函數會出現比較大的波動。
  • ? ? ? ?小批量梯度下降:該算法結合了前兩者的優點,克服了它們的缺點。其策略是指每次的參數更新,優化的目標函數是由n個樣本數據構成,n的值一般較小,一般取到10到500之間,這種做法有3個優點:

    1. 每一批的數據量較小,特別適合高效的矩陣運算,尤其是GPU的并行加速,因此雖然小批量梯度算法的訓練數據要比隨機梯度下降算法多,但效率上與隨機梯度算法差別不大。

    2. 與隨機梯度下降算法相比,小批量梯度算法每一批考慮了更多的樣本數據,每一批數據之間的整體差異更小、更平均,結果也更穩定。

    3. 由于效率與隨機梯度下降算法相當,因此小批量梯度策略同樣適用于在線的模型更新。

  

  一般來說,當前的梯度下降算法普遍采用第三個---小批量梯度算法策略。

?

  梯度下降中用于確定步長和方向向量的幾個不同算法的策略:

      1.?傳統更新策略:vanilla策略,最簡單的參數更新策略,參數沿著其梯度反方向變化。lr是學習率,預先設置的固定值超參數。

      2. 動量更新策略:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

      3. 改進的動量更新策略:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

?

?     4. 自適應梯度策略:以上方法都是對迭代方法的優化,而步長是固定的,該策略考慮學習率對著迭代次數變化而變化的自適應梯度策略。

? ? ? ? ? ? ? ??

?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

?

轉載于:https://www.cnblogs.com/CynthiaWendy/p/11024396.html

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

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

相關文章

leetcode950. 按遞增順序顯示卡牌

牌組中的每張卡牌都對應有一個唯一的整數。你可以按你想要的順序對這套卡片進行排序。 最初,這些卡牌在牌組里是正面朝下的(即,未顯示狀態)。 現在,重復執行以下步驟,直到顯示所有卡牌為止: …

第2課 - 搭建Lua開發環境

第2課 - 搭建Lua開發環境 1. Lua 的優點 (1)Lua 使用標準的 ANSI C 進行開發,可以無縫集成到宿主程序,且幾乎支持所有平臺。 (2)Lua 是開源且免費的軟件,以源碼的方式直接發布。開源軟件的發布方…

關于文件系統權限的管理

關于文件系統權限的管理 眾所周知的是,一個操作系統,是需要為不同的用戶進行服務的,因為不能讓每個人都以管理員進行操作,這樣做的話,毫無安全性可言,所以我們需要驗證和授權。這就體現了權限的重要性&…

深度學習工作開展_深入開展深度工作:新經濟中的兩項核心能力

深度學習工作開展by Bar Franek由Bar Franek 深入開展深度工作:新經濟中的兩項核心能力 (Going Deeper on Deep Work: Two Core Abilities for Thriving in the New Economy) 愛深層工作的更多理由 (A Few More Reasons To Love Deep Work) I had no idea my first…

java獲取文件名方法,利用Java獲取文件名、類名、方法名和行號的方法小結

大家都知道,在C語言中,我們可以通過宏FILE、 __LINE__來獲取文件名和行號,而在Java語言中,則可以通過StackTraceElement類來獲取文件名、類名、方法名、行號,具體代碼如下:public static int getLineNumber…

tp5.1升級指導---控制器調整 _initialize方法更改為initialize

控制器調整 為了規范化,繼承了think\Controller類的話,初始化方法從原來的_initialize方法更改為initialize。轉載于:https://www.cnblogs.com/lsyy/p/11027416.html

leetcode537. 復數乘法

給定兩個表示復數的字符串。 返回表示它們乘積的字符串。注意,根據定義 i2 -1 。 示例 1: 輸入: “11i”, “11i” 輸出: “02i” 解釋: (1 i) * (1 i) 1 i2 2 * i 2i ,你需要將它轉換為 02i 的形式。 代碼 class Solution {public String c…

初始多態

package Li;public class Person { String name;public Person() {super(); }public Person(String name) {super();this.name name; }public void eat(){System.out.println(name"正在吃面包"); } }package Li;public class Student extends Person {public Studen…

Bitmap尺度變換

1 Bitmap bitMap BitmapFactory.decodeFile(path);2 int width bitMap.getWidth();3 int height bitMap.getHeight();4 // 設置想要的大小5 int newWidth 500;6 int newHeight 400;7 // 計算縮放比例8 float scaleWidth ((float) newWidth) / width;9 float scaleHeight …

css!important_如何解決CSS特殊性問題以及何時使用!important關鍵字

css!importantby Muna Mohamed通過穆納穆罕默德(Muna Mohamed) 如何解決CSS特殊性問題以及何時使用!important關鍵字 (How to tackle CSS specificity issues and when to use the !important keyword) 案例研究 (A Case Study) Recently, there was a Twitter pol…

php框架使用教程,php框架laravel excel包使用教程介紹

Laravel是一套簡潔、優雅的PHP Web開發框架(PHP Web Framework)。它可以讓你從面條一樣雜亂的代碼中解脫出來;它可以幫你構建一個完美的網絡APP了,下面我們來看看laravel excel包使用教程laravel中excel插件的安裝在composer中引入laravel excel的包&quo…

(私人收藏)python學習(游戲、爬蟲、排序、練習題、錯誤總結)

python學習(游戲、爬蟲、排序、練習題、錯誤總結) https://pan.baidu.com/s/1dPzSoZdULHElKvb57kuKSgl7bz python100經典練習題python-錯誤和異常小結python-大作業之五子棋游戲(附代碼)python-網絡爬蟲幾種排序方法python實現新手常見的python運行時錯誤…

leetcode1300. 轉變數組后最接近目標值的數組和

給你一個整數數組 arr 和一個目標值 target ,請你返回一個整數 value ,使得將數組中所有大于 value 的值變成 value 后,數組的和最接近 target (最接近表示兩者之差的絕對值最小)。 如果有多種使得和最接近 target 的…

MySQL性能指標及計算方法

MySQL性能指標及計算方法 絕大多數MySQL性能指標可以通過以下兩種方式獲取: (1)mysqladmin 使用mysqladmin extended-status命令獲得的MySQL的性能指標,默認為累計值。如果想了解當前狀態,需要進行差值計算&#xff1b…

php可變變量講解,PHP可變變量實例詳解

什么是可變變量?在PHP中有一個其他類型的變量,“可變變量”。可變變量是一種PHP獨特的變量,他允許動態改變一個變量的名稱。可變變量的工作原理這個特性的工作原理是用一個變量的值作為另一個變量的名稱。例如,我們可以設置$str的…

Nginx平滑升級到最新版本

(一)簡述: 早上收到nginx最新漏洞的通知,Nginx官方發布最新的安全公告,在Nginx范圍過濾器中發現了一個安全問題(CVE-2017-7529),通過精心構造的惡意請求可能會導致整數溢出并且不…

如何使用TypeScript從Microsoft Word生成GitHub markdown文件

by Manish Bansal通過Manish Bansal What? Why would one want to generate an MD file from a Microsoft word document? If that’s the first thought you had after reading this title, then let me give you a strong use case.什么? 為什么要從Microsoft …

Android Studio 導入 Android 系統模塊并編譯和調試

FAQ: AS導入系統模塊源碼,并且能夠編譯調試,正常查看java doc ???? Android AOSP基礎(五)Android Studio調試系統源碼的三種方式http://liuwangshu.cn/framework/aosp/5-debug-aosp.html Android AOSP基礎(四&…

2014年ENVI/IDL遙感應用與開發培訓班-11月重慶站 開始報名了

主辦單位: 中國遙感應用協會 Esri中國信息技術有限公司 內容簡單介紹: 依據中國遙感應用協會欒恩杰理事長推動國內遙感技術和應用的指示精神,2014年中國遙感應用協會組織培訓交流部與Esri中國信息技術有限公司將共同在多個城市舉辦以"傳…

Python自動化運維:Django之View視圖和Template

views詳解 http請求中產生兩個核心對象: http請求:HttpRequest對象 http響應:HttpResponse對象 (1) HttpRequest對象 當請求一個頁面時,Django 創建一個 HttpRequest對象包含原數據的請求。然后 Django 加載…