深度学习基础之-1.6均方差损失(MSE)
均方差函数(MSE Mean Square Error)
计算预测值和真实值之间的欧式距离。预测值和真实值越接近,两者的均方差就越小
均方差函数常用于线性回归(linear regression),即函数拟合(function fitting)。
公式
J(w,b)=12m∑i=1m(ai−yi)2J(w,b)=\frac{1}{2m} \sum_{i=1}^m (a_i-y_i)^2 J(w,b)=2m1i=1∑m(ai−yi)2
工作原理
要想得到预测值a与真实值y的差距,最朴素的想法就是用Error=ai−yiError=a_i-y_iError=ai−yi。
对于单个样本来说,这样做没问题,但是多个样本累计时,ai−yia_i-y_iai−yi有可能有正有负,误差求和时就会导致相互抵消,从而失去价值。所以有了绝对值差的想法,即Error=∣ai−yi∣Error=|a_i-y_i|Error=∣ai−yi∣。
假设有三个样本的标签值是y=[1,1,1]y=[1,1,1]y=[1,1,1]:
样本标签值 | 样本预测值 | 绝对值损失函数 | 均方差损失函数 |
---|---|---|---|
[1,1,1][1,1,1][1,1,1] | [1,2,3][1,2,3][1,2,3] | (1−1)+(2−1)+(3−1)=3(1-1)+(2-1)+(3-1)=3(1−1)+(2−1)+(3−1)=3 | (1−1)2+(2−1)2+(3−1)2=5(1-1)^2+(2-1)^2+(3-1)^2=5(1−1)2+(2−1)2+(3−1)2=5 |
[1,1,1][1,1,1][1,1,1] | [1,3,3][1,3,3][1,3,3] | (1−1)+(3−1)+(3−1)=4(1-1)+(3-1)+(3-1)=4(1−1)+(3−1)+(3−1)=4 | (1−1)2+(3−1)2+(3−1)2=8(1-1)^2+(3-1)^2+(3-1)^2=8(1−1)2+(3−1)2+(3−1)2=8 |
4/3=1.33 | 8/5=1.6 |
可以看到5比3已经大了很多,8比4大了一倍,而8比5也放大了某个样本的局部损失对全局带来的影响,用不通俗的语言说,就是“对某些偏离大的样本比较敏感”,从而引起监督训练过程的足够重视,以便差异化回传的误差。
实际案例
假设有一组数据如下,我们想找到一条拟合的直线:
下面四张图,前三张显示了一个逐渐找到最佳拟合直线的过程。
- 第一张,用均方差函数计算得到Loss=0.5559
- 第二张,直线向上平移一些,误差计算Loss=0.1651,比图一的误差小很多
- 第三张,又向上平移了一些,误差计算Loss=0.02441,此后还可以继续尝试平移(改变b值)或者变换角度(改变w值),得到更小的Loss值
- 第四张,偏离了最佳位置,误差值Loss=0.1336,这种情况,算法会让尝试方向反向向下
我们把四张图叠加在一起看一下,绿色的线是第三张图Loss值最小的情况。
比较第二张和第四张图,由于均方差的Loss值都是正值,如何判断是向上移动还是向下移动呢?
在实际的训练过程中,是没有必要计算Loss值的,因为Loss值会体现在反向传播的过程中。我们来看看均方差函数的导数:
∂J∂ai=ai−yi\frac{\partial{J}}{\partial{a_i}} = a_i-y_i ∂ai∂J=ai−yi
虽然(ai−yi)2(a_i-y_i)^2(ai−yi)2永远是正数,但是ai−yia_i-y_iai−yi却可以是正数(直线在点下方时)或者负数(直线在点上方时),这个正数或者负数被反向传播回到前面的计算过程中,就会引导训练过程朝正确的方向尝试。
在上面的例子中,我们有两个变量,一个w,一个b,这两个值的变化都会影响最终的Loss值的。
我们假设该拟合直线的方程是y=3x+1,当我们固定w=3,把b值从0到2变化时,看看Loss值的变化:
我们假设该拟合直线的方程是y=3x+1,当我们固定b=1,把w值从2到4变化时,看看Loss值的变化:
损失函数值的3D示意图
横坐标为w,纵坐标为b,二者的组合会形成一个损失函数值,用三维图的高度来表示,最后形成一个碗状。该三维图到底面上的投影与下面的2D示意图类似。
损失函数值的2D示意图
横坐标为w,纵坐标为b,二者的组合会计算出一个损失函数值,存放在矩阵中,最后把矩阵中相近的损失函数值的连线会形成椭圆。
https://github.com/microsoft/ai-edu/blob/master/B-教学案例与实践/B6-神经网络基本原理简明教程/03.1-均方差损失函数.md
深度学习基础之-1.6均方差损失(MSE)相关推荐
- 人工智能 - paddlepaddle飞桨 - 深度学习基础教程 - 编程指南
编程指南 目前飞桨(PaddlePaddle,以下简称Paddle)已经同时支持动态图和静态图两种编程方式, 本文主要侧重于介绍静态图的编程方法,关于动态图编程方法,请参考动态图机制-DyGraph. ...
- 2021-07-14 深度学习基础与实践(二)
深度学习基础与实践(二) 一.分类及其性能度量 1.分类问题 2.分类性能度量 (1)准确率 (2)精确率和召回率 (3)P-R曲线 (4)F值 (5)ROC曲线 3.分类性能可视化 (1)混淆矩阵的 ...
- 日月光华深度学习(一、二)深度学习基础和tf.keras
日月光华深度学习(一.二)深度学习基础和tf.keras [2.2]--tf.keras实现线性回归 [2.5]--多层感知器(神经网络)的代码实现 [2.6]--逻辑回归与交叉熵 [2.7]--逻辑 ...
- 深度估计相关原理(计算机视觉和深度学习基础)
今天来和大家介绍一下深度估计涉及到的理论知识点,包括计算机视觉基础和深度学习基础. 一.计算机视觉基础 1.1. 针孔相机模型 相机模型,是指采用一个几何模型来描述三维世界中的坐标点映射到二维图像平面 ...
- 深度学习基础 | NLP大魔王 · BERT
作者 | Chilia 整理 | NewBeeNLP 首先,请阅读先修知识: 深度学习基础 | 从Language Model到RNN 深度学习基础 | RNN家族全面解析 深度学习基础 | Se ...
- 深度学习基础 | Seq2seq+Attention
作者 | Chilia 整理 | NewBeeNLP 首先,请阅读先修知识: 深度学习基础 | 从Language Model到RNN 深度学习基础 | RNN家族全面解析 1. Seq2seq 1. ...
- 第三章_深度学习基础
文章目录 第三章 深度学习基础 3.1 基本概念 3.1.1 神经网络组成? 3.1.2神经网络有哪些常用模型结构? 3.1.3如何选择深度学习开发平台? 3.1.4为什么使用深层表示? 3.1.5为 ...
- 深度学习基础知识点【更新中】
深度学习基础知识点 文章目录 深度学习基础知识点 1. 数据归一化 2. 数据集划分 3. 混淆矩阵 4. 模型文件 5. 权重矩阵初始化 6. 激活函数 7. 模型拟合 8. 卷积操作 9. 池化操 ...
- 【零基础深度学习教程第一课:深度学习基础】
深度学习基础 目录 *深度学习基础* <第一节 深度学习简介> 一.深度学习与机器学习区别 二.神经网络简介 2.1 单神经元网络 2.2 多神经元网络 <第二节 神经网络基础> ...
最新文章
- iOS transform解决连续多次旋转缩放,实现图片旋转缩放效果
- 新安江遗传算法c语言,基于遗传算法的新安江模型参数优化率定(四)
- crontab 执行的目录 研究
- ansible介绍+基本操作
- jqGrid数据列表和表单的列隐藏/显示
- 机器学习自学札记(1)
- 【JavaScript基础笔记】数据类型转换、false值、内存图、垃圾回收和深浅拷贝简易概念...
- 小米路由器3c 虚拟服务器,小米路由器怎么设置_小米路由器3c设置教程-WIFI之家...
- TM4C123-使用ROM中的函数库
- js中undefined怎么判断
- 在wine里面播放视频和音乐之WMP
- html5不用reload重置网页,refresh和reload
- 【Unity3D】枪战游戏—弹孔设置
- 网络传输的加密与解密
- HTML网页设计基础——用户注册界面
- 【机器学习笔记】【决策树】【泰坦尼克号幸存者的预测】
- 10个实用的Excel技巧
- 我在谷歌大脑见习机器学习的一年:Node.js创始人的尝试笔记
- 读《薛兆丰经济学讲义》后感
- 网络工具Netwox和Wireshark详解