1. 程式人生 > 其它 >機器學習基礎——範數

機器學習基礎——範數

範數本質是向量或者矩陣對映到實數域的單值函式。

假設\(N(x)=\Vert x \Vert\)是定義在\(R^n\)上的函式,她需要滿足以下三個條件:

  • 非負性: \(\Vert x \Vert \ge 0\),當且僅當\(x=0\)時,\(\Vert x \Vert = 0\)
  • 齊次性:\(\Vert kx \Vert = \Vert x \Vert *\Vert k \Vert, \quad k \in R\)
  • 三角不等性:對於\(\forall x,y \in R^n, \quad \Vert x+y \Vert \le \Vert x \Vert+\Vert y \Vert\)

則稱\(N(x)=\Vert x \Vert\)

\(R^n\)上向量\(x\)的範數

那麼,向量範數和矩陣範數輸出都是一個值,實數值。只不過輸入空間不同罷了。他們都是為了能夠更顯性的體現出一個向量和矩陣的大小。

下面是一些範數的圖示:

同樣,範數也可以有相對應的變化趨勢,從下圖中不難發現一些東西:

Vector 範數計算公式:

\[\Vert x\Vert_1= \sum_{i=1}^N |x_i| \\\Vert x\Vert_2= \sqrt {\sum_{i=1}^N x_i^2} \\\Vert x\Vert_p= ({\sum_{i=1}^N x_i^p})^{\frac{1}{p}} \\\Vert x\Vert _\infty= \max|x_i| \]

Matrix 範數計算公式:

\[A_{m\times n}\\ \Vert A\Vert_1= \max_j \sum_{i=1}^m |a_{ij}| \\\Vert A\Vert_2= \sqrt {\lambda_{max}(A^TA)} \\\Vert A\Vert_F= ({\sum_{i=1}^m \sum_{j=1}^n |a_{ij}|^2})^{\frac{1}{2}} \\\Vert A\Vert_\infty= \max_i \sum_{j=1}^n|a_{ij}| \]

範數的應用:在機器學習中,範數最常見的作用是來對目標函式進行懲罰,達到正則化的效果,以免目標函式過擬合。當然面對模型過擬合的方法不止正則化這一種,還有增加資料,特徵提取等方式。

\(L_1\)範數(Lasso)和\(L_0\)範數通過正則化得到稀疏解
\(L_2\)範數(Ridge)通過正則化得到稠密解,這種方法有個專有的名字:權值衰減

有時會發現學習是一件很快樂的事情 比一直跑步容易多了 不是嘛