判斷目標函數的凹凸性


1 梯度法

就是直接對目標函數進行計算,然后判斷其是否凸。具體地,就是計算目標函數的一階導數和二階導數。然后作出判斷。

凸函數的一階充要條件

這里寫圖片描述

等號右邊是對函數在x點的一階近似。這個條件的意義是,對於函數在定義域的任意取值,函數的值都大於或者等於對函數在這點的一階近似。用圖來說明就是:

這里寫圖片描述

通過圖可以很清楚地理解這個充要條件,但是,具體在應用中,我們不可能對每一個點都去計算函數的一階導數吧,因此下面這個充要條件更加實用。

凸函數的二階充要條件

這里寫圖片描述

很簡單,如果一個函數的二階導數大於等於零,那么這個函數就是凸函數。圖就不上了,很好理解,函數的一階導數具有遞增性,那么函數本身就是凸函數。

通過暴力計算法,可以很快地判斷函數是不是凸函數。凹函數同理。

2 結構分析法

有時候我們不必通過暴力計算,可以通過分析目標函數的結構,就能在一些情況下判斷函數是否是凸函數。下面給出一些結論:

  1. 指數函數是凸函數;
  2. 對數函數是凹函數,然后負對數函數就是凸函數;
  3. 對於一個凸函數進行仿射變換,可以理解為線性變換,結果還是凸函數;
  4. 二次函數是凸函數(二次項系數為正);
  5. 高斯分布函數是凹函數;
  6. 多個凸函數的線性加權,如果權值是大於等於零的,那么整個加權結果函數是凸函數。

下面出一道題目:如何判斷最大似然函數一定有最大值?

思路:最大似然函數是求最大值,那么函數必須是凹函數。就拿我們常用的對數似然函數,是多個對數函數的線性加權而且權值為1,而對數函數是凹函數,然后每個對數內部有沒有嵌套其他函數再分析一下,最后就能判斷整個對數似然函數是凹函數,因此一定有最大值。

機器學習中的最優化問題

很多機器學習算法都設計最優化問題,判斷目標函數是凸是凹是第一步,這只是可以最優化的前提,那么,有哪些最優化的問題呢?

  • 線性規划
  • 二次規划
  • 二次約束的二次規划
  • 半正定規划

有哪些最優化的手段呢?常見的有:

  • 梯度上升(下降)法
  • 牛頓法 / 擬牛頓法
  • 坐標下降法

 

 

參考資料:

http://blog.csdn.net/xmu_jupiter/article/details/47400411

http://www.cnblogs.com/tornadomeet/p/3300132.html

轉載地址:https://www.cnblogs.com/Allen-rg/p/6637181.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM