二范数公式及其应用(向量的二范数公式)

一、什么是二范数

在线性代数中,向量的二范数也叫欧几里得范数(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

三、总结

综上所述,二范数公式在机器学习和深度学习中起着重要的作用,可以通过正则化控制模型的大小和特征的重要性,从而达到优化模型的目的。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平