mse函数(均方误差函数)_二次代价函数有什么用

mse函数(均方误差函数)_二次代价函数有什么用MSE均方误差(L2loss)1.代码展示MAE和MSE图片特性importtensorflowastfimportmatplotlib.pyplotaspltsess=tf.Session()x_val=tf.linspace(-1.,-1.,500)target=tf.constant(0.)#计算L2_lossl2_y_val=tf…


Jetbrains全系列IDE稳定放心使用

MSE均方误差(L2 loss)

1.代码展示MAE和MSE图片特性
import tensorflow as tf
import matplotlib.pyplot as plt
sess = tf.Session()
x_val = tf.linspace(-1.,-1.,500)
target = tf.constant(0.)

#计算L2_loss
l2_y_val = tf.square(target - x_val)
l2_y_out = sess.run(l2_y_val)#用这个函数打开计算图

#计算L1_loss
l1_y_val = tf.abs(target - x_val)
l1_y_out = sess.run(l1_y_val)#用这个函数打开计算图

#打开计算图输出x_val,用来画图
#用画图来体现损失函数的特点
x_array = sess.run(x_val)
plt.plot(x_array, l1_y_out, 'b--', lable = 'L1_loss')
plt.plot(x_array, l2_y_out, 'r--', lable = 'L2_loss')

这里写图片描述

2.MSE公式及导数推导

损失函数:

mse函数(均方误差函数)_二次代价函数有什么用

以单个样本举例:
[外链图片转存失败(img-PAQ9mnqd-1562394972088)(http://i.imgur.com/D4n2Dsz.jpg)] ,a=σ(z), where z=wx+b

利用SGD算法优化损失函数,通过梯度下降法改变参数从而最小化损失函数:
对两个参数权重和偏置进行求偏导(这个过程相对较容易):
这里写图片描述

参数更新:
这边就说一种简单的更新策略(随机梯度下降):
[外链图片转存失败(img-pTU7Q58r-1562394972090)(http://image107.360doc.com/DownloadImg/2017/06/1400/101675026_3)]

3.分析L2 Loss的特点

根据上面的损失函数对权重和偏置求导的公式我们发现:

这里写图片描述

其中,z表示神经元的输入,σ表示激活函数。从以上公式可以看出,w和b的梯度跟激活函数的梯度成正比,激活函数的梯度越大,w和b的大小调整得越快,训练收敛得就越快。但是L2 Loss的这个特点存在的缺陷在于,对于我们常用的sigmoid激活函数来说,并不是很符合我们的实际需求。
先介绍下sigmoid激活函数的特性:
sigmoid函数就是损失函数的输入:a=σ(z) 中的σ()的一种。这是一个激活函数,该函数的公式,导数以及导数的分布图如下图所示:
mse函数(均方误差函数)_二次代价函数有什么用
mse函数(均方误差函数)_二次代价函数有什么用
mse函数(均方误差函数)_二次代价函数有什么用
mse函数(均方误差函数)_二次代价函数有什么用

我们可以从sigmoid激活函数的导数特性图中发现,当激活值很大的时候,sigmoid的梯度(就是曲线的斜率)会比较小,权重更新的步幅会比较小,这时候网络正处在误差较大需要快速调整的阶段,而上述特性会导致网络收敛的会比较慢;而当激活值很小的时候,sigmoid的梯度会比较大,权重更新的步幅也会比较大,这时候网络的预测值正好在真实值的边缘,太大的步幅也会导致网络的震荡。这我们的期望不符,即:不能像人一样,错误越大,改正的幅度越大,从而学习得越快。而错误越小,改正的幅度小一点,从而稳定的越快。而交叉熵损失函数正好可以解决这个问题。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187690.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 前端Datatables自定义事件(监听Datatables插件一些常见的事件动作)

    前端Datatables自定义事件(监听Datatables插件一些常见的事件动作)

    2022年3月2日
  • 使用Jar命令压缩War包「建议收藏」

    使用Jar命令压缩War包「建议收藏」偶然看见这么一个介绍详细的说明,呵呵虽然经常用 1.首先是工具比如Eclipse很方便了。 2.用winrar之类的工具,把web-info目录,及跟它同级的所有目录及文件,打包成zip文件就行了,然后把扩展名改成war! 3Jar命令: 假定有一个Web应用:C:\myHome myHome/WEB-INF/…… myHome/files/…… myH

    2022年9月28日
  • 【剑指offer】二叉树深度

    【剑指offer】二叉树深度

    2021年9月1日
  • maven使用入门[通俗易懂]

    maven使用入门[通俗易懂]maven面临的问题一个项目就是一个工程。如果项目非常大,最好是每一个模块对应一个工程。借助maven可以将一个项目拆分成多个工程项目中需要的jar必须要手动”复制”,”粘贴”到WEB-INF/lib目录下,带来的问题是:同样的jar包文件重复出现在不同的项目工程中,浪费空间。maven可以将jar仅仅保存在”仓库”中,有需要使用的工程”引用”这个文件接口,并不需要真的把jar包复制过来jar包需要别人替我们准备好,或到官网下载。不同技术的官网提供jar包下载的形式是五花八门的,有些技术的官网就是

    2022年8月8日
  • 升级openssl1.1.1(mix2s哪个版本不断流)

    发现很多OpenSSL的安全漏洞,并且是高危漏洞,所以准备升级CentOS6上的OpenSSL安装,解决安全漏洞;上OpenSSL的官网https://www.openssl.org/,查看一下最新的版本确认一下CentOS默认安装的OpenSSL的版本CentOS6使用的是1.0.1的版本,需要升级到最新的1.0.2s版本CentOS7使用的是1.0.2k版本,可以选…

    2022年4月13日
  • Python处理CSV文件(一)

    Python处理CSV文件(一)CSV文件CSV(comma-separatedvalue,逗号分隔值)文件格式是一种非常简单的数据存储与分享方式。CSV文件将数据表格存储为纯文本,表格(或电子表格)中的每个单元格都是一个数值或字符串。与Excel文件相比,CSV文件的一个主要优点是有很多程序可以存储、转换和处理纯文本文件;相比之下,能够处理Excel文件的程序却不多。所有电子表格程序、文字处理程序或简单的文本编辑器都可以处理纯文本文件,但不是所有的程序都能处理Excel文件。尽管Excel是一个功能非常强大的工

    2022年7月20日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号