softmax,softmax-loss,BP的解释

2023-05-16

本文转载自:http://freemind.pluskid.org/machine-learning/softmax-vs-softmax-loss-numerical-stability/ ,看完这个博客让我对softmax,softmax-loss以及BP算法有了更深的理解,以前BP只是知道链式求导,知道梯度回传,但是具体到哪些变量和哪些变量求导就有些模糊了,现在我特整理了下思路,以下大部分是链接的原文,附带自己的一些理解(用红色标出)


联想逻辑回归的重要公式就是,得到预测结果,然后再经过sigmoid转换成0到1的概率值,而在softmax中则通过取exponential的方式并进行归一化得到某个样本属于某类的概率。非负的意义不用说,就是避免正负值抵消。


逻辑回归的推导可以用最大似然或最小损失函数,本质是一样的,可以简单理解成加了一个负号,这里的y指的是真实类别。注意下softmax-loss可以看做是softmax和multinomial logistic loss两步,正如上述所写公式,把变量展开即softmax-loss。


原博客的重点在于介绍softmax-loss是分成两步还是一步到位比较好,而我这则重点说下BP。上面这个神经网络的图应该不陌生,这个公式也是在逻辑回归的核心(通过迭代得到w,然后在测试时按照上面这个公式计算类别概率)


这里第一个公式是损失函数对权重w求导,其实就是梯度,红色那部分可以看前面O是怎么算出来的,就知道其导数的形式非常简单,就是输入I。蓝色部分就是BP的核心,回传就是通过这个达到的,回传的东西就是损失函数对该层输出的导数,只有把这个往前回传,才能计算前面的梯度。所以回传的不是对权重的求导,对每层权重的求导的结果会保留在该层,等待权重更新时候使用。具体看上面最后一个公式。


这部分的求导:l(y,z)函数是log函数,log(x)函数求导是取1/x,后面的那个数是zy对zk的导数,当k=y时,那就是1,k不等于y时就是两个不同的常数求导,就是0。


这一部分就是把softmax-loss分成两步来做,第一个求导可以先找到最前面l(y,o)的公式,也是log函数,所以求导比较简单。第二个求导也是查看前面Oi的公式,分母取平方的那种求导。最后链式相乘的结果和原来合并算的结果一样。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

softmax,softmax-loss,BP的解释 的相关文章

  • R语言中的Softmax Regression建模(MNIST手写体识别和文档多分类应用)

    关于softmax regression的数学模型部分可以参考Stanford的中英文Wiki http ufldl stanford edu wiki index php Softmax E5 9B 9E E5 BD 92 softmax
  • 3D机器学习(6):交叉熵(cross entropy loss),一种收敛更快的损失函数

    1 交叉熵 xff08 cross entropy loss xff09 简介 熵 61 entropy 61 不确定性 61 惊讶的度量 越高的熵越低的信息度 xff0c 因此不确定性或者混乱性越高 xff0c 熵越高 数学定义 xff0
  • pytoch人工神经网络基础:最简单的分类(softmax回归+交叉熵分类)

    softmax回归分类原理 对于回归问题 xff0c 可以用模型预测值与真实值比较 xff0c 用均方误差这样的损失函数表示误差 xff0c 迭代使误差最小训练模型 那么分类问题是否可以用线性回归模型预测呢 最简单的方法就是用softmax
  • AM-Softmax

    论文 xff1a Additive Margin Softmax for Face Verification 0 摘要 AM Softmax xff0c additive margin softmax 人脸识别任务是一个度量学习任务 xff
  • softmax激活函数与softmax损失函数

    一 softmax 激活函数 在二分类任务中 xff0c 输出层使用的激活函数为 sigmoid xff0c 而对于多分类的情况 xff0c 就需要用到softmax 激活函数给每个类都分配一个概率 多分类的情况下 xff0c 神经网络的输
  • 关于A-Softmax损失函数的一些解释

    关于A Softmax损失函数的一些解释 关于A Softmax具体内容请参考论文 SphereFace Deep Hypersphere Embedding for Face Recognition by Weiyang Liu Yand
  • 【论文-损失函数】Learning with Average Top-k Loss

    基本信息 paper Learning with Average Top k Loss code pytorch 论文思路 该损失适用于在线难例挖掘 即在训练时选择前K个loss较大的样本进行back propagate bp xff0c
  • Softmax回归C++实现

    前言 Softmax回归模型的理论知识上一篇博文已经介绍 C 代码来源于一个开源项目 链接地址我忘了 哪天找到了再附上 对原代码改动不大 只是进行了一些扩充 实验环境 Visual Studio 2013 数据 数据来自http archi
  • TensorFlow在MNIST中的应用-Softmax回归分类

    参考 TensorFlow技术解析与实战 http wiki jikexueyuan com project tensorflow zh tutorials mnist beginners html http www jianshu com
  • 【AI面试】损失函数(Loss),定义、考虑因素,和怎么来的

    神经网络学习的方式 就是不断的试错 知道了错误 然后沿着错误的反方向 梯度方向 不断的优化 就能够不断的缩小与真实世界的差异 此时 如何评价正确答案与错误答案 错误的有多么的离谱 就需要一个评价指标 这时候 损失和损失函数就运用而生 开始之
  • Pytorch - 在 softmax 层之后选择最佳概率

    我有一个使用 Pytorch 0 4 0 的逻辑回归模型 其中我的输入是高维的 我的输出必须是标量 0 1 or 2 我使用线性层与 softmax 层相结合来返回n x 3张量 其中每列表示输入属于三个类别之一的概率 0 1 or 2 但
  • 三元组损失的softmax版本的梯度计算

    我一直在尝试在Caffe中实现softmax版本的三元组损失 描述于 霍弗和艾隆 使用三元组网络进行深度度量学习 ICLR 2015 我已经尝试过这个 但我发现很难计算梯度 因为指数中的 L2 不是平方的 有人可以帮我吗 使用现有的 caf
  • 如何在 Keras 中实现自适应损失?

    我正在尝试使用 Keras 来实现中完成的工作通用的自适应鲁棒损失函数 https arxiv org abs 1701 03077 作者提供了处理困难细节的张量流代码 我只是想在 Keras 中使用他的预构建函数 他的自定义损失函数正在学
  • 如何最好地处理图像分类中的“以上都不是”?

    这似乎是一个基本问题 你们中的一些人必须对此有自己的看法 我有一个用 CNTK 实现的图像分类器 有 48 个类 如果图像与 48 个类别中的任何一个都不能很好地匹配 那么我希望能够得出结论 它不属于这 48 个图像类型 我最初的想法很简单
  • 我应该如何解释稀疏_分类_交叉熵函数的输出?

    作为输入 a 具有浮点数 1 0 或 0 0 当我尝试用我的模型和sparse categorical crossentropy损失我得到类似的东西 0 4846592 0 5153408 我如何知道它预测什么类别 您看到的这些数字是给定输
  • CS231n:如何计算Softmax损失函数的梯度?

    我正在观看斯坦福 CS231 用于视觉识别的卷积神经网络的一些视频 但不太明白如何使用计算 softmax 损失函数的解析梯度numpy From 这个堆栈交换 https math stackexchange com questions
  • 如何有条件地为张量赋值[屏蔽损失函数]?

    我想创建一个 L2 损失函数 忽略标签值为 0 的值 gt 像素 张量batch 1 包含标签 同时output是净输出的张量 两者的形状均为 None 300 300 1 labels mask tf identity batch 1 l
  • 全卷积网络的每像素 softmax

    我正在尝试实现类似全卷积网络的东西 其中最后一个卷积层使用大小为 1x1 的滤波器并输出 分数 张量 分数张量的形状为 Batch height width num classes 我的问题是 张量流中的什么函数可以对每个像素应用 soft
  • 计算网络两个输出之间的 cosine_proximity 损失

    我正在使用 Keras 2 0 2 功能 API Tensorflow 1 0 1 来实现一个接受多个输入并产生两个输出的网络a and b 我需要使用 cosine proximity 损失来训练网络 这样b是标签a 我该怎么做呢 在这里
  • 使用 CNN 和 pytorch 计算每个类别的准确度

    我可以使用此代码计算每个时期后的准确性 但是 我想最后计算每个班级的准确性 我怎样才能做到这一点 我有两个文件夹 train 和 val 每个文件夹有 7 个不同类别的 7 个文件夹 train 文件夹用于训练 否则 val 文件夹用于测试

随机推荐