损失函数——机器学习

news2025/9/19 0:18:36

目录

一、实验内容

二、实验过程

1、算法思想

2、算法原理

3、算法分析

三、源程序代码

四、运行结果分析

五、实验总结


一、实验内容


  1. 理解损失函数的基本概念;
  2. 理解并掌握均方差损失函数的原理,算法实现及代码测试分析;
  3. 理解并掌握交叉熵损失函数的基本原理,代码实现并测试分析;
  4. 理解均方差与交叉熵损失函数的区别。

二、实验过程


1、算法思想


        简单的理解就是每一个样本经过模型后会得到一个预测值,然后得到的预测值和真实值的差值就成为损失。损失值越小证明模型越是成功。

2、算法原理


        损失函数用来评价模型的预测值和真实值不一样的程度,损失函数越好,通常模型的性能越好。不同的模型用的损失函数一般也不一样。

        损失函数分为经验风险损失函数和结构风险损失函数。经验风险损失函数指预测结果和实际结果的差别,结构风险损失函数指经验风险损失函数加上正则项。

均方差损失函数

 交叉熵损失

3、算法分析


损失函数使用步骤

  1. 用随机值初始化前向计算公式的参数。
  2. 代入样本,计算输出的预测值。
  3. 用损失函数计算预测值和标签值(真实值)的误差。
  4. 根据损失函数的导数,沿梯度最小方向将误差回传,修正前向计算公式中的各个权重值。
  5. 重复步骤2,直到损失函数到达一个满意的值就停止迭代。

三、源程序代码


均方差损失函数:
def MSE (y, y_predicted):
    sq_error = (y_predicted - y) ** 2
    sum_sq_error = np.sum(sq_error)
    mse = sum_sq_error/y.size
    return mse

交叉熵损失函数:

import math
 
 
def softmax(x):
    m, n = len(x), len(x[0])
    for i in range(m):
        cur_m = max(x[i])
        for j in range(n):
            x[i][j] = math.exp(x[i][j] - cur_m)
        cur_s = sum(x[i])
        for j in range(n):
            x[i][j] = x[i][j] / cur_s
    return x
 
 
def crossentropy(y_hat, y):
    # y_hat: [N, C]
    # y: [N]
    loss = 0
    batch_size = len(y)
    y_softmax = softmax(y_hat)
    for i in range(batch_size):
        loss -= math.log(y_softmax[i][y[i]])
    return loss
 
 
x = [[0.1, 0.2, 0.7], [0.5, 0.2, 0.3]]
y = [2, 0]
print(crossentropy(x, y))

四、运行结果分析


 交叉熵损失函数计算得出损失值

 

五、实验总结


        均方差函数常用于线性回归计算预测值和真实值之间的欧式距离。预测值和真实值越接近,两者的均方差就越小。

        交叉熵误差是一个-log函数,也就意味着,交叉熵误差值越小,神经网络在对应正确解标签的输出越接近1,即神经网络的判断和正确解标签越接近。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/29466.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【linux】linux实操篇之权限管理

14天学习训练营导师课程: 互联网老辛《 符合学习规律的超详细linux实战快速入门》 目录前言权限的基本介绍rwx权限详解更改文件属性1、chgrp:更改文件属组2、chown:更改文件属主,也可以同时更改文件属组3、chmod:更改文…

帷幄前沿茶话丨如何发起一场直播间运营变革?

打开抖音,各种各样的带货模式都有。吃播的、喊麦的、跳舞的、说相声的,各种表现形式都可以是带货的手段。 但实际效果如何复盘?一旦感性的带货模式回归到理性分析,问题就没那么简单了。 电商的关键衡量指标是 GMV。直播带货中&…

[附源码]java毕业设计学院竞赛管理信息系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

RabbitMQ【基本使用】

目录 消息队列 1. Message queue 释义 1.1 问题思考 ? 1.2 存在问题 1.3 优化方案 1.4 案例分析 1.5 带来的好处 1.6 消息队列特点 1.7 Email邮件案例分析 2. 消息队列相关 2.1 AMQP 3. Docker安装部署RabbitMQ 4. springboot连接配置 4.1 RabbitMQ 配置账号…

Unity记录

第四课:组件 自定义组件,主要是 编写 脚本 脚本:要求必须 挂载 到游戏物体上,才能使用 主要组件: (1)gameObject 游戏对象 VS中的显示 总结: //属性 name:名称 tag : 标签名称 ac…

Execution failed for task ‘:app:javaPreCompileDebug‘.

debug运行app到模拟器的时候,一直报错,然后百度了下,给出的答案是: android { defaultConfig { //添加如下配置就OK了 javaCompileOptions { annotationProcessorOptions { includeCompileClasspath true } } } 但是加了之后&am…

[附源码]java毕业设计养老护理综合服务系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

个人养老金真的要来了,详解人社部、财政部、税务局、银保监会和证监会联合发布的《个人养老金实施办法》(要点概览+示意图+逐条解读)

11月5日,人力资源社会保障部、财政部、国家税务总局、银保监会、证监会联合发布了《个人养老金实施办法》。(人社部发〔2022〕70号) 11月18日,中国银保监会发布了《商业银行和理财公司个人养老金业务管理暂行办法》。(…

将一个硬盘空间分配给另一个硬盘,怎么把一个磁盘的空间给另一个磁盘

用户在管理电脑磁盘分区的时候,为了更好地利用磁盘分区,需要对磁盘分区进行调整,如果涉及到磁盘分区调整,将一个硬盘空间分配给另一个硬盘?那么,在本文中,易我小编将介绍电脑磁盘分区调整的知识…

【Linux】线程池

文章目录1.线程池概念2.线程池的优点3.线程池的应用场景4.线程池的实现5.STL和智能指针和线程安全5.1其他常见锁5.2读写锁1.线程池概念 线程池是一种线程使用模式。 线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线 程,等待…

土地覆盖数据集汇总

前言 土地覆盖数据是理解人类活动与全球变化之间复杂相互作用的关键信息来源,在改善生态系统、水文和大气模型的性能方面发挥着关键作用。而土地覆盖变化(LCC)是全球环境变化的起因和结果,影响着全球能量平衡和生物地球化学循环,进而影响气候变化和生态系…

Flutter中GetX系列二--Snackbar基本使用(顶部弹窗)

Snackbar基本使用 第一步:应用程序入口设置 当我们导入依赖后,在应用程序顶层把GetMaterialApp 作为顶层,如下所示 import package:flutter/material.dart; import package:get/get.dart;void main() {runApp(MyApp()); }class MyApp exte…

智慧物流解决方案-最新全套文件

智慧物流解决方案-最新全套文件一、建设背景行业痛点二、建设思路三、建设方案四、获取 - 智慧物流全套最新解决方案合集一、建设背景 随着物流国际化发展以及信息技术的普遍应用,物流管理由手工作业到半自动化、自动化,直至智能化的发展过程。面对现代…

MySQL之索引

引言 数据库作为项目中必不可少且运行速度相对较慢的一环,尤其是在大数据量下保证其更高的性能、更稳定的性能是每个后端程序员必备的技能。MySQL在执行查询语句时,会通过IO扫描磁盘,遍历数据表中的每一条数据,时间复杂度为O(N)&…

【机器学习】EM算法

EM算法 目录一、似然函数与极大似然估计二、Jenson不等式三、数学期望的相关定理四、边缘分布列五、EM算法一、似然函数与极大似然估计 例一 现有一个不透明的罐子,里面装有质地、大小均相同而颜色不同的黑白两种球(数目未知)。现要求在经过…

MyBatis 增删改查操作

什么是 MyBatis? mybatis 是一款优秀的持久层框架,用于简化 JDBC 开发 MyBatis 本是 Apach 的一个开源项目 iBatis,2021 年这个项目由 apach software foundation 迁移到了 google code,并且改名为 MyBatis。2013 年 11 月迁移到…

[附源码]java毕业设计氧气罐管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

js逆向之反调试之无限debugger解决

js逆向之反调试之无限debugger解决 文章目录 js逆向之反调试之无限debugger解决方案一方案二方案三方案一 右击debugger行数位置,点击add conditional breakpoint… 点击add conditional breakpoint.png 添加false,然后按回撤, 刷新网页,发现成功跳过无限debugger 修改成…

TiDB 6.0 新特性

TiDB 6.0 新特性 Placement Rules in SQL小表缓存内存悲观锁Top SQLTiDB Enterprise Manager(TiEM) Placement Rules in SQL Placement Rules in SQL 之前: 跨地域部署的集群,无法本地访问无法根据业务隔离资源,leader全在一个TiKV节点上…

CTFHub | UA注入

0x00 前言 CTFHub 专注网络安全、信息安全、白帽子技术的在线学习,实训平台。提供优质的赛事及学习服务,拥有完善的题目环境及配套 writeup ,降低 CTF 学习入门门槛,快速帮助选手成长,跟随主流比赛潮流。 0x01 题目描述…