如何计算L1
和L2
正则化的损失,其中w
是Python中线性模型权重的向量?
正则化器应在不考虑权重中的偏差项的情况下计算损失
def l1_reg(w):
# TO-DO: Add your code here
return None
def l2_reg(w):
# TO-DO: Add your code here
return None
答案 0 :(得分:1)
在训练模型时,您希望获得尽可能高的准确性。因此,您选择所有相关功能[列 数据元素,向量],但是如果数据集不够大,则行数很少,这会导致过度拟合。过度拟合会导致在火车数据中对模型的性能进行了很好的建模,但是在测试数据中却失败了,“例如,如果您可以解决之前已经解决过的问题,但由于解决了很多问题而无法解决类似的问题,那么[不是相同的问题,而是类似的],那么这里正则化解决了这个问题。
让我们首先解释一下正则化背后的逻辑术语。
规范添加信息的过程 [ 您可以想像一下,然后再给您另一个问题,我在第一个问题上添加了更多信息,您已对其进行了分类,因此,如果您发现类似的问题,您就不会想得太多 。
此图显示了过拟合模型和精确模型。
L1 和 L2 是添加到模型方程式中的信息的类型
在L1中,您向模型方程式添加信息,以使其为theta向量(θ)的绝对总和乘以正则化参数(λ),该正则化参数可以是数据大小(m)上的任意大数,其中(n)是功能
在L1中,将信息添加到模型方程中,以向量(θ)的平方乘以正则化参数(λ),该正则化参数可以是数据大小(m)上的任意大数,其中(n)是特征数。
那么L2正则化将是(n + 1)x(n + 1)对角矩阵,在左上角为零,在其他对角线条目下为1,再乘以正则化参数(λ)。
答案 1 :(得分:0)
我认为在回答之前澄清这一点很重要: L1 和 L2 正规化术语不是损失函数。它们有助于控制向量中的权重,以免它们变得太大并减少过度拟合。
L1 正则化项是每个元素的绝对值之和。对于长度为N的向量,它将为|w[1]| + |w[2]| + ... + |w[N]|.
L2 正则化项是每个元素的平方值之和。对于长度为N的向量,它将为w[1]² + w[2]² + ... + w[N]²
。我希望这会有所帮助!
答案 2 :(得分:0)
def calculateL2(self, vector):
return np.dot(vector, vector)
def calculateL1(self, vector):
vector = np.abs(vector)
return np.sum(vector)