什么是损失函数与平均误差算法分析
目录
损失函数概念
平均误差算法
损失函数概念
这里通过一组简单的Demo来做演示,例如摄氏度到华氏度的转换,给学习框架一组对应关系的数据,并让AI去不停的推理,经过时间的计算与推理可以发现两组数据之间的正比例关系。
那么这其中是有误差的,这个误差是由谁来记录的?
答案:损失函数,loss
损失函数的作用就是记录这组误差,并且在无数此的学习中不停的优化误差,当误差越小,则预测结果越准确,误差就是用来做补偿的。
首先我们通过一组简单的数据来讲述:
上面一组是摄氏度,下面一组是华氏度
-40,-10,0,8,15,22,38
-40,14,32,46,59,72,100
它们俩是有对应关系的,这组数据交给神经网络去训练,AI会去进行观测,并且对每次观测数据进行记录,比如记录第一组数据的第一个值与第二组数据的第二个值的差值是多少,第一组第一个值与第二组第二个值差值是多少... 不停的去观测,此时需要记录每次观测的差值是多少,所以就需要一个方法来记录差值,所以就诞生了损失函数。
损失函数将值记录起来:观测值与预期值的差值,每次都记录起来,在最终预测时输出结果时会加上损失函数作补偿,理论上来说损失函数越小的情况下,代表这组模型准确率越高,因为意味着每次预期误差其实并不大,AI在训练时会不停的进行预测,来优化自身算法公式里的参数值。
平均误差算法
在损失函数中最著名的就是平均误差算法,以下是它的算法公式
y是预期值,i是次数,因为每次观测都会被记录,i代表次数,k*xi是观测值,因为AI会去猜,k在什么情况下乘上xi是正确值,AI会不停的去猜k是多少,让k不停的变化直到结果等于0的情况下就代表这组观测数据是正确的,AI会不停的去修改k的值,yi-k*xi的值越来越小,甚至等于0,AI会找到最合适的K值。
后面的平方符号是为了防止出现负数,因为出现负数很明显是不正确的,因为最终结果是需要除去n的,这里n的值是总观测次数,上面也说过,每次观测值都需要被记录,损失函数还会记录总共观测了多少次,最终将总误差值在除于总的观测次数,就得到了平均误差值了,所以这就是平均误差算法的核心思路。
在之我们已经分析出这个算法公式的主要思路,那么我们可以通过编程来实现它,因为损失函数是用在训练上,如果我们再写一套CNN属实复杂化了,这里我写一套伪代码,来将上述算法公式转化为代码,这样看的就会更清晰
以下代码仅仅是用代码表示公式的伪代码
#include <stdio.h>//获取数组实际数量
#define ArrSize(arr,type) sizeof(arr)/type
//用于猜最合适的k值
#define GUESS 12500
#define DAMAGE 1.35f
//观测值与预期结果值,也称为样本与学习样本
int centigrade[] = {-40,-10,0,8,15,22,38};
int fahrenheit[] = {-40,14,32,46,59,72,100};
//记录合适k值
int k_arr[GUESS] = {0};double aueragLoss(int* observation,int* learning,int len1,int len2,int guess){double loss = 0.0f; //损失值int n = 0; //记录观测次数int j = 0; //学习样本索引int k = guess; //猜测k值//空指针判断if(observation == NULL || learning == NULL){return 0.0f;}//开始观测for(int i = 0;i<len1;++i,j++){//为了防止观测数据集长度大于学习样本索引出现内存溢出风险,这里做一个判断if(j >= len2){ //数组下标从0开始,所以这里在等于实际数时就应当清零j = 0;}//这里的12500我们假设一个最大阈值,用来猜最合适的k值loss = observation[i] - k*learning[j];//记录观测数量n++; }//当产生负数时进行一次平方运算,这个是可选的,你可以直接做平方也可以做判断//算法公式是死的,思路是活的,我这里做判断是为了防止数过大,所以只在负数的情况下做平方运算if(loss<0){loss *= loss;}//最后一步,获取平均差值,就是观测总插值除于次数就可以得到平均差值loss/=n; //返回差值return loss;
}int main(){int k_index = 0; //合适k数组索引//这里通过不停猜测k值来检索最合适的k值for(int k = 0;k<GUESS;++k){double loss = aueragLoss(centigrade,fahrenheit,ArrSize(observation,int),ArrSize(learning,int),k);printf("k为:%d时的损失:%lf\n",k,loss);//判断损失是否小于预设阈值,若小于则代表这个k值比较合适,应当记录if(loss <= DAMAGE){printf("k值为:%d时损失达到预设阈值\n",k);k_arr[k_index++] = k;}}//打印合适k值printf("合适k值数量有:%d\n",k_index);for(int i = 0;i < k_index;++i){printf("%d ",k_arr[i]);}printf("\n");return 0;
}
在Tensor Flow里使用Keras训练时就可以看到选中损失函数的选择
model.compile(optimizer = 优化器,loss = 损失函数,mean_squared_error、categorical_crossentropy...metrics = ["准确率”])
mean_squared_error就是平均误差算法
什么是损失函数与平均误差算法分析相关推荐
- 干货收藏!一文看懂8个常用Python库从安装到应用
导读:Python本身的数据分析功能并不强,需要安装一些第三方扩展库来增强其相应的功能.本文将对NumPy.SciPy.Matplotlib.pandas.StatsModels.scikit-lea ...
- python数据分析模块包括_数据开发必会 | Python数据分析模块
作为数据开发,Python强大的数据分析模块还是必须要会的,横向拓展数据分析与挖掘技术栈也是很有必要的.本文将对Pandas.NumPy.SciPy.Matplotlib等分析挖掘库的安装和使用进行简 ...
- python基础知识及数据分析工具安装及简单使用(Numpy/Scipy/Matplotlib/Pandas/StatsModels/Scikit-Learn/Keras/Gensim))
Python介绍. Unix & Linux & Window & Mac 平台安装更新 Python3 及VSCode下Python环境配置配置 python基础知识及数据分 ...
- Python数据分析与挖掘的常用工具
Python语言: 简要概括一下Python语言在数据分析.挖掘场景中常用特性: 列表(可以被修改),元组(不可以被修改) 字典(<k,v>结构) 集合(同数学概念上的集合) 函数式编程( ...
- 机器学习-常见的损失函数比较
在机器学习每一个算法中都会有一个目标函数,算法的求解过程是通过对这个目标函数优化的过程.在分类或者回归问题中,通常使用损失函数(代价函数)作为其目标函数.损失函数用来评价模型的预测值和真实值不一样的程 ...
- 机器学习者都应该知道的五种损失函数!
摘要: 还不知道这五种损失函数?你怎么在机器学习这个圈子里面混? 在机器学习中,所有的机器学习算法都或多或少的依赖于对目标函数最大化或者最小化的过程,我们常常把最小化的函数称为损失函数,它主要用于衡量 ...
- 交叉熵和mse_损失函数 - MSE
本来主要介绍机器学习中常见的损失函数MSE的定义以及它的求导特性. 数理统计中均方误差是指参数估计值与参数值之差平方的期望值,记为MSE.MSE是衡量"平均误差"的一种较方便的方法 ...
- [机器学习] 概念解析:从经验风险、结构风险到代价函数、损失函数、目标函数
文章目录 经验风险和结构风险 经验风险 结构风险 代价函数.损失函数.目标函数的定义 损失函数和代价函数 目标函数 经验风险和结构风险 借用 Andrew Ng Machine Learning 公开 ...
- 【深度学习】损失函数详解
损失函数 什么是损失函数? 损失函数的分类 回归损失 L1 Loss L2 Loss Smooth L1 Loss IoU Loss IoU Loss vs Lx Loss GIoU Loss DIo ...
最新文章
- 一个射击运动员打靶,靶一共有10环,连开10枪打中90环的可能性有多少种?请用递归算法编程实现。...
- 【转载】老鸟程序员总结的这些小技巧
- 游戏社交崛起!四缺一,开黑吗?
- 福州java培训哪里好_福州自学考试培训班哪里比较好
- Python3函数和代码复用
- 1247 排排站 USACO(查分+hash)
- 容器混合云发展引争议,专家亚马逊云科技中国峰会共探讨
- Prototype使用$A()函数
- Geoserver使用CSS插件编辑Style样式
- 科研 | 中英文期刊分区介绍及查询方法
- Eclipse语言包及ADT安装教程
- GUI界面设计1 三角函数
- python爬数据是什么意思-这python爬虫是什么意思?爬虫怎么抓取数据?
- 硕士论文结构分析与如何写作
- 马云预言再次成真!刷脸支付迅速开拓市场,二维码市场岌岌可危
- poi 颜色对照表
- mac 不显示 外接屏幕_mac连接投影仪不显示怎么办-mac外接显示器设置教程 - 河东软件园...
- 第十三届蓝桥杯大赛软件组省赛 Python大学A组 个人题解
- 电商平台数据仓库搭建01-项目介绍
- 供电公司业扩工程项目管理(原创)
热门文章
- 开源私有云盘python_用Seafile不花钱搭建高安全性局域网私有云盘
- php联合查询的前提条件,PHP生成HTML前提条件及原理介绍_PHP教程
- python try catch语句_Java try catch语句
- 车牌识别算法_易泊车牌识别算法助力智慧城市交通
- python进程socket通信_python3 进程间通信之socket.socketpair()
- 为什么软件开发周期总是预估的2-3倍?
- cesium 页面截图_Cesium开发入门篇 | 02Cesium开发环境搭建及第一个示例
- mysql optimize 用法_mysql中OPTIMIZE TABLE的作用
- 搜索鸿蒙系统,鸿蒙系统更进一步,华为上线搜索服务,HMS有望替代谷歌GMS
- python画二维温度云图_利用python画出词云图