自己学了一段时间的机器学习和深度学习了,对于代价函数有些自己的浅显认识,现总结如下:

  • 1.代价函数的由来
  • 2.代价函数的选择
    • 2.1、线性回归代价函数
    • 2.2、逻辑回归代价函数
    • 2.3、神经网络代价函数
  • 3.正则化的代价函数

1.代价函数的由来

对于机器学习而言,首先就是找到模型,建立好模型后,这时候需要做的就是找到该模型的解,有了模型如何求解呢,肯定需要找到你要求解的函数吧,这个函数就是目标函数,也就是你要优化的代价函数。当我刚开始接触的时候,产生这样的疑惑,模型是很多方程的组合,直接求解不就行了么,后来我发现有时候无法直接对这些方程求解,需要找到另外的一个函数去对该方程求解。

可能上面我说的不够明白,举个例子解释一下,对于线性回归而言,当你的模型是y=wX+b,此时你有的数据是X,y,此时你要得到w和b,有了w,b后,你再给我x,我就可以给你计算出y来吧。那么该怎么去求解w和b呢,当有一个x和一个y数据时,此时解就很多了,你可以随便拟合,但是当x,y有很多组数据时,怎么才能更好的拟合呢,此时就需要我们去寻找目标函数了,对于线性回归,我们可以把误差平方的平均值当作目标函数即: (m/1)*(yyy-y)2,一般我们再乘1/2,yyy指的是通过拟合得到的值。对于所有的x,y,只要当这个函数取得的值最小时,此时的w,b就是我们要求的参数,此时拟合效果最好,所以目标函数就是代价函数。

代价意思就是去评估该拟合的效果是怎样的,也就是误差,也叫损失,损失函数指的是一组数据(即单个样本)产生的误差,而代价函数指的是所有样本的损失和的平均值。

而在机器学习中要做的就是对代价函数进行优化,寻找使代价最小的方法,包括基于梯度的优化。这就是我对模型,目标函数,代价函数以及优化目标函数的理解。如果有说的不对的地方,希望可以评论出来,我马上进行修改。

2.代价函数的选择

2.1、线性回归代价函数

一般我们用预测值和实际值的平方差或者他们平方差的一半作为损失函数

2.2、逻辑回归代价函数

但是在做逻辑回归的时候用到的损失函数不用这个,因为在学习线性回归的参数时,优化目标是凸优化,而逻辑回归的不是凸优化,梯度下降法很可能找不到全局最优值。逻辑回归的损失函数是
cost=-ylogyyy-(1-y)log(1-yyy)

推导过程:最大似然,即负的对数似然
此时当y=0时,cost=-log(1-yyy),cost尽可能小,那么yyy就要尽可能小,因为逻辑回归中yyy的范围[0,1],所以此时yyy就会无限接近于0,当y等于1时,同样可以发现,此时yyy会无限接近于1。
那么这个损失函数是怎么求的呢?

逻辑回归的yyy指的是p(y=1|x),即在x的条件y取1的概率。那么y取0的概率就是1-yyy.所以换句话说就是(以二分类为例,y只能为0,1):
如果y=1,p(y|x)=yyy
如果y=0,p(y|x)=1-yyy

可以把这两个条件概率公式进行合并:

p(y|x)=yyyy(1-yyy)(1-y) (该公式的推导可以自己推导证明下其正确性)

对于逻辑回归我们的目标:以最大的概率去预测这个值(也就是预测可以达到y值的概率)
所以我们要做的就是去优化 yyyy(1-yyy)(1-y) 达到最大值,在这取下log,因为log是单调递增的函数

所以变为了求 log(yyyy(1-yyy)(1-y)) 的最大值

转化一下变为ylogyyy+(1-y)log(1-yyy)

这时候发现这就是上面提到的代价函数的负值,因为我们是要使代价最小,所以给该函数加个负号就变成了损失函数即

cost=-ylogyyy-(1-y)log(1-yyy)

这仅仅是在一个样本的条件下,在m个样本时呢,当所有的样本服从同一分布并且相互独立(可以理解为参数相同,各个样本间不相互影响),那么这些样本的联合概率(所有样本同时发生的概率即p{y1|x1,y2|x2…})就是每个样本概率的乘积:

∏i=0m\prod_{i=0}^m∏i=0m​ p(y(i)|x(i))

此时我们的目标就转化成求该式的最大值,然后进行取log得到
log ∏i=0m\prod_{i=0}^m∏i=0m​ p(y(i)|x(i))

此时转变为求该式最大值,该式可以转变成如下形式

∑i=0m\sum_{i=0}^m∑i=0m​ log (p(y(i)|x(i)))

根据上面对单个样本损失函数的推导结果,使其转化变为代价函数的形式,最终变为了

∑i=0m\sum_{i=0}^m∑i=0m​ - (y(i)logyyy(i)+(1-y(i))log(1-yyy(i)))
(因为训练模型时,目标是让代价函数最小化,所以间接使用最大似然,加了一个负号)
通常最后对成本函数进行适当的放缩,即最终的代价函数为:

J=(1/m)∑i=0m\sum_{i=0}^m∑i=0m​ - (y(i)logyyy(i)+(1-y(i))log(1-yyy(i)))

注:
最大似然估计:即求出一组参数,使某个式子取得最大值。

2.3、神经网络代价函数

其实神经网络代价函数一般和上面的两个代价函数相同,取决于你的模型,如果做回归就采用线性回归形式的代价函数,如果做分类就选择逻辑回归形式的代价函数。

3.正则化的代价函数

对于采取了正则化的代价函数,实际上就是在未正则化的代价函数后面加上一个正则项,使权重衰减。对于该正则项可以选择L1范数,L2范数等,此处不再深入讨论。

又到一点半了,程序还没debug,希望看到这的你留下一个赞,您的点赞就是我前行的最大动力。

代价函数(损失函数)相关推荐

  1. 交叉熵代价函数(损失函数)及其求导推导

    转自:http://blog.csdn.net/jasonzzj/article/details/52017438 前言 交叉熵损失函数 交叉熵损失函数的求导 前言 说明:本文只讨论Logistic回 ...

  2. 交叉熵代价函数(损失函数)及其求导推导 (Logistic Regression)

    目录 1. 前言 2. 交叉熵损失函数 3. 交叉熵损失函数的求导 前言 说明:本文只讨论Logistic回归的交叉熵,对Softmax回归的交叉熵类似(Logistic回归和Softmax回归两者本 ...

  3. 机器学习系列(三)——目标函数、损失函数以及代价函数

    机器学习基础(三) 机器学习系列(一)--基础概念及分类 机器学习系列(二)--分类及回归问题 文章目录 机器学习基础(三) 4. 代价函数 4.1 为什么要使用代价函数 4.2 目标函数的作用原理 ...

  4. 成本函数/代价函数、损失函数、目标函数

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 目标函数:既可代指损失函数,又可代指代价函数/成本函数.有的地 ...

  5. 线性回归、逻辑回归、损失函数

    回归问题的条件/前提: 1) 收集的数据 2) 假设的模型,即一个函数,这个函数里含有未知的参数,通过学习,可以估计出参数.然后利用这个模型去预测/分类新的数据. 1. 线性回归 假设 特征 和 结果 ...

  6. 深度学习中的损失函数总结以及Center Loss函数笔记

    北京 上海巡回站 | NVIDIA DLI深度学习培训 2018年1月26/1月12日 NVIDIA 深度学习学院 带你快速进入火热的DL领域 阅读全文                        ...

  7. SoftMax和代价函数

    逻辑回归和SoftMax的理解: 逻辑回归 逻辑回归代价函数 这是逻辑回归的代价函数. 理解这个代价函数: 假设函数hθ代表的是预测y=1的概率(因为假设二值分布满足伯努利分布) - 例如:如果将x= ...

  8. 论文阅读+代价函数+激活函数

    =================第一部分 代价函数==================== 代价函数=损失函数 在机器学习中的每一种算法中,训练模型的过程就是优化代价函数的过程.代价函数对每个参数的 ...

  9. 机器学习_周志华_问题汇总_第2周

    问题 Q1 如果我想分析一下文本分类错误的原因,应该从哪些方面入手? 可以去分析一下哪个类别错误率高,然后看看这个类别的是否不平衡,针对这个类别看看能不能进行改进. 还有就是数据量过少,或是数据质量较 ...

最新文章

  1. C 语言编程 — 结构体的数据类型转换
  2. 硬件安全系列 逻辑电路基础知识介绍(二)
  3. 一天1个机器学习知识点(五)
  4. GitHub标星2.6万!Python算法新手入门大全
  5. mysqlnavicat数据库备份与恢复_Navicat如何还原MySQL数据库
  6. javascript入门_JavaScript入门手册(2020版)
  7. redis分表_《面试官系列:深入数据库分区分库分表》
  8. ELK详解(十五)——ELK+Redis配置实战
  9. Plugin [id: ‘com.github.kt3k.coveralls‘, version: ‘2.8.2‘] was not found in any of the following sou
  10. 没有别的厂家生产薯片?
  11. 前端自动化测试框架Jest中的匹配器
  12. IDEA常用快捷键整理大全(非常详细)持续更新中...
  13. .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  14. 【Android容器组件—AdapterView】
  15. 主键中的mappdeBy的使用方法
  16. 大数据讲课笔记2.2 大数据应用场景
  17. Python面试简历技能点写法总结
  18. MyBatis-Plus | 充分不必要
  19. java 转化罗马数字._Java刷LeetCode:整数转罗马数字
  20. tp5 操作web3

热门文章

  1. DHCP服务启动报“bad subnet number/mask combination.”的解决办法
  2. 饿了么手机版-VUE2
  3. SSM电影点播系统01--可行性分析和需求分析
  4. 2019年最新机械工程类专业院校排名及就业方向
  5. PMP超强备考攻略,考生必看
  6. 手把手教你Android集成第三方微信登录
  7. Linux和windows访问设备的方式比较
  8. 第7章 sed、gawk介绍与正则表达式-----------(gawk编辑器简单使用)
  9. 有什么方法能将jpg转成pdf格式呢
  10. 如何解决电脑速度慢?