R中最優化函式optim

2021-09-14 05:49:09 字數 2259 閱讀 4271

$$f(x_1,x_2)=(1-x_1)^2+100(x_2-x_1^2)^2$$

該函式全域性最小值在($x_1=1,x_2=1$)時取到。

下面這種寫法是因為有多個自變數函式,傳入乙個引數x,每個自變數用向量x的分量來表示,從而定義出目標函式。

obj
x1梯度:$-400*x_1*(x_2-x_1^2)-2*(1-x_1)$

x2梯度:$200*(x_2-x_1^2)$

梯度

gradient
tip:對於多元函式,需要用向量的形式來輸出各個變數上的梯度。

下面以$x_1=0,x_2=3$作為起始點,其他引數採用預設設定,梯度也不輸入。(預設時優化演算法為單純型法)

cg:是一種共軛梯度法,這種方法充分利用函式的梯度資訊,在每一點都能找到乙個最合適的方向(類似的演算法是最速下降法,直接按照目標函式值最快的下降方向來搜尋)來搜尋,該方法的方向不一定是下降的方向,因此能避免陷入區域性最優的困境。

bfgs:是一種擬牛頓法,也稱變尺度法。該演算法改進了牛頓法中容易受初值的影響的弱點,但是又不需要在每一步優化的過程中計算精確的hessian矩陣及其逆矩陣,在具備牛頓法搜尋快的特性的基礎上又能有效的搜尋全域性最優解,一次使用十分廣泛,是optim函式中應用最廣的演算法。

l-bfgs-b:是對bfgs演算法的乙個優化,能夠在優化的同時增加箱型約束條件,一定程度上增強了這些無約束的非線性規劃方法的功能。

sann是一種模擬退火的方法,與通常的數學函式的演算法不同,該演算法是一種概率演算法,對於各種複雜的情況,尤其是很多不可微的函式,該演算法可以找到最優解,但效率上比不上其他數學演算法。

brent演算法是一種簡單的一維搜尋演算法,通常被其他函式呼叫,實際使用中幾乎不用。

lower:當演算法選擇為l-bfgs-b時,該函式允許傳入簡單的箱式約束,也就是說變數大於某個實數且小於某個實數,lower表示下界,upper表示上界,都是通過這個傳入的。

upper:參見lower

control:該引數是乙個列表,包含優化中的各種設定,很多其他第三方的優化函式也遵循這樣的設定方式。常見的設定元素包括最大迭代次數maxit、絕對收斂容忍度abstol、相對收斂容忍度reltol等。詳情可以通過?optim來得到。

hessian:表示十分返回hessian矩陣,預設為false,但是hessian矩陣對其他的運算還是非常重要的,比如估計引數的置信區間。

使用cg共軛梯度法在預設的迭代次數下求解:

發現演算法到達迭代次數上限而退出。

我們增加迭代次數:

可以發現目標函式的值可以減少,進一步增加迭代的次數可以得到最優解,但是效率上比預設的nelder-mead單純型法差太多。注意:cg已經使用梯度資訊,不需要我們自己傳入自定義的gradient函式如果我們使用擬牛頓法bfgs,下面分別為不傳入梯度資訊與自己傳入梯度資訊

最優化中的懲罰函式

講到懲罰函式,首先要提到約束問題,所謂的約束問題就是在一定的約束條件下,求得問題的最優解 例如 min f x s.t.gi x 0,hj x 0 i 1,m,j 1,2,l。其中s.t.是subject to的縮寫,即服從,滿足的意思。這類問題的可行解法是梯度下降演算法,或者是序列無約束優化方法 ...

最優化 凸集 凸函式

一 凸集 定義 給定乙個集合c rnc rn,滿足下列條件則稱為凸集 x,y c tx 1 t y cx,y c tx 1 t y c 對於任意的 0 t 1 凸集 如果集合a中任意兩個元素的連線上的點也在集合內,則為凸集 二 凸函式 定義 給定對映f rn rf rn r 並且 dom f rn ...

凸優化 最優化 凸集 凸函式

原文 我們知道壓縮感知主要有三個東西 訊號的稀疏性,測量矩陣的設計,重建演算法的設計。那麼,在重建演算法中,如何對問題建立數學模型並求解,這就涉及到了最優化或凸優化的相關知識。在壓縮感知中,大部分情況下都轉換為凸優化問題,並通過最優化方法來求解,因此了解相關知識就顯得尤為重要了。主要內容 問題引出 ...