L1和L2损失函数

article/2025/9/18 15:24:24

L1和L2损失函数

文章目录

    • L1和L2损失函数
      • 简介
      • L1 损失函数
      • L2 损失函数
      • 一个例子
      • 代码
      • 最后

简介

最近参加了某高校的夏令营面试,被问到一个基础的损失函数的概念,发现自己对于模式识别的掌握可以说不能再皮毛了。夏令营估计是凉了,还是老老实实总结经验好好学习为好,别搞那么多花里胡哨了。

L1 损失函数

说明:下面矩阵的维度使用规则

行 --> 维度,列 --> 样本数

L1 损失函数也叫平均绝对值误差(MAE),不妨设标签为 Y = ( y 1 , y 2 , . . . y m ) 1 × m Y = (y1, y2, ... y_m)_{1 \times m} Y=(y1,y2,...ym)1×m, 样本 X i j ( n × m ) X_{ij (n \times m)} Xij(n×m),经过一个黑箱有对标签的估计函数: f ( X ) = Y ^ f(X) = \hat{Y} f(X)=Y^ 。这个时候,L1损失函数记为这个估计和真实标签的平均误差,也就是:

L o s s 1 = 1 m ∑ i = 1 m ∣ y i − f ( x i ) ∣ Loss1 = \frac{1}{m} \sum_{i = 1}^{m}|y_i - f(x_{i})| Loss1=m1i=1myif(xi)

我们知道,绝对值函数 y = f ( x ) y = f(x) y=f(x) 的样子如下:

在这里插入图片描述

我们容易看出这个损失函数具有如下缺点:

  • 梯度恒定,不论预测值是否接近真实值,这很容易导致发散,或者错过极值点。
  • 导数不连续,导致求解困难。这也是L1损失函数不广泛使用的主要原因。

但它同样有自己的优点:

  • 收敛速度比L2损失函数要快,这是通过对比函数图像得出来的,L1能提供更大且稳定的梯度。
  • 对异常的离群点有更好的鲁棒性,下面会以例子证实。

如果看到更多或者有新的思考会及时补充,我也是昨天才开始打基础。

L2 损失函数

沿用上面对标签和样本的符号定义,L2损失函数也叫平均平方损失函数(MSE),它的数学形式如下:

L o s s 2 = 1 m ∑ i = 1 m ( y i − f ( x i ) ) 2 Loss2 = \frac{1}{m} \sum_{i=1}^{m} (y_i - f(x_i))^2 Loss2=m1i=1m(yif(xi))2

我们知道,平方函数 f ( x ) = x 2 f(x) = x^2 f(x)=x2 的样子如下:

在这里插入图片描述

我们看出这个损失函数具有如下缺点:

  • 收敛速度比L1慢,因为梯度会随着预测值接近真实值而不断减小。
  • 对异常数据比L1敏感,这是平方项引起的,异常数据会引起很大的损失。

但它的优点是显而易见的:

  • 它使训练更容易,因为它的梯度随着预测值接近真实值而不断减小,那么它不会轻易错过极值点,但也容易陷入局部最优。
  • 它的导数具有封闭解,优化和编程非常容易,所以很多回归任务都是用MSE作为损失函数。

一个例子

举一个简单的线性回归作为例子。我们使用 y i = x i + ϵ i y_i = x_i + \epsilon _i yi=xi+ϵi 生成m个样本,其中 ϵ i ∼ N ( 0 , 1 ) \epsilon_i \sim N(0,1) ϵiN(0,1) 。 然后使用 Y 1 × m = w 1 × n x n × m + b 1 × m Y_{1\times m} = w_{1 \times n} x_{n \times m} + b_{1 \times m} Y1×m=w1×nxn×m+b1×m 进行回归,为了方便可视化,我们取 n = 1 n = 1 n=1。也就是回归一条直线。

  1. 对于L1,我在这里使用梯度下降法进行求解:

    • 初始化 w i , b i w_i, b_i wi,bi, 求出当前预测值 y i ^ = w i x i + b i \hat{y_i} = w_ix_i + b_i yi^=wixi+bi

    • 求解梯度,对于 L o s s 1 ( w , b ) Loss1(w,b) Loss1(w,b) d w i = ∂ L o s s 1 ∂ w = lim ⁡ δ → 0 L o s s 1 ( w + δ , b ) − L o s s ( w , b ) δ dw_i = \frac{\partial Loss1}{\partial w} = \lim_{\delta \rightarrow 0} \frac{Loss1(w+\delta, b) - Loss(w,b)}{\delta} dwi=wLoss1=limδ0δLoss1(w+δ,b)Loss(w,b) d b i = ∂ L o s s 1 ∂ b = lim ⁡ δ → 0 L o s s 1 ( w , b + δ ) − L o s s ( w , b ) δ db_i =\frac{\partial Loss1}{\partial b} = \lim_{\delta \rightarrow 0} \frac{Loss1(w, b+\delta) - Loss(w,b)}{\delta} dbi=bLoss1=limδ0δLoss1(w,b+δ)Loss(w,b)

    • 更新参数: w i + 1 = w i − α d w i w_{i+1} = w_i - \alpha dw_i wi+1=wiαdwi b i + 1 = b i − α d b i b_{i+1} = b_i - \alpha db_i bi+1=biαdbi α \alpha α为学习率。

    • 不断重复上述过程。

  2. 对于L2, 直接使用最小二乘法即可:

    • 先对 Y = W X + B Y = WX + B Y=WX+B 写成 Y = W ^ X ^ Y = \hat{W} \hat{X} Y=W^X^,只需要把 B B B 写在 W W W 的最后列,然后对 X X X 的最后行补1即可。
    • 对L2损失函数写成矩阵形式: L o s s 2 = ( Y − W ^ X ^ ) ( Y − W ^ X ^ ) T Loss2 = (Y-\hat{W}\hat{X}) (Y-\hat{W}\hat{X})^T Loss2=(YW^X^)(YW^X^)T
    • 求导: ∂ L o s s 2 ∂ W ^ = 2 ( W ^ X ^ − Y ) X T ^ = 0 \frac{\partial Loss2}{\partial{\hat{W}}} = 2(\hat{W}\hat{X} - Y)\hat{X^T} = 0 W^Loss2=2(W^X^Y)XT^=0, 解得: W ^ = Y X T ^ ( X ^ X T ^ ) − 1 \hat{W} = Y\hat{X^T}(\hat{X}\hat{X^T})^{-1} W^=YXT^(X^XT^)1

注意,上述步骤可能漏掉样本数的累加和平均,但思路就是这样,细节在代码体现。

  1. 我们尝试30个样本数据,无异常数据情况下:

    • 回归效果:

    在这里插入图片描述

    • L1损失收敛情况:

      在这里插入图片描述

  2. 故意制造离群点情况下:

    • 回归效果:

      在这里插入图片描述

    • L1损失收敛情况:

    在这里插入图片描述

代码

clc
clear% 1. generate sample
N = 30;
eps = normrnd(0,1,1,N);	% nx1x = (1 : N) ; % 1xn
y = x + eps;   % 1xn
% disturb points
y(28) = -20;
y(15) = -30;% 2. init w and b
w = rand;
b = rand;% 3. iterate L1 methord 
iterN = 200;
learning_rate = 1e-2;
mae = zeros(1, iterN+1);
yy = w*x + b;
mae(1) = absLoss(y,yy)/N;decay = 0.9;
decayT = 20;
for k = 1:iterNif mod(k, decayT) == 0  % learning rate is decaying as iterations increaselearning_rate = learning_rate * decay;end[dw,db] = findGradient(yy, w, b, x, y);% update w bw = w - learning_rate*dw;b = b - learning_rate*db;yy = w*x + b;mae(k+1) = absLoss(y,yy)/N;endy1 = w*x + b;% 4. use L2 methord
x2 = [x; ones(1, N)];
w2 = y*x2' * (x2*x2')^-1;
y2 = w2 * x2; % 5. compare L1 and L2
figure(1);
plot(x, y1, 'linewidth', 2);
hold on;
plot(x, y2, 'linewidth', 2);
scatter(x, y, 'r', 'filled');
legend('L1', 'L2', 'ori');
grid on;figure(2);
plot(1:length(mae), mae, 'linewidth', 2);
grid on;function a = absLoss(y,yy)a = sum(abs(y-yy)) / length(y);
end% get the gradient
function [dw, db] = findGradient(yy, w, b, x, y)eps = 1e-5;nw = w + eps;nb = b + eps;dw = (absLoss(nw*x + b, y) - absLoss(yy, y))/eps;db = (absLoss(w*x + nb, y) - absLoss(yy, y))/eps;
end

最后

有很多不足之处,将会持续更新修改,夏令营经历也会更新,但比较慢。


http://chatgpt.dhexx.cn/article/tIQSPBJy.shtml

相关文章

【86】ASPM进入和退出L1

之前写过一篇power management的介绍,主要是介绍了一下power management的概念,这次主要是介绍下ASPM和ASPM L1机制。 【67】PCIe Power Management和linux对PME的处理_linjiasen的博客-CSDN博客 1、ASPM介绍 ASPM全称Active State Power Management&a…

L1 L2范式

正则化(Regularization) 机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文称作ℓ1ℓ1-norm和ℓ2ℓ2-norm,中文称作L1正则化和L2正则化,或者L1范数和L2范数。 L1正…

L1正则项-稀疏性-特征选择

原文链接: http://chenhao.space/post/b190d0eb.html L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择。 所谓稀疏模型就是模型中很多的参数是0,这就相当于进行了一次特征选择,只留下了一些比较重要的特征&a…

梳理L1、L2与Smooth L1

关于L1、L2的范数、损失函数和正则化,之前一直混淆这几个概念,故对这几天看过的资料进行了学习总结。 范数(norm)是数学中的一种基本概念。在泛函分析中,它定义在赋范线性空间中,并满足一定的条件,即①非负性&#xff…

L1范数与L2范数的区别与联系

L1范数与L2范数的区别与联系 一、过拟合与正则化 过拟合指的就是在机器学习模型训练过程中把数据学习的太彻底,以至于把噪声数据的特征也学习到了,这样会导致在测试的时候不能够很好地识别数据,即不能正确的分类,模型测试的时候不…

L1正则化及其稀疏性的傻瓜解释

本文翻译自:L1 Norm Regularization and Sparsity Explained for Dummies, 特别感谢原作者Shi Yan! 0. 前言 好吧,我想我就是很笨的那一类人。 当理解一个抽象的数学概念,我必须把它转化成一张图像,然后在…

L1/L2范数

文中内容为一下博文整理而来 https://blog.csdn.net/iterate7/article/details/75443504 https://blog.csdn.net/zhaomengszu/article/details/81537197 什么是范数 范数是具有“长度”概念的函数。在向量空间内,为所有的向量的赋予非零的增长度或者大小。不同的范…

机器学习——L1范数充当正则项,让模型获得稀疏解,解决过拟合问题

问:使用L2范数正则项比L1范数正则项得到的是更为稀疏的解。 答:错误,L1范数正则项得到的是更稀疏的解。因为在L1正则项中,惩罚项是每个参数绝对值之和;而在L2正则项中,惩罚项是每个参数平方的和。L1正则项…

L1、L2的作用

L范式都是为了防止模型过拟合,所谓范式就是加入参数的约束。 L1的作用是为了矩阵稀疏化。假设的是模型的参数取值满足拉普拉斯分布。 L2的作用是为了使模型更平滑,得到更好的泛化能力。假设的是参数是满足高斯分布。 借用公众号python与算法社区的内容20…

机器人设计范式

“ 本期技术干货,我们邀请到了小米机器人实验室工程师徐海望,和大家分享在机器人学领域中,关系到机器人的行为模式或操作模型的三种行为执行逻辑,分别是分级范式(hierarchical paradigm)、反应范式&#xf…

数据库设计之范式与反范式

范式设计 什么是范式? 范式来自英文Normal Form,简称NF。要想表之间设计—个好的关系,必须使关系 满足一定的约束条件,此约束已经形成了规范,分成几个等级,一级比一级要求 得严格。满足这些规范的数据库是…

详解数据库的第一范式、第二范式、第三范式、BCNF范式

版权声明:本文转自小小呆原创文章 https://blog.csdn.net/gui951753/article/details/79609874 第一范式 定义以及分析:问题研究: 第二范式 必备知识点定义分析:解决办法:问题研究: 第三范式: 定义&…

关系范式

一、数据需要规范化的原因: 1.数据冗余大 2.防止更新异常 3.防止插入异常 4.删除异常 数据库范式分为1NF,2NF,3NF,BCNF,4NF,5NF 一张表按照范式的不同等级划分将分为多张表,每张表都是一个…

9.3范式

第一范式:定义:不包含非原子项属性的关系是第一范式的关系。 第二范式:定义:如果R(U,F)1NF,并且R中的每个非属性都完全函数依赖于主键,则R(U,F) 2NF。可以用模式分解的办法将非第二范式关系分解…

数据库——范式

范式 1、范式简介 在关系型数据库中,关于数据表设计的基本原则、规则就称为范式。可以理解为,一张数据表的设计结构需要满足的某种设计标准的级别。要想设计一个结构合理的关系型数据库,必须满足一定的范式。 范式的英文名称是Normal Form&a…

范式的判断:方法+例题

范式的判断 例1:R(A,B,C),F{A→B,B→A,C→A},请问这是第几范式? 判断步骤:一图了解范式 一、首先判断候选键&#xff1…

mysql范式

MySQL 三大范式 为什么需要数据规范化? 信息重复 更新异常 插入异常 无法正常显示信息 删除异常 丢失有效的信息设计关系型数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式&#xff…

BNF范式(巴科斯范式)

BNF范式&#xff08;巴科斯范式&#xff09; 是一种用递归的思想来表述计算机语言符号集的定义规范。 基本结构&#xff1a; <non-terminal> :: <replacement> non-terminal意为非终止符&#xff0c;就是说我们还没有定义完的东西&#xff0c;还可以继续由右边的r…

第一、二、三范式的简单理解

范式 范式&#xff1a; 范式是符合某一种级别的关系模式的集合&#xff0c;表示一个关系内部属性之间的联系何合理化程度 粗略理解&#xff1a; 就是一张数据表的表结构所符合的某种设计标准的级别 数据库范式分为: 第一范式(1NF),第二范式(2NF),第三范式(3NF),BCNF(巴斯范式/鲍…

什么是范式?

原创不易,麻烦点个关注,点个赞,谢谢各位。 范式是符合某一种级别的关系模式的集合。 关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式。 范式的种类: 第一范式(1NF) 第二范式(2NF) 第三范式(3NF) BC范式(BCNF) 第四范式(4NF) 第五范式(5NF) 1NF的定义…