目录

一、BP原理及求导

二、softmax及求导

一、BP

1、为什么沿梯度方向是上升最快方向

    根据泰勒公式对f(x)在x0处展开,得到f(x) ~ f(x0) + f'(x0)(x-x0), 故得到f(x) - f(x0) ~ f'(x0)(x-x0), 所以从x0出发,变化最快,即使f(x)-f(x0)最大,也就f'(x0)(x-x0),由于f'(x0)与(x-x0)均为向量(现在x0取的是一个数,如果放在多维坐标那么x0就是一个多维向量),由余弦定理f'(x0) 与(x-x0)方向相同时,点积最大,故梯度方向是上升最快方向。

2、什么是BP

梯度反向传播(back propagation)过程就是: 由前馈神经网络得到损失函数,然后根据损失函数后向地更新每一层的权重,目的就是让损失函数变小

3、BP的优势

  • 与从前往后进行求导相比,BP能够避开了路径被重复访问,它对于每一个路径只访问一次就能求顶点对所有下层节点的偏导值。
  • 能够自适应、自主学习。这是BP算法的根本以及其优势所在,BP算法根据预设的参数更新规则,不断地调整神经网络中的参数,以达到最符合期望的输出。

4、BP的不足

  • BP是基于梯度下降算法实现的,所以容易陷入局部最小而不是全局最小
  • 由于BP神经网络中的参数众多,每次都需要更新数量较多的阈值和权值,故会导致收敛速度过慢

二、softmax函数及求导

1、softmax函数

在Logistic regression二分类问题中,我们可以使用sigmoid函数将输入映射到区间中,从而得到属于某个类别的概率。将这个问题进行泛化,推广到多分类问题中,我们可以使用softmax函数,对输出的值归一化为概率值。

这里假设在进入softmax函数之前,已经有模型输出值,其中是要预测的类别数,模型可以是全连接网络的输出,其输出个数为,即输出为

所以对每个样本,它属于类别的概率为:

通过上式可以保证 ,即属于各个类别的概率和为1。

2、求导

对softmax函数进行求导,即求 


项的输出对第项输入的偏导。
代入softmax函数表达式,可以得到:

所以,当时:

时:

LOSS 求导

对一个样本来说,真实类标签分布与模型预测的类标签分布可以用交叉熵来表示:

最终,对所有的样本,我们有以下loss function:

其中是样本属于类别的概率,是模型对样本预测为属于类别的概率。

对单个样本来说,loss function对输入的导数为:

上面对求导结果已经算出:

时:

时:

所以,将求导结果代入上式

参考博客:

1、https://zhuanlan.zhihu.com/p/27223959

【机器学习】BP & softmax求导的更多相关文章

  1. Deep Learning基础--Softmax求导过程

    一.softmax函数 softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类! 假设我们有一个数组,V,Vi表示V中的第i个元素,那么这个 ...

  2. softmax求导、cross-entropy求导及label smoothing

    softmax求导 softmax层的输出为 其中,表示第L层第j个神经元的输入,表示第L层第j个神经元的输出,e表示自然常数. 现在求对的导数, 如果j=i,   1 如果ji, 2 cross-e ...

  3. 【机器学习基础】对 softmax 和 cross-entropy 求导

    目录 符号定义 对 softmax 求导 对 cross-entropy 求导 对 softmax 和 cross-entropy 一起求导 References 在论文中看到对 softmax 和 ...

  4. 前馈网络求导概论(一)·Softmax篇

    Softmax是啥? Hopfield网络的能量观点 1982年的Hopfiled网络首次将统计物理学的能量观点引入到神经网络中, 将神经网络的全局最小值求解,近似认为是求解热力学系统的能量最低点(最 ...

  5. softmax交叉熵损失函数求导

    来源:https://www.jianshu.com/p/c02a1fbffad6 简单易懂的softmax交叉熵损失函数求导 来写一个softmax求导的推导过程,不仅可以给自己理清思路,还可以造福 ...

  6. 关于 RNN 循环神经网络的反向传播求导

    关于 RNN 循环神经网络的反向传播求导 本文是对 RNN 循环神经网络中的每一个神经元进行反向传播求导的数学推导过程,下面还使用 PyTorch 对导数公式进行编程求证. RNN 神经网络架构 一个 ...

  7. cnn softmax regression bp求导

    内容来自ufldl,代码参考自tornadomeet的cnnCost.m 1.Forward Propagation convolvedFeatures = cnnConvolve(filterDim ...

  8. softmax分类器+cross entropy损失函数的求导

    softmax是logisitic regression在多酚类问题上的推广,\(W=[w_1,w_2,...,w_c]\)为各个类的权重因子,\(b\)为各类的门槛值.不要想象成超平面,否则很难理解 ...

  9. softmax 损失函数求导过程

    前言:softmax中的求导包含矩阵与向量的求导关系,记录的目的是为了回顾. 下图为利用softmax对样本进行k分类的问题,其损失函数的表达式为结构风险,第二项是模型结构的正则化项. 首先,每个qu ...

随机推荐

  1. 无法确定条件表达式的类型,因为“<null>”和“System.DateTime”之间没有隐式转换----解决办法

    例子:(报错了) public DateTime? time { get; set; } time = item.HospOutDate.HasValue ? DateTime.Parse(item. ...

  2. debian 9 开机启动

    由于某些软件并没有增加开启启动的服务,很多时候需要手工添加,一般我们都是推荐添加命令到 /etc/rc.local 文件,但是 Debian 9 默认不带 /etc/rc.local 文件,而 rc. ...

  3. 用kali执行arp攻击-----------使对方断网

    实现原理 其主要原理是局域网内的"攻击机"通过冒充同网络号下的"受害者主机"的物理地址(mac地址),通过欺骗网关,让网关原来应该发给"受害者主机&q ...

  4. MongoDB在Linux系统下的安装与启动

    Mongodb介绍 MongoDB是一个开源文档数据库,提供高性能,高可用性和自动扩展,官方文档:https://docs.mongodb.com/manual/introduction/ Mongo ...

  5. centos7下 svn的配置

    安装svn yum install subversion 查看安装版本 svnserve --version 创建svn版本库目录 mkdir -p /root/svn/test 创建svn版本库 s ...

  6. 【Python实战】使用Python连接Teradata数据库???未完成

    1.安装Python 方法详见:[Python 05]Python开发环境搭建 2.安装Teradata客户端ODBC驱动 安装包地址:TTU下载地址 (1)安装TeraGSS和tdicu(ODBC依 ...

  7. C#基础知识之关键字

    关键字是 C# 编译器预定义的保留字.这些关键字不能用作标识符,但是,如果您想使用这些关键字作为标识符,可以在关键字前面加上 @ 字符作为前缀.在 C# 中,有些关键字在代码的上下文中有特殊的意义,如 ...

  8. Java Api Consumer 连接启用Kerberos认证的Kafka

    java程序连接到一个需要Kerberos认证的kafka集群上,消费生产者生产的信息,kafka版本是2.10-0.10.0.1: Java程序以maven构建,(怎么构建maven工程,可去问下度 ...

  9. web框架开发-模板层

    你可能已经注意到我们在例子视图中返回文本的方式有点特别. 也就是说,HTML被直接硬编码在 Python代码之中. def current_datetime(request): now = datet ...

  10. day9-基础函数的学习(四)

    这几天一直赶着写写作业,博客的书写又落下了,要加油鸭,开写 今日份目录 1.内置函数 2.递归函数 开始今日份总结 1.内置函数 内置函数就是python内部包含的函数,总计有68种,不过有些事真的天 ...