IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> softmax(二):softmax交叉熵不是真正的目标函数 -> 正文阅读

[人工智能]softmax(二):softmax交叉熵不是真正的目标函数

最近一直在消化、吸收大神的输出,在这里主要把思路捋顺,试着增加自己的理解和扩展。
首先,上链接,还有我的膝盖,拜王峰大神,可以直接看大神的文字!
从最优化的角度看待Softmax损失函数
Softmax理解之Smooth程度控制

一、优化的目标函数

做分类的都知道,softmax交叉熵,是常用的分类损失函数,那么,它是怎么来的呢?
用CNN提取n维特征之后,我们想要拿这个n维特征,去预测,是狗,是猫,还是人?怎么预测呢,总不能直接拿n维特征吧,我们想要只想知道,是狗,是猫,还是人。为了解决这个问题,我们将n维特征经过一个线性变换,让cnn网络输出3分数,论文里面常叫做logit,来告诉我们,是猫多少分,是狗多少分,是人多少分。如果真实类别是狗,那么我们的目标函数希望,狗的分数,要比猫和人的分数都高,可以这么说,输出C个分数,时目标分数比最大的非目标分数更大:
l o s s = max ? ( max ? i ≠ y z i ? z y , 0 ) (1) loss = \max(\max_{i \neq y}{z_i} - z_y, 0)\tag{1} loss=max(i?=ymax?zi??zy?,0)(1)
其中, z y z_y zy?是我们的目标分数,即是狗的分数。当然,这个目标函数之前,还有一些其他的,可自己去看王峰大神的博客。
注意看,公式(1),每次都从非目标中挑出一个最大值参与目标函数,那么,也就是说,每次,最多只有一个正梯度(因为只有一个非目标分数)和一个负梯度(只有一个目标分数),那这优化起来也太慢了吧,于是,max的smooth版本就出来了。

二、目标函数的第一次smooth:LogSumExp

LogSumExp函数如下:
L S E = l o g ∑ i n e x p ( x i ) LSE = log \sum_{i}^nexp(x_i) LSE=login?exp(xi?)
二者的关系是:
L S E > = m a x LSE >= max LSE>=max
至于为啥,这个真的是非常数学的东西了,感兴趣的,可以自行去google,这里再次膜拜一下数学,学好数学,称霸天下!
用上LSE,就会发现,非目标分数的最大值,不管选择了谁,都和其他非目标分数扯上了关系,这样,其他非目标分数的分支,也会有梯度了。
smooth之后的目标函数如下:
l o s s l s e = max ? ( l o g ∑ i = 1 , i ≠ y C e z i ? z y , 0 ) loss_{lse} = \max(log \sum_{i=1,i \neq y}^Ce^{z_i} - z_y,0) losslse?=max(logi=1,i?=yC?ezi??zy?,0)

不懂之处:峰神说,使用LogSumExp函数相当于变相地加了一定的m???

三、目标函数的第二次smooth:softmax交叉熵

峰神说了,接着smooth,Relu函数 max ? ( x , 0 ) \max(x,0) max(x,0)也有一个smooth版本,即softplus函数, l o g ( 1 + e x ) log(1+e^x) log(1+ex),那么用这个函数,接着smooth
L s o f t m a x = l o g ( 1 + e l o g ( ∑ i = 1 , i ≠ y C e z i ) ? z y ) = l o g ( 1 + ∑ i = 1 , i ≠ y C e z i e z y ) = l o g ∑ i = 1 C e z i e z y = ? l o g e z y ∑ i = 1 C e z i \begin{aligned} L_{softmax} & = log(1 + e^{log (\sum_{i=1,i \neq y}^Ce^{z_i}) - z_y}) \\ &=log(1+ \frac{\sum_{i=1,i \neq y}^Ce^{z_i}}{e^{z_y}}) \\ &= log{\frac{\sum_{i=1}^Ce^{z_i}}{e^{z_y}}} \\ &= -log{\frac{e^{z_y}}{\sum_{i=1}^Ce^{z_i}}} \end{aligned} Lsoftmax??=log(1+elog(i=1,i?=yC?ezi?)?zy?)=log(1+ezy?i=1,i?=yC?ezi??)=logezy?i=1C?ezi??=?logi=1C?ezi?ezy???
这个就是我们熟知的softmax交叉熵。

所以我们常用的softmax,其实不是max的smooth版本,max函数输出的是一个最大值,而softmax更倾向的是argmax,类似[1,0,0]。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-05-12 16:27:40  更:2022-05-12 16:30:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:20:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码