梯度下降法与反向传播
来源:互联网 发布:提升关键词排名软件 编辑:程序博客网 时间:2024/06/06 12:43
梯度下降法与反向传播
主要内容:
梯度下降法
- 最优化
- 梯度下降
反向传播
- 梯度与偏导
- 链式法则
- 直观理解
- Sigmoid 例子
1. 梯度下降(Gradient descent)
初始权重不要都置为0,可用高斯分布。 随机初始化的目的是使对称失效。如果所有权重初始化为相同初始值,那么所有的隐藏层单元最终会得到与输入值相关的、相同的函数。
import numpy as npW = np.random.randn(m,n) * 0.001 # 正态分布随机数
在多维变量函数中,函数在某一点的切线的斜率(存在多个,如三维中所有切线组成一个切面)就是方向导数;梯度是一个矢量,其方向上的方向导数最大,其大小正好就是此最大方向导数。
数值梯度:由导数的定义来求解梯度,再迭代更新。特点是不容易出错,但是计算复杂,速度慢。
解析梯度:由损失函数计算对应的偏导解析式,再由解析式迭代计算梯度。 特点是计算速度很快,但是容易出错。
梯度下降迭代:
# 很多神经网络库的核心迭代代码while True: weights_grad = evaluate_gradient(loss_fun,data,weights) weights += - step_size * weights_grad # 梯度下降更新权重参数
梯度检查\检测:可以选取部分样例先计算解析梯度和数值梯度,对比较结果和校正,然后采取解析梯度大胆进行解析计算,这个过程就叫做梯度检查。
Mini-Bacth: 对整个训练数据集的样本都算一篇损失函数,以完成参数的迭代是一件非常耗时的事情。通常的做法是采样出一个子集在其上计算梯度。
while True: data_batch = sample_training_data(data,256) # 抽样256个样本作为一个batch weights_grad = evaluate_gradient(loss_fun,data_batch,weights) weights += - step_size * weights_grad # 更新权重参数
2. 反向传播(Backpropagation)
链式法则:若函数
Sigmoid 函数:
其导数:
2.1 神经网络推导
前向传播
如图所示,是一个神经网络模型,每个圆圈代表一个神经元,标上 “
神经网络的训练参数为
我们用
更一般的有
用
神经网络用
这里如果将
则上面的推导可以简化为
更一般的,有
上面的计算步骤叫做神经网络的前向传播 。
反向传播
设有一个包含
那么整体的代价函数为:
上面的
权重衰减参数
我们的目标是针对参数
梯度下降法 中每次迭代都按照如下公式对
其中
未完待续。。。。
- 梯度下降法与反向传播
- 梯度下降法与反向传播
- 梯度下降与反向传播详解
- 梯度下降和反向传播
- 深度学习第三次课-梯度下降与反向传播
- 神经网络之梯度下降与反向传播(上)
- 神经网络之梯度下降与反向传播(下)
- 梯度下降法和误差反向传播推导
- 神经网络之梯度下降法和反向传播BP
- 【深度学习】梯度下降和反向传播
- 神经网络——梯度下降&反向传播
- 三、梯度下降与反向传播(含过程推导及证明)
- Python神经网络代码实现流程(三):反向传播与梯度下降
- 我来介绍一下"反向传播学习算法"和"梯度下降法"
- 梯度下降法和反向传导法
- 梯度向量与梯度下降法
- 最小二乘法与梯度下降法
- 最小二乘法与梯度下降法
- USB入门系列总结
- Map拷贝 关于对象深拷贝 浅拷贝的问题
- redis学习(五)——Set数据类型
- 软考之计算机硬件
- 正则表达式30分钟入门教程
- 梯度下降法与反向传播
- hdu 2830 Matrix Swapping II
- Oracle:数据库对象(二)
- 后端接口的幂等性
- spring源码分析-配置文件加载过程
- 数据库SQL的安全性控制
- redis学习(六)——Sorted Set数据类型
- 记录使用svn的过程
- 死锁