博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Softmax函数
阅读量:4502 次
发布时间:2019-06-08

本文共 1540 字,大约阅读时间需要 5 分钟。

  • 相关概念:

    max函数定义就是在选取最大的值.这个最大值函数只能选择最大值
    如果我想要一个能够大概率选择最大值,还能够小概率选择小值的函数.这就要用到softmax函数
    softmax函数的定义:或称为归一化指数函数,是逻辑函数的推广.能够将一个含有任意实数的k维向量z压缩到另一个k维实向量\(\sigma (z)\)中,使得每个元素都在(0,1)之间,并且和为1.\[\sigma (z)_{j}=\frac{e^{z_{j}}}{\sum_{k=1}^{K} e^{z_{k}}}, j=1,2,...K\]

  • 实际应用:
    在神经网络中利用softmax函数来进行反向传播:神经网络的正向传播计算的分数S1,和按照正确标注计算的分数S2之间的差距,计算Loss,才能应用反向传播 \[L_{i}=-log(\frac{e^{f_{y_{i}}}}{\sum_{j} e^{j}})\]
    在优化loss过程中,我们要通过梯度下降,每次优化一个step大小的梯度,这个时候我们就要求Loss对每个权重矩阵的偏导,然后应用链式法则。那么这个过程的第一步,就是求Loss对score的偏导.score \(y_{i}\),先定义\(P(y_{i})\):\[P(y_{i})=\frac{e^{f_{y_{i}}}}{\sum_{j} e^{j}}\] loss 对score的偏导:
    \[\frac{\partial L_{i}}{\partial f_{yi}}=- ln (\frac{e^{f_{y_{i}}}}{\sum _{j} e^{j}})^{'}\]
    \[=-1 *\frac{\sum_{j} e^{j}}{e^{f_{y_{i}}}}* (\frac{e^{f_{y_{i}}}}{\sum_{j}e^{j}})^{'}\]
    \[=-1 *\frac{\sum_{j} e^{j}}{e^{f_{y_{i}}}}*(1-\frac{\sum_{j \neq f_{yi}} e^{j}}{\sum_{j}e^{j}})^{'}\]
    \[=-1 *\frac{\sum_{j} e^{j}}{e^{f_{y_{i}}}}*-1*\sum_{j \neq f_{yi}} e^{j}*-1*\frac{1}{(\sum_{j} e^{j})^{2}}*(\sum_{j}e^{j})^{'}\]
    \[=-1 *\frac{\sum_{j} e^{j}}{e^{f_{y_{i}}}}*-1*\sum_{j \neq f_{yi}} e^{j}*-1*\frac{1}{(\sum_{j} e^{j})^{2}}*e^{f_{y_{i}}}\]
    \[=-(1-P_{f_{y_{i}}})=P_{f_{y_{i}}}-1\]
    可以看得出求导结果的形式非常清晰明了.求解损失函数的梯度,只需要计算概率向量在真正结果的那一个维度减一即可.
  • 举例分析:

    假设我们得到的某个训练样本的向量分数为\([2,3,5]\),那么所对应的概率是\([\frac{e^2}{e^{2}+e^{3}+e^{5}},\frac{e^3}{e^{2}+e^{3}+e^{5}},\frac{e^5}{e^{2}+e^{3}+e^{5}}]\)=\([0.042,0.114,0.844]\).如果正确的分类是第三个的话,计算的偏导为\[[0.042,0.114,0.844-1]=[0.042,0.114,-0.156]\]根据这个结果进行反向传播的计算.

  • 参考文献:

    0.
    1.
    2.

转载于:https://www.cnblogs.com/GeekDanny/p/9667985.html

你可能感兴趣的文章
Css Html 大风车
查看>>
Oracle数据库连接时“The Network Adapter could not establish the connection”“网络适配器无法建立连接问题”...
查看>>
awk用法
查看>>
关于近似装箱问题的思考。
查看>>
Java父类对象调用子类实体:方法重写与动态调用
查看>>
Prime 算法的简述
查看>>
开发工具 快捷键
查看>>
开发过程存在的问题
查看>>
如何写错误日志
查看>>
PTA 1067 Sort with Swap(0, i) (25 分)(思维)
查看>>
define和typedef的区别
查看>>
c/c++ 继承与多态 容器与继承3
查看>>
WPF 控件
查看>>
计算机硬件基础以及编程的含义
查看>>
[UE4]Reliable,可靠性
查看>>
django异常:当设置DEBUG = False 时导致500错误的解决方案
查看>>
Git 怎样是自己fork的项目与原作者同步
查看>>
ftp如何使用命令上传文件
查看>>
「C语言」文件的概念与简单数据流的读写函数
查看>>
exp_euler两种形式int,void(扩展欧几里得算法)----可求最大公约数,二元一次方程的解...
查看>>