深度学习原理24——损失函数与优化过程
栏目:行业资讯 发布时间:2024-05-13
损失函数1损失函数的作用1.1损失函数的作用就是调整权重1.2不同损失函数对应不同的分类器2各种损失函数2.1SVM平均合页损失2.2交叉熵损失(softmax分类后)2.3SVM与Softmax对比2.4L1损失:2.5L2损失:2.6均方误差2.7sigmoid和softmax1深度学习的交叉熵损失函数2sigmoid对应binary_cross_entropy3softmax对应2.8损失

损失函数是用来告诉我们当前分类器性能好坏的评价函数,是用于指导分类器权重调整的指导性函数,通过该函数可以知道该如何改进权重系数。
在这里插入图片描述

在图像识别中最常用的两个损失——多类别SVM损失(合页损失hinge loss)和交叉熵损失,分别对应多类别SVM分类器和Softmax分类器。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
注意交叉熵是在softmax计算出概率后再用
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

就是两个值的差的绝对值

就是两个值的差的平方
在这里插入图片描述

在这里插入图片描述

首先明确一点,进入sigmoid或者softmax的值是多少维度,通过sigmoid或者softmax维度不变,比如sigmoid或者softmax输入前的维度是(256,256,10),通过它们以后输出的维度也是(256,256,10)。 跟给每个数加1的道理一样,只不过对每个数进行了函数变化
在这里插入图片描述

在深度学习中,一般来说,无论是用sigmoid和softmax,对应的都是交叉熵损失函数,一个对应
二分类和多分类都叫交叉熵损失函数,一个是sigmoid交叉熵损失函数,一个是softmax交叉熵损失函数
用的是sigmoid,就用binary_cross_entropy
用的是softmax,就用softmax_cross_entropy

对数函数
在这里插入图片描述
sigmoid函数
只为了判断这个值为0或为1
在这里插入图片描述

binary_cross_entropy
在这里插入图片描述
上面的yi表示真实标签,p(yi)表示经过sigmoid后的预测值。
举例:

举个例子,假设一个2分类问题,假如一个batch包含两个样本,第一个样本是类别0,第二个样本是类别1,那么标签要制成一维,形如:
y=[0,1 ],
模型预测输出也为一维,形如p=[ 0.2,0.6 ] #sigmoid的输出,这里一定要预先用sigmod处理,将预测结果限定在0~1之间。
对应的损失函数值计算:
L=( - 0*log(0.2) - (1 - 0)*log(1- 0.2) - log(0.6) - (1 -1)*log(1 - 0.6) ) / 2 = ( -log(0.8) - log(0.6) ) / 2

极端情况:

L = - 0*log(0.5) - (1 - 0)*log(1- 0.5)=-ln0.5 = ln2

softmax函数公式
在这里插入图片描述

在这里插入图片描述
softmax计算步骤:
在这里插入图片描述
假设你的输入S=[1,2,3],那么经过softmax层后就会得到[0.09,0.24,0.67],这三个数字表示这个样本属于第1,2,3类的概率分别是0.09,0.24,0.67。

softmax_cross_entropy损失函数计算公式
在这里插入图片描述

举例:
**举例1,**softmax计算二分类问题中用了softmax的输出,每个样本输出维2,用sigmoid的时候才为1
假设一个2分类问题,假如一个batch包含两个样本,那么标签要制成二维,
形如y=[ [1, 0],[0, 1] ],
模型预测输出也为二维,形如p=[ [0.8,0.2],[0.4,0.6] ] #(softmax的输出)
那么对应的损失L=( -log(0.8) - log(0.6) ) / 2

**举例2,**多分类,和上面例子计算过程一样
如果3分类问题某个样本预测的logits经过softmax或者sigmoid之后是(0.1, 0.8, 0.1)(这是softmax的结果,sigmoid不保证分量和为1),而labels的one hot形式是(0, 1, 0),那么该样本贡献的损失就是-(0ln0.1+1ln0.8+0*ln0.1)/3,batch loss就是一个batch的平均值。可以看出,全预测对,且正确项置信度为1,则loss为0,预测错误损失相当大。

语义分割中的 loss function 最全面汇总 - 知乎
https://zhuanlan.zhihu.com/p/101773544

最优化是寻找能使得损失函数值最小化的参数W的过程
目的就是使损失函数最小
转换为更新参数W
方法就是求函数的梯度

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3.2.1 导数与链式求导

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.2.2 反向传播

反向传播就是利用链式求导法则进行反向计算

(1)案例:逻辑回归前向与反向传播简单计算
假设简单的模型为y =sigmoid(w1x1+w2x2+b), 我们在这里给几个随机的输入的值和权重,带入来计算一遍,其中在点x1,x2 = (-1 -2),目标值为1,假设给一个初始化w1,w2,b=(2, -3, -3),由于中间有sigmoid的计算过程,所以我们用代码来呈现刚才的过程。

 

我们可以看出来w1,w2,b是在这次更新是收到x的输入的影响梯度的计算的。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

 
 

一共包括1个文件夹,(datasets文件夹存放了两个h5数据文件)
两个文件
在这里插入图片描述
在这里插入图片描述

data.py

 

single_unit_nn

                

平台注册入口