文章目录

  • 一、代价函数概述
  • 二、代价函数的原理
  • 三、常见的代价函数
    • 1. 二次代价函数(quadratic cost)
    • 2. 交叉熵代价函数(cross-entropy)
    • 3. 对数似然代价函数(log-likelihood cost)
  • 四、二次代价函数与交叉熵代价函数比较

在机器学习和深度学习中,经常听到代价函数这个词,到底什么是代价函数?

一、代价函数概述

机器学习的模型分为能量模型和概率模型,知道概率分布的可以直接用概率模型进行建模,比如贝叶斯分类器,不知道的就用能量模型,比如支持向量机。因为一个系统稳定的过程就是能量逐渐减小的过程。

简单理解,代价函数也就是通常建立的能量方程的一种,在机器学习中用来衡量预测值和真实值之间的误差,越小越好。一般来说一个函数有解析解和数值解,解析解就是我们数学上可以用公式算出来的解,数值解是一种近似解,在解析解不存在或者工程实现比较复杂的时候,用例如梯度下降这些方法,迭代得到一个效果还可以接受的解。所以要求代价函数对参数可微。

代价函数、损失函数、目标函数并不一样,这一点后边再介绍,这篇文章就先只介绍代价函数。

损失函数:计算的是一个样本的误差

代价函数:是整个训练集上所有样本误差的平均

目标函数:代价函数 + 正则化项

在实际中,损失函数和代价函数是同一个东西,目标函数是一个与他们相关但更广的概念。

代价函数(Cost Function):在机器学习中,代价函数作用于整个训练集,是整个样本集的平均误差,对所有损失函数值的平均。

代价函数的作用:

  • 1.为了得到训练逻辑回归模型的参数,需要一个代价函数,通过训练代价函数来得到参数。
  • 2.用于找到最优解的目标函数。

二、代价函数的原理

在回归问题中,通过代价函数来求解最优解,常用的是平方误差代价函数。有如下假设函数:
h(x)=A+Bxh(x)=A+Bxh(x)=A+Bx
假设函数中有A和B两个参数,当参数发生变化时,假设函数状态也会随着变化。 如下图所示

想要拟合图中的离散点,我们需要尽可能找到最优的AAA和BBB来使这条直线更能代表所有数据。如何找到最优解呢,这就需要使用代价函数来求解,以平方误差代价函数为例,假设函数为h(x)=θ0xh(x)=\theta_0xh(x)=θ0​x 。

平方误差代价函数的主要思想就是将实际数据给出的值与拟合出的线的对应值做差,求出拟合出的直线与实际的差距。在实际应用中,为了避免因个别极端数据产生的影响,采用类似方差再取二分之一的方式来减小个别数据的影响。因此,引出代价函数:

J(θ0,θ1)=12m∑i=1m(h(x(i))−y(i))2J(\theta _0,\theta _1)=\frac{1}{2m}\sum_{i=1}^{m}(h(x^{(i)})-y^{(i)})^2J(θ0​,θ1​)=2m1​i=1∑m​(h(x(i))−y(i))2

最优解即为代价函数的最小值minJ(θ0,θ1)minJ(\theta _0,\theta _1)minJ(θ0​,θ1​)。如果是 1 个参数,代价函数一般通过二维曲线便可直观看出。如果是 2 个参数,代价函数通过三维图像可看出效果,参数越多,越复杂。

当参数为 2 个时,代价函数是三维图像。


代价函数的要求:

  • 1.非负性,所以目标就是最小化代价函数。
  • 2.当真实输出aaa与期望输出yyy接近的时候,代价函数接近于0。(比如y=0y=0y=0,a~0a~0a~0;y=1y=1y=1,a~1时,代价函数都接近0)。

代价函数非负的原因:

  • 目标函数存在一个下界,在优化过程当中,如果优化算法能够使目标函数不断减小,根据单调有界准则,这个优化算法就能证明是收敛有效的。
  • 只要设计的目标函数有下界,基本上都可以,代价函数非负更为方便。

三、常见的代价函数

1. 二次代价函数(quadratic cost)

J=12n∑i=1∣∣y(x)−aL(x)∣∣2J=\frac{1}{2n}\sum_{i=1}\left | \right |y(x)-a^{L}(x)\left | \right |^2J=2n1​i=1∑​∣∣y(x)−aL(x)∣∣2

其中,JJJ 表示代价函数,xxx表示样本,yyy表示实际值,aaa表示输出值,nnn表示样本的总数。 使用一个样本为例简单说明,此时二次代价函数为:

J=(y−a)22J=\frac{(y-a)^2}{2}J=2(y−a)2​

假如使用梯度下降法来调整权值参数的大小,权值www和偏置bbb的梯度推 导如下:

∂J∂w=(a−y)δ′(z)x\frac{\partial J}{\partial w}=(a-y){\delta }'(z)x∂w∂J​=(a−y)δ′(z)x
∂J∂b=(a−y)δ′(z)\frac{\partial J}{\partial b}=(a-y){\delta }'(z)∂b∂J​=(a−y)δ′(z)

其中,zzz表示神经元的输入,δ\deltaδ 表示激活函数。权值www和偏置bbb的梯度跟激活函数的梯度成正比,激活函数的梯度越大,权值www和偏置bbb的大小调整得越快,训练收敛得就越快。

2. 交叉熵代价函数(cross-entropy)

交叉熵代价函数:

J=−1n∑i=1[ylna+(1−y)ln(1−a)]J=-\frac{1}{n}\sum_{i=1}[ ylna+(1-y)ln(1-a)]J=−n1​i=1∑​[ylna+(1−y)ln(1−a)]

其中,JJJ 表示代价函数,xxx表示样本,yyy 表示实际值,aaa表示输出值,nnn表示样本的总数。 权值www和偏置bbb的梯度推导如下:
∂J∂wj=1n∑xxj(δ(x)−y)\frac{\partial J}{\partial w_j}=\frac{1}{n}\sum_{x}x_j(\delta(x)-y)∂wj​∂J​=n1​x∑​xj​(δ(x)−y)
∂J∂b=1n∑x(δ(x)−y)\frac{\partial J}{\partial b}=\frac{1}{n}\sum_{x}(\delta(x)-y)∂b∂J​=n1​x∑​(δ(x)−y)

当误差越大时,梯度就越大,权值www和偏置bbb调整就越快,训练的速度也就越快。 二次代价函数适合输出神经元是线性的情况,交叉熵代价函数适合输出神经元是 SSS 型函 数的情况。

3. 对数似然代价函数(log-likelihood cost)

对数释然函数常用来作为 softmax 回归的代价函数。深度学习中普遍的做法是将 softmax 作为最后一层,此时常用的代价函数是对数释然代价函数。

Softmax回归中将x分类为类别j的概率为:

或者:

对数似然代价函数与 softmax 的组合和交叉熵与 sigmoid 函数的组合非常相似。对数释然 代价函数在二分类时可以化简为交叉熵代价函数的形式:

其中,yky_kyk​表示第kkk个神经元的输出值,aka_kak​表示第kkk个神经元对应的真实值,取值为000或111。

简单理解一下这个代价函数的含义:在网络中输入一个样本,那么只有一个神经元对应了该样本的正确类别;若这个神经元输出的概率值越高,则按照以上的代价函数公式,其产生的代价就越小;反之,则产生的代价就越高。

四、二次代价函数与交叉熵代价函数比较

1.当我们用sigmoid函数作为神经元的激活函数时,最好使用交叉熵代价函数来替代方差代价函数。

  • 因为使用二次代价函数时,偏导数受激活函数的导数影响,sigmoid 函数导数在输出接近 0 和 1 时非常小,会导致一 些实例在刚开始训练时学习得非常慢。而使用交叉熵代价函数时,,权重学习的速度受到(δ(z)−y)(\delta(z)-y)(δ(z)−y)的影响,更大的误差,就有更快的学习速度,避免了二次代价函数方程中因δ′(z){\delta }'(z)δ′(z)
    导致的学习缓慢的情况。

2.交叉熵函数的形式是−[ylna+(1−y)ln(1−a)]−[ylna+(1−y)ln(1−a)]−[ylna+(1−y)ln(1−a)]。而不是−[alny+(1−a)ln(1−y)]−[alny+(1−a)ln(1−y)]−[alny+(1−a)ln(1−y)]。
是因为当期望输出的y=0y=0y=0时,lnylnylny没有意义;当期望y=1y=1y=1时,ln(1−y)ln(1-y)ln(1−y)没有意义。而因为a是sigmoid函数的实际输出,永远不会等于0或1,只会无限接近于0或者1,因此不存在这个问题。

深度学习基础之代价函数相关推荐

  1. 第三章_深度学习基础

    文章目录 第三章 深度学习基础 3.1 基本概念 3.1.1 神经网络组成? 3.1.2神经网络有哪些常用模型结构? 3.1.3如何选择深度学习开发平台? 3.1.4为什么使用深层表示? 3.1.5为 ...

  2. 五万字总结,深度学习基础。

    文章目录 1 基本概念 1.1 神经网络组成? 1.2 神经网络有哪些常用模型结构? 1.3 如何选择深度学习开发平台? 1.4 为什么深层神经网络难以训练? 1.5 深度学习和机器学习的异同? 2 ...

  3. 《机器学习系列教程》第三章 深度学习基础

    @[第三章 深度学习基础] 第三章 深度学习基础 3.1 基本概念 3.1.1 神经网络组成? 为了描述神经网络,我们先从最简单的神经网络说起. 感知机 简单的感知机如下图所示: [外链图片转存失败( ...

  4. 二分类交叉熵损失函数python_【深度学习基础】第二课:softmax分类器和交叉熵损失函数...

    [深度学习基础]系列博客为学习Coursera上吴恩达深度学习课程所做的课程笔记. 本文为原创文章,未经本人允许,禁止转载.转载请注明出处. 1.线性分类 如果我们使用一个线性分类器去进行图像分类该怎 ...

  5. 深度学习基础笔记——激活函数

    相关申明及相关参考: 体系学习地址 主要学习笔记地址 激活函数,你真的懂了吗? - 知乎 (zhihu.com) 聊一聊深度学习的activation function - 知乎 (zhihu.com ...

  6. 资源 | Intel发布AI免费系列课程3部曲:机器学习基础、深度学习基础以及TensorFlow基础

    翻译 | AI科技大本营(公众号ID:rgznai100) 校对 | 成龙 编辑 | 明明 Intel于近期发布了三门AI系列的免费课程,分别是关于机器学习基础.深度学习基础.TensorFlow基础 ...

  7. 深度估计相关原理(计算机视觉和深度学习基础)

    今天来和大家介绍一下深度估计涉及到的理论知识点,包括计算机视觉基础和深度学习基础. 一.计算机视觉基础 1.1. 针孔相机模型 相机模型,是指采用一个几何模型来描述三维世界中的坐标点映射到二维图像平面 ...

  8. 深度学习基础(基本概念、优化算法、初始化、正则化等)

    2020-04-25 16:29:09 引言 深度学习目前已成为发展最快.最令人兴奋的机器学习领域之一,许多卓有建树的论文已经发表,而且已有很多高质量的开源深度学习框架可供使用.然而,论文通常非常简明 ...

  9. 【完结】有三AI阿里云的深度学习基础课程暂时完结,欢迎扩散学习

    2021年3月份有三AI与阿里天池联合推出了深度学习系列课程, 课程内容包括人工智能与深度学习发展背景,深度学习典型应用,卷积神经网络,循环神经网络,生成对抗网络,深度学习开源框架等内容,目前已经基本 ...

最新文章

  1. 注意设置httpclient连接数
  2. C++标准pdf 分享
  3. MKL学习——线性代数概念相关
  4. spring整合dubbo和springboot整合dubbo,实现服务暴露区别
  5. 国产自主可控的MBSE建模与仿真平台SkyEye
  6. Linux内核态下的文件操作
  7. 双网卡centos7 iptables防火墙与/etc/rc.d/rc.local开机运行
  8. axios_的基本使用_使用axios()方法来发送请求---axios工作笔记004
  9. 系统管理员设置了系统策略 禁止进行此安装的修改办法
  10. 【40周年系列活动】中国干细胞第十届年会(2020·贵阳)第二轮通知
  11. linux安装iscsi设备,linux系统下安装配置iSCSI教程
  12. CAS:870041-75-0,DMAc-PP,热活化延迟荧光(TADF)材料
  13. 批处理图片尺寸修改成4的倍数
  14. Types of light 光照类型 光照系列4
  15. 2019初创企业投融资服务平台都有哪些?
  16. TCP FIN扫描探测原理
  17. 前后端分离的考试在线报名管理系统(网上报名系统)
  18. Nginx(SPEC文件打包)
  19. 约瑟夫环问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。...
  20. 上海财经应用统计考python_2020上财应用统计432考研高分经验贴

热门文章

  1. 27.python中的集合:求集合的交集、求集合的并集;竖杠 ”|“ 也表示并集、update()更新并集结果、集合的差集、集合的判定
  2. lanmbda表达式
  3. 软件工程师的机器人学-Robotics for Software Engineers
  4. python修改rgb红色通道为黑白_如何将RGB图像(3通道)转换为灰度(1通道)并保存?...
  5. keep fighting
  6. uniwide服务器不能进入系统,AMD巴塞罗那服务器全面上市
  7. 图像处理----lena图像的由来
  8. .NET线程方法:Thread.Start()与ThreadPool.QueueUserWorkItem()
  9. 全网最细之HiveQL语句操作
  10. 【计算机网络】数据交换之分组交换