@tags: caffe 机器学习

在机器学习(暂时限定有监督学习)中,常见的算法大都可以划分为两个部分来理解它

  1. 一个是它的Hypothesis function,也就是你用一个函数f,来拟合任意一个输入x,让预测值t(t=f(x))来拟合真实值y

  2. 另一个是它的cost function,也就是你用一个函数E,来表示样本总体的误差。

而有时候还会出现loss function,感觉会和cost function混淆。

上quora看了下,有个同名问题,回答的人不多,upvote更少。。回答者里面,普遍认为cost function就是loss function,一个意思。

anyway,还是有个答案提到了区别,我更支持这种看法,参考这里:http://image.diku.dk/shark/sphinx_pages/build/html/rest_sources/tutorials/concepts/library_design/losses.html

简单说,loss function是对于单个样本而言的,比如对于0-1分类问题,当前预测样本x的输出为t,实际值为y,那么loss function就是y-t,或者abs(y-t);对于连续型数据的预测,也就是回归问题,loss function可以是差值的平方:(y-t)^2
cost function是对于样本总体而言的,对于0-1分类问题,loss function是n个样本的loss function取值的均值;而对于回归问题,cost function是n个样本的平方误差的平均,俗称均方误差(mean square error)

总结:cost function是各个样本的loss funcion的平均

========== 那么caffe下的loss又是怎么一回事?===========

caffe通常是视觉任务用的深度学习框架,处理的原始数据是图片。每次处理一张图片,这本身可以run,算是OK,但不够好。

每次处理多张图片,称为一个batch(批次),比如训练图片一共有4000张,每个batch处理50张。

按照batch来处理图片后,每个batch算出一个loss,也就是这50张图片的loss平均。当然这个loss其实并不是重点。重点是,用这50个样本,在做梯度下降来更新权值的时候,梯度是根据这50个样本算出来的均值,而不是用某一个图片的梯度:

这也就是要使用batch的原因。

=========== error又是什么 ============
error是说,一个预测结果和实际标签比较,一样的话不算错,不一样就算错(仅考虑分类问题)。
那么我在一个miniBatch之内,比如100张图,每张图对应一个分类的标签,以及一个预测出来的结果,这个预测结果和标签做比较,如果不一致说明“预测错了”。统计所有100张图上“预测错误的结果”的数量,比如有3个,那么error就认为是3,或者表示为3%。
也就是说,error表示的是“累计错误数量的占比”。从这一点来看,error关注的是“是否正确”的累计,而不是“单个结果上错误的程度”,error关注的是“质”,而loss关注的是“错误的程度”(根据loss函数来决定),这一点上,error和loss是有所不同的。

【caffe】loss function、cost function和error的更多相关文章

  1. 机器学习 损失函数(Loss/Error Function)、代价函数(Cost Function)和目标函数(Objective function)

    损失函数(Loss/Error Function): 计算单个训练集的误差,例如:欧氏距离,交叉熵,对比损失,合页损失 代价函数(Cost Function): 计算整个训练集所有损失之和的平均值 至 ...

  2. loss function与cost function

    实际上,代价函数(cost function)和损失函数(loss function 亦称为 error function)是同义的.它们都是事先定义一个假设函数(hypothesis),通过训练集由 ...

  3. 损失函数(Loss function) 和 代价函数(Cost function)

    1损失函数和代价函数的区别: 损失函数(Loss function):指单个训练样本进行预测的结果与实际结果的误差. 代价函数(Cost function):整个训练集,所有样本误差总和(所有损失函数 ...

  4. Model Representation and Cost Function

    Model Representation To establish notation for future use, we’ll use x(i) to denote the “input” vari ...

  5. [Machine Learning] 浅谈LR算法的Cost Function

    了解LR的同学们都知道,LR采用了最小化交叉熵或者最大化似然估计函数来作为Cost Function,那有个很有意思的问题来了,为什么我们不用更加简单熟悉的最小化平方误差函数(MSE)呢? 我个人理解 ...

  6. logistic回归具体解释(二):损失函数(cost function)具体解释

    有监督学习 机器学习分为有监督学习,无监督学习,半监督学习.强化学习.对于逻辑回归来说,就是一种典型的有监督学习. 既然是有监督学习,训练集自然能够用例如以下方式表述: {(x1,y1),(x2,y2 ...

  7. Linear regression with one variable - Cost function

    摘要: 本文是吴恩达 (Andrew Ng)老师<机器学习>课程,第二章<单变量线性回归>中第7课时<代价函数>的视频原文字幕.为本人在视频学习过程中逐字逐句记录下 ...

  8. Linear regression with one variable - Cost function intuition I

    摘要: 本文是吴恩达 (Andrew Ng)老师<机器学习>课程,第二章<单变量线性回归>中第8课时<代价函数的直观认识 - 1>的视频原文字幕.为本人在视频学习过 ...

  9. 逻辑回归损失函数(cost function)

    逻辑回归模型预估的是样本属于某个分类的概率,其损失函数(Cost Function)可以像线型回归那样,以均方差来表示:也可以用对数.概率等方法.损失函数本质上是衡量”模型预估值“到“实际值”的距离, ...

随机推荐

  1. 苹果IOS开发者账号总结--发布应用APP时team name是否可以随意写?

    个人账号(Individual): 费用99美金一年, 该账号在App Store销售者只能显示个人的ID,比如zhitian zhang,单人使用.个人账号只能有一个开发者.100个苹果的iOS设备 ...

  2. text

    链接: 初识 TextKit 如何实现自己没实现过的需求之文本动画

  3. Oracle 11g XE release2安装与指导

    今天上午我安装了Oracle 11g企业版,发现太占内存了,考虑到MS SQL有express版本,所以寻思着尝试尝试Oracle 11g的express版本,就是EX版本.下面是具体的安装步骤. 1 ...

  4. matlab:启动后无法调用工具包

    matlab有时候一打开会出现warning,然后任何工具包(包括set path)都执行不了,在网上找到解决方法,存下来备用. 1. 在matlab的command里输入: restoredefau ...

  5. 3098: Hash Killer II

    3098: Hash Killer II Time Limit: 5 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 1219  Solved:  ...

  6. css中如何设置字体

    来自百度的回答: 建议使用font-family: "Microsoft YaHei";支持UTF-8和GB2312字符集. 不生效的3种情况:1.当此属性定义的是全局样式时,对于 ...

  7. OS X运行AFNI的AlphaSim提示libgomp.1.dylib找不到的解决办法

    运行环境:OS X Mavericks 10.9.4,AFNI 问题描述: 运行AlphaSim命令时,提示以下信息dyld: Library not loaded: /usr/local/lib/l ...

  8. nginx图片处理相关

    nginx本身有支持图片处理的模块,通过外部插件也可以实现此功能. libgd的安装 前提是要有libgd的库文件, (1)去官网访问主页没问题,下载文件还是FQ下的,为了方便大家提供一个链接:htt ...

  9. DWZ-JUI 树形Checkbox组件 无法一次获取所有选中的值的解决方法

    UI中 tree Checkbox 组件 在官方文档中提供的oncheck事件中只能够获取当前点击的权限值,而无法获取其他选中的值 <ul class="tree treeFolder ...

  10. C#微信开发小白成长教程二(新手接入指南,附视频)

    距离第一讲又已经过去了一个多星期了,本打算一周更新一讲的,奈何实在太忙.最近也在群里发现有一部分人已经可以熟练调用微信的部分接口但却不是很清楚微信公众平台接收消息的一个处理机制.本讲就来介绍下怎么接入 ...