深度学习——损失函数推导过程(三个方面诠释损失函数的由来意义)

news2024/11/23 20:33:56

三个维度诠释损失函数

我们在学习机器学习的过程中,通常利用损失函数来衡量模型所做出的预测离真实值之间的偏离程度。

损失函数大致分为3类方法

  1. 最小二乘法
  2. 极大似然估计法
  3. 交叉熵

1.最小二乘法

这个方法是最显而易懂的,假设x是真实值,y是预测值,那么
∣ x − y ∣ |x-y| xy
式子(1)就是指真实值与预测值之间的偏差。这只是对一次样本,那么对于全部样本(数据集中包含n个样本),就要做累和:
∑ i = 1 n ∣ x i − y i ∣ \sum_{i=1}^n|x_i-y_i| i=1nxiyi
我们在求解过程中,需要求式子的最小值来对模型进行判断,那么公式二我们可以知道该式子是不连续的,即不可求导==【为什么?文章最后提到:①注解】==,于是我们在此基础是加上²,使该式子连续且可导,那么最后损失函数的第一种也就出来了
min ⁡ ∑ i = 1 n ∣ x i − y i ∣ 2 \min\sum_{i=1}^n|x_i-y_i|^2 mini=1nxiyi2

2.极大似然估计法

在学习该方法之前,我们需要先了解,什么是似然。在理论和现实之间总存在差异,也就是理论可以推导预判现实,而对于现实是不可以推导出真实的理论,但是能够与理论靠近。这里可以举个例子,我们知道每次丢硬币的正负两面出现的概率都是1:1,我们一次丢两枚硬币,两枚都向上或都向下的概率应该为1/2*1/2=1/4,如果我们不知道这个理论,随机丢5次,可能运气差点,每次两枚硬币都朝上,这样现实中我们仅仅靠观测到的概率就和理论明显存在差异了。所以我们应该做多次实验,尽可能让其数据达到平稳,也就是让其靠近实际理论。这就是似然。

在神经网络中,理论模型就好比我们人类的大脑,而我们需要不断去训练神经网络,使其靠近我们大脑的评估模式。因此也能够这样理解,一组待检测样本数据D,D经过人类大脑,被赋予含义T,再将D输入到神经网络中,得到模拟模型的结果P。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oyFm8HL2-1668925234254)(F:%5C%E4%B8%AA%E4%BA%BA%E8%B5%84%E6%96%99%5C%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%5C%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%5C1668920842183.png)]

这里我们简化一下,假设所有输入的图片只有一种类型cat,我们只需判断它是不是cat,对于真实值1表示是cat,0表示不是cat,对于训练的预测值表示其像cat的概率。

在训练神经网络模型其实就是训练其参数W,b。在(W,b)模型下,单个样本得到正确检测结果的概率为(假设x是样本真实值,y是神经网络预测值)
P ( x ∣ ( W , b ) ) P(x|(W,b)) P(x(W,b))
那么全体样本是真实值的概率就是单个样本的累积
∏ i = 1 n P ( x i ∣ ( W , b ) ) \prod_{i=1}^nP(x_i|(W,b)) i=1nP(xi(W,b))
而y=f(W,b),可以用y替代(W,b),得到
∏ i = 1 n P ( x i ∣ y i ) \prod_{i=1}^nP(x_i|y_i) i=1nP(xiyi)
求这个式子的最大值,在求解过程中,我们习惯利用加法来简化求解的复杂性,因此这里将其进行log求指数,使累积变成累和并且不改变其单调性
log ⁡ ∏ i = 1 n P ( x i ∣ y i ) = ∑ i = 1 n log ⁡ P ( x i ∣ y i ) \log\prod_{i=1}^nP(x_i|y_i)\\=\sum_{i=1}^n\log P(x_i|y_i)\\ logi=1nP(xiyi)=i=1nlogP(xiyi)
对于x,我们知道其属于伯努利分布:
f = { p x = 1 1 − p x = 0 f=\begin{cases}p & x=1 \\1-p & x=0 \\\end{cases} f={p1px=1x=0
那么其概率分布函数可以写成
f ( x ) = p x ( 1 − p ) 1 − x f(x) = p^x(1-p)^{1-x} f(x)=px(1p)1x
对应在公式(7)中
∑ i = 1 n log ⁡ P ( x i ∣ y i ) = ∑ i = 1 n log ⁡ y i x i ( 1 − y i ) 1 − x i = ∑ i = 1 n x i log ⁡ y i + ∑ i = 1 n ( 1 − x i ) log ⁡ ( 1 − y i ) \sum_{i=1}^n\log P(x_i|y_i)\\=\sum_{i=1}^n\log y_i^{x_i}(1-y_i)^{1-x_i}\\=\sum_{i=1}^nx_i\log y_i+\sum_{i=1}^n(1-x_i)\log (1-y_i) i=1nlogP(xiyi)=i=1nlogyixi(1yi)1xi=i=1nxilogyi+i=1n(1xi)log(1yi)
于是第二种损失函数就是
∑ i = 1 n x i log ⁡ y i + ∑ i = 1 n ( 1 − x i ) log ⁡ ( 1 − y i ) \sum_{i=1}^nx_i\log y_i+\sum_{i=1}^n(1-x_i)\log (1-y_i) i=1nxilogyi+i=1n(1xi)log(1yi)

3.交叉熵

这里我们需要了解一个概念,就是公式是如何被定义的。

我们知道在力学里面
F : = m a F:=ma F:=ma
但是也有
F = G M m r 2 F=G\frac {Mm}{r^2} F=Gr2Mm
这里F:=ma并不代表力等于ma,而是被定义为ma。其中可以加入其它常量,不改变其性质即可。由此我们可以进入下一步。

信息量表示某个事件所带来的含义,信息量越大,整个事件的不确定性也就越大。换句话说也可以表示该事件发生的概率越小。

以最近很火的世界杯为例,事件F1(中国队世界杯夺冠),和事件F2(阿根廷世界杯夺冠),F1和F2哪个发生所带来的信息量大呢?显然是F1。这里可能有人不理解为什么是F1,就好比我说了两句话

a:世界杯成功举办了

b:枯藤老树昏鸦

a只传达了世界杯成功举报一个信息,而b传达的是三个物体以及他们的三种不同属性。同样,我们知道中国队世界杯夺冠的可能性远远小于阿根廷,因此当F1发生时,我们会获得大量信息,其中包括了对该事件发生的不理解以及震惊(当然阿根廷队夺冠我们也会有情感上的波动,但是这里大家懂的都懂)。

于是我们可以将信息量与概率关联起来:

F1的信息量包含了F3(中国队挺进世界杯决赛)以及F4(中国队决赛胜利)

F1的概率是F3的概率乘以F4的概率
F ( 1 ) = F ( 3 ) + F ( 4 ) P ( 1 ) = P ( 3 ) ∗ P ( 4 ) F(1)=F(3)+F(4)\\P(1) = P(3)*P(4) F(1)=F(3)+F(4)P(1)=P(3)P(4)
所以我们在表示信息量的时候可以引入概率这个属性特征,而我们知道信息量是累积,概率是累和,因此这里可以引入log,使其计算发生变换,与此同时,信息量与概率成反比,最后要在式子前面加入一个符号,这样信息量的定义就完成了
F ( x ) : = − log ⁡ P ( x ) F(x):=-\log P(x) F(x):=logP(x)
回到深度学习神经网络,如何使模型接近完美的理想模型,这里就提出了相对熵的概念(KL散度):考虑某个未知的分布p,假设用一个近似分布q对它进行建模
D K L ( p ∣ ∣ q ) = ∑ i = 1 n p ( x i ) log ⁡ p ( x i ) q ( x i ) = ∑ i = 1 n p ( x i ) log ⁡ p ( x i ) − ∑ i = 1 n p ( x i ) log ⁡ q ( x i ) = ∑ i = 1 n p ( x i ) ( − log ⁡ q ( x i ) ) − ∑ i = 1 n p ( x i ) ( − log ⁡ p ( x i ) ) = 交 叉 熵 − 信 息 熵 D_{KL}(p||q)\\=\sum_{i=1}^np(x_i)\log \frac{p(x_i)}{q(x_i)}\\=\sum_{i=1}^np(x_i)\log p(x_i)-\sum_{i=1}^np(x_i)\log q(x_i)\\=\sum_{i=1}^np(x_i)(-\log q(x_i))-\sum_{i=1}^np(x_i)(-\log p(x_i))\\=交叉熵-信息熵 DKL(pq)=i=1np(xi)logq(xi)p(xi)=i=1np(xi)logp(xi)i=1np(xi)logq(xi)=i=1np(xi)(logq(xi))i=1np(xi)(logp(xi))=
根据证明DKL恒大于等于0,因此其值越小,说明模型相近度越高。

交叉熵越大,其模型消除不确定性的努力越大。

应用到神经网络,这里P相当于人类大脑的模型,相当于我们实现对样本数据进行的标注,也就是说P是确定的,于是p的信息熵也就是确定的,我们要求DKL的最小值,也就是求交叉熵的最小值。

q表示预测的结果,我们从数据上看,p=1表示这个是cat,p=0表示这个表示cat,p表示了是和不是两种情况的可能性,而q仅仅表示的是该物体近似cat的可能性,于是我们需要对q进行变化,其不能直接用预测值y进行表示
交 叉 熵 = ∑ i = 1 n p ( x i ) ( − log ⁡ q ( x i ) ) = ∑ i = 1 n x i log ⁡ y i + ( 1 − x i ) l o g ( 1 − y i ) ) 交叉熵=\sum_{i=1}^np(x_i)(-\log q(x_i))\\=\sum_{i=1}^nx_i\log y_i+(1-x_i)log(1-y_i)) =i=1np(xi)(logq(xi))=i=1nxilogyi+(1xi)log(1yi))
虽然这个式子与最大估计似然方法得到的式子一样,但是从推导上看,我们可以知道前者的log是从定义上来的,而后者的log是从方便计算上来的。

注解

①为什么|x-y|不可导?

我们将公式变换一下,我们希望|x-y|=0,在这种情况下,是最理想的模型(当然对于大部分应用模型,这种情况是很少的),那么在理想情况下该公式可变为y=|x|,这个式子在全体定义域上其实就是分段函数:
y = { x x ≥ 0 − x x < 0 y=\begin{cases}x & x\geq0 \\-x & x<0 \\\end{cases} y={xxx0x<0
是不连续的,当对其加平方之后,相当于|x|²,即使其可连续可导。








若有问题,欢迎指出

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

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

相关文章

【PyTorch】Neural Network 神经网络

文章目录四、Neural Network 神经网络1、Containers - Module2、Convolution Layers - functional.conv2d2.1 stride2.2 padding3、Convolution Layers - Conv2d3.1 in_channels out_channels4、Pooling layers - MaxPool2d4.1 ceil_mode4.2 TensorBoard5、Non-linear Activati…

Eclipse启动SpringBoot无法读取application.properties或者application.yml文件内容

原因 eclipse配置源代码excludes过滤掉了application.properties或application.yml造成的 解决 2.1 右键项目&#xff0c;选Build Path --> Configure Build Path 2.2 找到 Source --> resources --> Excluded&#xff0c;点击Edit 2.3 点击Edit 2.4 将**改成Non…

【Java八股文总结】之多线程

文章目录Java多线程一、线程1、什么是线程&#xff1f;什么是进程&#xff1f;二者的区别1、给线程起别名的3种方式2、this关键字3、守护线程和用户线程4、并发和并行的区别&#xff1f;5、线程间通信的方式2、synchronized关键字补充&#xff1a;snchronized底层实现原理3、vo…

如何用FMEA方法排除架构隐患

FMEA介绍 定义 FMEA&#xff08;Failure mode and effects analysis&#xff0c;故障模式与影响分析&#xff09;又称为失效模式与后果分析、失效模式与效应分析、故障模式与后果分析等&#xff0c;本文采用“故障模式与影响分析” 历史 FMEA 最早是在美国军方开始应用的&a…

2022-11-20-使用BeatuifulSoup进行页面内容的获取

一、什么是DOM树 DOM树是一种结构&#xff0c;树是由DOM元素和属性节点组成的&#xff0c;DOM的本质是把html结构化成js可识别的树模型&#xff0c;有了树模型&#xff0c;就有了层级结构&#xff0c;层级结构是指的是元素和元素之间的关系父子、兄弟。 实例&#xff1a; 标题…

Java语法之多态

上次给大家分享了Java的继承&#xff0c;今天小编给大家分享面向对象三大特性的第三大特性&#xff0c;也就是多态&#xff0c;fighting~~ 目录 &#x1f388;一. 多态 &#x1f388;1.1多态的概念 &#x1f388;1.2多态的实现条件 &#x1f388;1.3向上转型和向下转型 &a…

HDFS 的 shell操作

文章目录前言一、基本语法二、创建目录三、上传moveFromLocal-copyFromLocal-put-appendToFile四、下载-copyToLocal-get五、HDFS直接操作-ls-cat-chgrp、-chmod、-chown-mkdir-cp-mv-tail-rmrm -r-du-setrep前言 HDFS的shell操作很多跟linux的shell语法是比较相近&#xff0c…

Python学习基础笔记八——字典

字典&#xff1a; 1&#xff09;字典中的元素是通过键来存储的&#xff0c;而不是通过偏移来存取的。字典是唯一内置的映射类型&#xff08;键映射到值的对象&#xff09; 2&#xff09;是无序集合&#xff1b; 3&#xff09;字典是作为散列表&#xff08;支持快速检索的数据…

html网页设计期末大作业_网页设计平时作业(诗词网页 4页)

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 茶文化网站 | 中华传统文化题材 | 京剧文化水墨风书画 | 中国民间年画文化艺术网站 | 等网站的设计与制作 | HTML期末大学生网页设计作业&#xff0c;…

39-Docker-部署Jenkins

部署Jenkins前言部署Jenkins1. 下载镜像2. 创建挂载目录3. 创建并启动Jenkins容器使用Jenkins1. 访问Jenkins2. 输入密码3. 配置Jenkins前言 本篇来学习使用Jenkins镜像部署Jenkins 部署Jenkins 1. 下载镜像 docker pull jenkins/jenkins2. 创建挂载目录 # 创建挂载目录 m…

Oracle PrimaveraUnifier成本管理器(Cost Manager)简要介绍

目录 一&#xff1a;标准成本管理器(Standad Cost Manager) 二&#xff1a;通用成本管理器(General Cost Manager) 成本管理器(Cost Manager)是Unifier管理和聚焦汇总成本的主要组成部分&#xff0c;财务最关系的Cost Sheet 成本表将通过 成本管理器制定模板 在Oracle Pirma…

第三章:高精度算法(加、减、乘、除)

高精度算法高精度的整体思路&#xff1a;一、加法1、思路&#xff1a;2、模板&#xff1a;&#xff08;1&#xff09;C版&#xff1a;&#xff08;2&#xff09;C语言版&#xff1a;二、减法1、思路&#xff1a;2、模板&#xff1a;CC三、乘法1、思路&#xff1a;2、模板&#…

CMake中return的使用

CMake中的return命令用于从文件、目录或函数返回&#xff0c;其格式如下&#xff1a; return([PROPAGATE <var-name>...]) 当在包含文件中(in an included file)遇到此命令时(通过include或find_package命令)&#xff0c;它会导致当前文件的处理停止并将控制权返回给包含…

CTFHub | Cookie注入

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

Linux C/C++ 学习笔记(五):Mysql C/C++编程 创建 插入 读取 删除 存储过程

本文参考Linux C/C 开发&#xff08;学习笔记七&#xff09;&#xff1a;Mysql数据库C/C编程实现 插入/读取/删除_菊头蝙蝠的博客-CSDN博客 一、数据库建模与建库建表 在设计数据库时&#xff0c;对现实世界进行分析、抽象、并从中找出内在联系&#xff0c;进而确定数据库的结…

计算机视觉之迁移学习中的微调(fine tuning)

现在的数据集越来越大&#xff0c;都是大模型的训练&#xff0c;参数都早已超过亿级&#xff0c;面对如此大的训练集&#xff0c;绝大部分用户的硬件配置达不到&#xff0c;那有没有一种方法让这些训练好的大型数据集的参数&#xff0c;迁移到自己的一个目标训练数据集当中呢&a…

javaweb Ajax AXios异步框架 JSON 案例

AJAX概念&#xff1a;AJAX(Asynchronous JavaScript And XML)&#xff1a;异步的 JavaScript 和 XML AJAX作用&#xff1a; 与服务器进行数据交换&#xff1a;通过AJAX可以给服务器发送请求&#xff0c;并获取服务器响应的数据 使用了AJAX和服务器进行通信&#xff0c;就可以…

ArcGIS_将多个点数据整合成一个点数据

问题描述:如何将多个点合并成一个点,并保留原始点数据的字段信息 方法一:整合 打开arcgis整合工具 :“数据管理工具——要素类——整合” 容差半径可以通过arcgis测量工具获取,根据自己的目标任务,选择合适的容差半径 该方法优点在于整合后的点可以正好位于原始点数据…

牛客网之SQL非技术快速入门(7)-字符串截取、切割、删除、替换

知识点&#xff1a; &#xff08;1&#xff09;substring_indexsubstring_index(str,delim,count) str:要处理的字符串 delim:分隔符 count:计数 &#xff08;2&#xff09;切割、截取、删除、替换 1 2 3 4 5 6 7 8 9 10 11 12 13 14 select -- 替换法 replace(string, 被…

俺把所有粉丝显示在地图上啦~【详细教程+完整源码】

文章目录&#x1f332;小逼叨&#x1f332;爬取所有粉丝的IP所属地&#x1f334;爬者基本素养&#xff1a;网页分析&#x1f334;源代码&#x1f332;数据清洗和保存&#x1f334;源代码&#x1f332;绘制地图&#x1f334;源代码&#x1f332;结束语&#x1f332;小逼叨 其实昨…