栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Week2 Back Propagation and Optimization in Deep Learning

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Week2 Back Propagation and Optimization in Deep Learning

一、一些基础基础知识回顾

1、求导法则

2、链式法则(本质上就是复合函数求导)

3、雅可比矩阵(Jacobian matrix) 

给定一组函数向量求雅克比数组:

 eg:

 二、梯度下降算法(Gradient descent)

1、凸函数

(1)定义

(2)性质

 2、 梯度下降

(1)算法

当f(x)是凸函数的时候,可以确保取得全局最小,当f(x)是非凸函数时候,f(x)取的可能的是局部最优。

(2) 梯度下降如何选择步长

既然梯度下降每次迭代都要走一定的步长,那这个步长要怎么选择呢?
一种简单的方式是把步长固定,每次都移动常数距离,(k = 1 , 2 , 3 , . .) 但是这样存在问题,如果t 太大,梯度下降可能会发散而不收敛;如果t 太小,梯度下降就会收敛很慢。只有t 选得“刚好”时,才能兼顾收敛性和收敛速度。另一种方法可以自适应地调整步长——回溯线性搜索

(3)梯度下降算法的优缺点

优点

  • 方法简单,每次迭代都很快;
  • 对于良态的,强凸问题有很快的收敛速度。

缺点

  • 由于许多问题是非强凸或良态的,因此梯度下降往往需要很多次迭代,收敛速度很慢;
  • 不能应对不可微的函数。
三、随机梯度下降算法(Stochastic gradient descent-SGD)

(1)算法

 (2)SGD如何选择步长

通常SGD使用递减的步长,比如。如果使用固定步长,则在接近最优点时会很难继续收敛。

(3)平均误差

我们需要最小化平均误差:

但是计算全梯度最小平均误差开销太大, 所以采用计算样本梯度方法来对梯度估计,样本最小分支mini-batch的选取:

 

(4)SGD在大规模机器学习中的应用

  • 在许多ML问题中,我们往往不需要优化到很高的精度,因此固定步长常常应用于ML中
  • 一个trick是在整个数据集上运行SGD之前,先在一小部分上进行训练,从而选取合适的步长。
  • 动量(mometum),自适应步长等许多SGD的变体都是实践中常用的方法(如Adagrad Adam等)
  • SGD尤其流行于大规模、连续的非凸优化问题中
四、后向传播(Back propagation) 1、定义一些参数

​

编辑

对应网络图:

 对应的输入矩阵、输出值,第一层和第二层的权重矩阵和:

2、我们先进行一遍正向传播

那么我们可以得到第一层的两个输出值: 

 计算最值的输出值:

那么最终的损失为 ,与0.5还有很大差距,下面我们将用反向传播技术去修正权重w和偏差b,使得损失最小。

3、反向传播

(1)首先我们有如下


(2)我们需要对损失函数C和权重w求导:


 

 同理我们有:

 

(3)损失函数对权重的改变率

  • 不难发现,当上一层激活输出接近0的时候,无论返回的误差有多大, 的改变都很小,这也就解释了为什么神经元饱和不利于训练。
  • 从上面的推导我们不难发现,当输入神经元没有被激活,或者输出神经元处于饱和状态,权重和偏置会学习的非常慢,这不是我们想要的效果。这也说明了为什么我们平时总是说激活函数的选择非常重要。

 (4)SGD用到反向传播中流程图:

五、深度学习遇见的挑战

 1、如何最小化损失函数:

 2、当我们处理一个一个非常复杂复杂的目标函数

  • 高度非线性和非凸函数
  •  损失面非常复杂
  •  许多局部最小值点,但鞍点的数量甚至成倍增加更多的

3、需要高效的优化器来解决

  •  SGD with momentum, Adagrad, Adadelta, RMSProp, Adam, and Nadam 是TF内置的优化函数。.

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1005409.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号