@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. Ant 命令行编译Android项目

    首先把android sdk下的tools目录加到系统path环境变量里, 要么就得直接指定android.bat的绝对路径 对于一个新项目, 可以用这个命令创建需要的ant编译环境(可以看到andr ...

  2. WEBAPI 怎么保证安全

    先记录下   客户端登陆,服务端验证然后生成session,客户端每次调用接口的时候都把session带过去.服务端路由请求的时候都去验证session. 另外一种app的做法是,参数+用户名密码做s ...

  3. 后台运行程序screen or nohup

    后台运行 方法1 &   方法2:screen screen –S lnmp à起个名字 进去后运行程序 Ctrl+ad à退出lnmp屏幕 Scree –ls à查看 Screen –r x ...

  4. Android开篇(转)

    转自:http://gityuan.com/android/ 一.简述 Android系统非常庞大.错中复杂,其底层是采用Linux作为基底,上层采用包含虚拟机的Java层以及Native层,通过系统 ...

  5. 基于Spring的简易SSO设计

    通常稍微规模大一些的企业,内部已经有很多的应用系统,多个系统整合首先要解决的便是“统一登录(SSO)”问题,之前写过一篇 利用Membership实现SSO(单点登录) ,java环境下已经有一些开源 ...

  6. Python2.6-原理之类和oop(上)

    来自<python学习手册第四版>第六部分 一.oop:宏伟蓝图(26章) 在这之前的部分中,经常会使用"对象"这个词,其实,到目前为止都是以对象为基础的,在脚本中传递 ...

  7. 让mysql支持emoji表情

    一.问题及原因 APP产品想对Emoji进行支持,但发现mysql数据库无法写入表情.原因是我们的mysql数据库默认用的是utf8编码,utf8编码存储时用的是三个字节,但Emoji表情是4个字节, ...

  8. 完全开源Android网络框架 — 基于JAVA原生的HTTP框架

    HttpNet网络请求框架基于HttpUrlConnection,采用Client + Request + Call的请求模型,支持https默认证书,数字安全证书.支持http代理!后续将会实现队列 ...

  9. Altera SoC与Matlab的联合---第一步 软件安装与硬件测试

    参考设计:http://cn.mathworks.com/help/hdlcoder/examples/getting-started-with-hardware-software-codesign- ...

  10. JavaScript的理解记录(2)

    一.表达式与运算符: 1.对于属性访问表达式: var arr = {first:"hh","second":"gg",third:null ...