梯度下降法与反向传播

梯度下降法与反向传播

主要内容:

梯度下降法

  1. 最优化
  2. 梯度下降

反向传播

  1. 梯度与偏导
  2. 链式法则
  3. 直观理解
  4. Sigmoid 例子

1. 梯度下降(Gradient descent)

初始权重不要都置为0,可用高斯分布。 随机初始化的目的是使对称失效。如果所有权重初始化为相同初始值,那么所有的隐藏层单元最终会得到与输入值相关的、相同的函数。

import numpy as np
W = np.random.randn(m,n) * 0.001 # 正态分布随机数

在多维变量函数中,函数在某一点的切线的斜率(存在多个,如三维中所有切线组成一个切面)就是方向导数;梯度是一个矢量,其方向上的方向导数最大,其大小正好就是此最大方向导数。

数值梯度:由导数的定义来求解梯度,再迭代更新。特点是不容易出错,但是计算复杂,速度慢。

grad=f(x+h)f(x)h

解析梯度:由损失函数计算对应的偏导解析式,再由解析式迭代计算梯度。 特点是 计算速度很快,但是 容易出错
fx

梯度下降迭代

# 很多神经网络库的核心迭代代码
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)

链式法则:若函数 u=ψ(t) v=ϕ(t) 在点 t 可导, z=f(u,v) ,有

zt=zuut+zvvt

Sigmoid 函数
f(x)=11+ex

导数
f(x)=f(x)(1f(x))

2.1 神经网络推导

前向传播

NN model

如图所示,是一个神经网络模型,每个圆圈代表一个神经元,标上 “ +1 ” 的圆圈是偏置点(bias)。 nl 表示神经网络的层数,此图中 nl=3 ,将第 l 层记为 Ll ,有 L1 为输入层(input layer),

  • 5
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值