一、什么是二范数
在线性代数中,向量的二范数也叫欧几里得范数(Euclidean norm),是指在 n 维向量空间内,某个向量的各个元素平方和的算术平方根。其公式为:
||x||2 = sqrt(sum(x(i)^2)) i = 1,2,...,n
其中,x(i)表示向量x在第i个维度上的值。
二范数实际上就是我们熟知的勾股定理,它可以衡量一个向量的大小以及向量所在空间的距离,是矩阵论和向量分析中非常重要的概念。
二、二范数的应用
1. 梯度下降算法
在机器学习和深度学习中,梯度下降算法是一种常用的优化方法。在这个过程中,需要计算损失函数的梯度,然后沿着梯度的反方向更新模型参数。而二范数正是用来惩罚模型复杂度的,使用二范数可以限制模型参数的大小,实现模型的正则化。
def L2_regularization(parameters, lambd, m): ''' 实现L2正则化 参数: parameters - 包含所有W和b的字典 lambd - L2正则化超参数 m - 样本数量 返回: cost - L2正则化成本 ''' L = len(parameters) // 2 L2_cost = 0 for l in range(L): W = parameters['W' + str(l+1)] L2_cost += lambd * np.sum(np.square(W)) L2_cost = L2_cost / (2 * m) return L2_cost
2. 特征选择
特征选择是指从原始特征中选择一些有意义的特征,以减少样本的维度和降低冗余度。二范数正则化可以通过缩小特征权重来进行特征选择,降低某些特征的重要性。被二范数正则化缩小的参数,就可以认为是无关特征,可以被剔除或简化。
def Lasso_regression(X, y, alpha): ''' 实现Lasso回归算法 参数: X - 特征矩阵 y - 标签矩阵 alpha - Lasso回归超参数 返回: w - 计算出的Lasso系数向量 ''' # 初始化系数向量 w = np.zeros((X.shape[1], 1)) # 设置算法超参数 max_iter = 10000 tol = 1e-4 # 实现坐标下降算法 for iter in range(max_iter): for j in range(X.shape[1]): X_j = X[:,j].reshape(-1,1) r_j = y - X.dot(w) + X_j * w[j] arg1 = X_j.T.dot(r_j) arg2 = alpha / 2.0 * np.sign(w[j]) w_j_new = soft_threshold(arg1, arg2) if w_j_new != w[j]: w[j] = w_j_new else: break if check_stop_criterion(w, w_old, tol): break w_old = w.copy() return w
三、总结
综上所述,二范数公式在机器学习和深度学习中起着重要的作用,可以通过正则化控制模型的大小和特征的重要性,从而达到优化模型的目的。