L0正則化實現原理分析

2021-09-03 10:07:28 字數 579 閱讀 1095

網上搜部落格,大多數講的都是l0是個np難問題,難於求最優解,或者l1是l0的最優凸近視,但沒有說具體細節。

我來分析一下:

l0指向量中非零元素的個數,以下我以c++**來分析。

float a[128];

向量a中有128個元素,我們現在用l0正則化來稀疏向量a,使其中的非零元素變為64個。

去掉a中原有0值元素,剩餘x個非零元素。現在有2種情況

情況一:

x>64,現在我們要在剩餘的x個元素中把y=(64-x)個元素歸零,到底選哪幾個呢?我想到保留較大值,歸零最小值,但在a中同一位置的元素,這次訓練的權重較大,下次訓練的權重就可能較小了,這種方法行不通,因為對於同一特徵向量,清零的位置是固定的,如果不固定,那就沒有訓練的意義了,如果用隨機選擇的化,那就是dropout規則化了。我還想到一種方法就是在訓練完成後,選擇較小值清零,但這樣就不存在np難問題。所以我也沒搞懂如果每次選了都用l0正則化特徵向量,l0到底基於怎樣的規則來選擇哪個位置的元素清零;或者在訓練完畢後選擇較小值清零,但就不存在np難問題了。

情況2:

x<64,不做操作

關於l1為啥是l0的最優凸優化,我研究下l1再來分析

為什麼L0正則化是乙個NP難解問題?

矩陣的l0範數就是非0元素的個數,通常用它來表示稀疏,l0範數越小0元素越多,也就越稀疏。例如 a 1,2,3 4,6,6 的l0範數就是 6。當p 趨近於0的時候,這個函式就只有在x 0的時候 等於0,其他的位置都為1!也就是說,l0 norm可以用於表達乙個向量 矩陣的稀疏性!這個公式與l2 n...

深度學習正則化 L0 L1 L2正則化

概念 l0正則化的值是模型引數中非零引數的個數。l1正則化表示各個引數絕對值之和。l2正則化標識各個引數的平方的和的開方值。先討論幾個問題 1 實現引數的稀疏有什麼好處嗎?乙個好處是可以簡化模型,避免過擬合。因為乙個模型中真正重要的引數可能並不多,如果考慮所有的引數起作用,那麼可以對訓練資料可以 的...

正則化原理與實現

機器學習的問題中,過擬合是乙個很常見的問題。過擬合指的是只能擬合訓練資料,但不能很好地擬合不包含在訓練資料中的其他資料的狀態。機器學習的目標是提高泛化能力,即便是沒有包含在訓練資料裡的未觀測資料,也希望模型可以進行正確的識別。我們可以製作複雜的 表現力強的模型但是相應地,抑制過擬合的技巧也很重要。發...