前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >反向传播( backpropagation ),可以这样直观理解!

反向传播( backpropagation ),可以这样直观理解!

作者头像
double
发布2018-07-25 17:46:08
8480
发布2018-07-25 17:46:08
举报
文章被收录于专栏:算法channel算法channel

0 回顾

本系列是 斯坦福大学自然语言处理-cs224课程的笔记4:神经网络的反向传播的直观解释,前 4 篇笔记如下:深度学习和自然语言处理:介绍;斯坦福大学NLP-cs224课程笔记2:词向量;一文了解Word2vec之Skip-Gram训练网络的3种技术;TensorFlow 实战 3层网络求解嵌入词向量,附代码详解

接下来,这门课程讲解的是 TensorFlow 的相关知识,鉴于之前对 TensorFlow的推送,已经基本覆盖了本课程所讲,不再重复,对于想了解这部分的小伙伴可以参考如下,在公众号后台回复: dl,可以找到详细、快速入门 TF 的PPT,回复 12 找到 TF 的已推笔记。

提到神经网络,不会不说反向传播 ( backpropagation ),正是靠着 BP 才调整并找到了合适的节点间的权重参数,既然这么重要,再好好理解下 BP ,下面借鉴本课程中推荐的关于 BP 的阅读材料,在这里整理成笔记,分享给大家。

1 BP 简介

BP 是一种通过递归应用l链式法则计算梯度的方法。 对这个过程的理解对于我们高效地开发,设计,调试神经网络是直观重要的。

BP 问题本质上是研究 f 在 x 处的偏导。我们之所以对这个问题感兴趣是因为某个对应于具体问题的神经网络,f 对应着 损失函数 L , 输入 x 包括训练数据和神经网络的权重参数。

例如,损失函数可能是 SVM 损失函数,输入的训练数据 (xi ,yi),i=1…N ,权重参数分别为 W,b. 记住,就像是在机器学习中,我们通常认为训练数据是给定且固定的,权重参数认为是我们可以改变被我们控制的。因此,尽管我们能容易地利用反向传播计算在每一个输入样本点 xi 的梯度,但是,实际上我们只计算在参数W,b 的梯度,进一步去更新参数W,b .

2 梯度简介

从简单谈起,考虑函数 f (x,y)=xy. 求各自的偏导过程如下:

这个求偏导的过程告诉我们, 一个函数对于某个变量的变化率等于如下极限:

如果 x=4, y=−3 则 f(x,y) = −12 ,因此,∂f / ∂x = −3. 这个式子告诉我们,假如我们增加 x 一点,那么整个表达式将会减少这个量的 3 倍。

值得一提的是, ∇f 这个标记的含义是偏微分的向量,因此,我们得到: ∇f=[∂f / ∂x,∂f / ∂y]=[ y,x ]. 尽管梯度从技术角度讲是一个向量,但是我们经常称为 对 x 的梯度,而不是更准确的术语:对 x 的偏微分。

3 链式法则

让我们考虑一个稍显复杂的表达式,f (x,y,z)=(x+y) z. 为了更直观地理解反向传播,我们将这个表达式拆成两部分,将 (x+y) 标记为 q , 因此 f=qz. 更多地,我们知道如何计算这两个表达式的偏导:

∂f / ∂q = z

∂f / ∂z = q

因为 q = (x+y) ,所以,

q / ∂x=1

q / ∂y=1

链式法则 ( chain rule ) 告诉我们正确的链接这些梯度表达式的方法是通过相乘来做,因此,

f/ ∂x=∂f /∂q*q /∂x

编码实现:

代码语言:javascript
复制
# set some inputs

x = -2;

y = 5;

z = -4

# perform the forward pass

q = x + y # q becomes 3

f = q * z # f becomes -12# perform the backward pass (backpropagation) in reverse order:# first backprop through f = q * z

dfdz = q # df/dz = q, so gradient on z becomes 3

dfdq = z # df/dq = z, so gradient on q becomes -4# now backprop through q = x + y

dfdx = 1.0 * dfdq # dq/dx = 1. And the multiplication here is the chain rule!

dfdy = 1.0 * dfdq # dq/dy = 1

将这个过程可视化的图形显示如下:

前向传播 ( forward pass ) 计算开始于输入端,结束到输出端,图中绿色表示,输入分别为: x = -2, y = 5, z = -4 , 因此, q = 3, q 乘以 -4 后 f 得到 -12 .

反向传播( backward pass ) 却开始于输出端,然后递归地应用链式规则计算梯度,图中红颜色所示,f 增加 1,表现在 q 上就是使得 它变小 4, 使得 z 增加 3,q 节点还没有传播到输入端,所以 q 继续向后传播影响到 x, y, 根据 q 对 x 和 y 的梯度公式, 得到 x 变化 -4, y 也会变化 -4.

一个复杂点的例子:

将上个式子链式分解为如下:

可视化正向传播,反向传播,规则和上个例子一致,绿色代表输入值,红色代表改变量。大家不妨详细分析一下!

相关链接

[1] Derivatives, Backpropagation, and Vectorization

http://cs231n.github.io/optimization-2/

点击以下标题查看相关内容:

  • 深度学习|大师之作,必是精品
  • 免费送6本精选的算法,机器学习,深度学习的书
  • 机器学习、深度学习干货分享
  • 自然语言处理|语言模型介绍
  • 自然语言处理之词To词向量
  • 一文了解自然语言处理的每个范畴用到的核心技术,难点和热点(1)
  • NLP入门:CNN,RNN应用文本分类,个性化搜索,苹果和乔布斯关系抽取(2)
  • 下一代信息服务新风口:以自然语言为基本输入方式的问答系统综述(附两篇论文)
  • 一文梳理NLP之机器翻译和自动摘要的发展现状
  • 斯坦福大学NLP课程笔记系列1:深度学习应用于NLP介绍
  • TensorFlow 实战 3层网络求解嵌入词向量,附代码详解
  • 1个例子解释 隐马尔科夫模型(HMM) 的 5 个基本要素

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员郭震zhenguo 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0 回顾
  • 1 BP 简介
  • 2 梯度简介
  • 3 链式法则
  • 相关链接
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档