目標函式中同時使用多個L1和L2正則化項的情況,應該怎麼求解?

時間 2021-05-30 04:30:39

1樓:cs kite

我把L1範數優化的理解分為三重境界

第一境界:記住結論

到這裡就已經完了,下面都是解釋

第二境界:知道上面的proximal mamping的如何推導出結論的分段函式

介紹一下上面的prox對映

proximal對映是關於函式h的乙個對映

2樓:熊辰炎

最通用的就搞sub-gradient。

如果L2+Loss和L1可以分離開,然後單獨L1的部分求解又很快或者有closed form solution的話可以推推generalized gradient。或者你看看能不能把LARS改一改。

實際我覺得既然問的那麼籠統,那可能其實也沒有知道很清楚,所以還是直接sub-gradient調庫吧,不要折騰了。

3樓:li Eta

把你的目標函式寫出來。

假設優化變數是向量,多個L1的可加正則化項最一般的情況是,其中是向量的第個位置的元素(注意粗體和非粗體的區別)。

則你的目標函式的一般形式是

可以用Proximal Gradient Decent (PGD)求解,上面這個目標函式的PGD演算法更新式子如下:

對於每乙個分量的迭代式子是 ,其中 是函式於處的梯度向量的第個分量,而是乙個proximal operator,具體計算過程如下:

\lambda_i \eta \\

0 & -\lambda_i \eta \leq z \leq \lambda_i \eta \\

z + \lambda_i \eta & z < -\lambda_i \eta

\end" eeimg="1"/>

迭代次之後得到解

如果你的目標函式如上面的形式,則以上式子足夠題主寫出程式。

此外

1. 如果目標函式整體上是凸函式,並且滿足梯度-李普希茲連續,當步長小於的時候,演算法可以以次線性速度收斂。

2. 如果目標函式還滿足強凸性質,則可以以速度線性收斂。

3. 如果目標函式非凸,則在滿足梯度-李普希茲連續的情況下,可以保證目標函式每一步都在下降。

參考:http://

people.eecs.berkeley.edu

/~elghaoui/Teaching/EE227A/lecture18.pdf

在C 中如何實現復合多個函式的高階函式

guohc FuncCombinator的引數不固定所以只能傳入delegate的陣列。static void Main string args static Func FuncCombinator Delegate da TResult result TResult param return re...

機器學習中的目標函式 損失函式 代價函式有什麼區別?

zys 嚴謹來說是有區別的 A loss function is a part of a cost function which is a type of an objective function.損失函式 loss function 通常針對單個樣本2.代價函式 cost function 針對...

c 中函式宣告時使用void函式名(函式型別)是什麼意思 為什麼要這樣宣告函式?

你看那銳雯 首先去驗證。你測試一下乙個不需要返回值的函式不寫void,會發生什麼?報什麼錯就會發現如果不寫編譯器會認為那你需要返回 int 第二,仔細研究c語言的函式返回值語法,以及同樣類似的問題,編譯器找不到函式宣告會發生什麼?這個時候編譯器是如何判定返回值型別的?這些都在c標準規定了,當然有些是...