一、变量定义

  此文是我学习BFTT算法的笔记,参考了雷明《机器学习与应用》中的BFTT算法推导,将该本书若干个推导串联起来,下列所有公式都是结合书和资料,手动在PPT上码的,很费时间,但是也加深了自己的理解。

                

                 

二、几个预备知识

  (1) 乘法⊙为向量对应元素相乘

  (2) 复合函数求导:

    a.   假设有函数,假设有f(y),如果把x看成常数,y看成W的函数,则有:

      

      b.   如果将将W看成常数,y将看成x的函数,则有:

      

          c. 如果有向量到向量的映射:

      

      对于函数 f(y), 有

      

三、完整的算法推导

  首先,只有一个循环层和一个输出层的循环神经网络正向传播时的变化为:  

     

  

  损失函数的定义和全连接网络、卷积网络不同。全连接网络和卷积网络的各个训练样本之间没有关系,损失函数是所有样本损失的均值。循环神经网络的单个样本是一个时间序列,每个时刻都有损失,T 为时间序列的长度,因此损失函数定义为沿着时间轴累加:

  

  上式中的 Lt 为 t 时刻的损失函数,定义为:

  

  循环神经网络的反向传播时基于时间轴进行的,我们需要计算所有时刻的总损失函数对所有参数的梯度,然后用梯度下降法进行更新。另外需要注意的事循环神经网络在各个时刻的权重,偏置都是相同。

  由式(3)结合中复合函数求导,首先计算输出层偏置项的梯度:

     

  由式(3)结合复合函数求导,如果选择 softmax 作为输出层的激活函数,交叉熵作为损失函数,上面的梯度为:

     

  由式(3)结合复合函数求导,对权重矩阵的梯度为:

     

  下面考虑循环层。由(1)式+(2)式,得到:

  

  由推导3 + 式(1)的结论,有:

   

   由此建立了 与  之间的递推关系。定义误差项为:

  在整个损失函数 L 中,比 t 更早的时刻1,2,…,t - 1 的损失函数不含有 u因此与它无关; Lt 由  ut  决定,和它直接相关;比 t 晚的时刻的  ut+1  ,ut+2,…,  ut+n 都与  ut  有关。因此有:

 

   而

   

  把 式15 代入 式14)得到:

  

  由此建立了误差项沿时间轴的递推公式。可以类比前馈型神经网络,在前馈型神经网络中,通过后面的误差项计算本层误差项。在循环神经网络中,通过后一个时刻的误差项来计算当前时刻的误差项。递推的终点是最后一个时刻的误差:

  

  根据误差项可以计算出损失函数对权重的偏置的梯度。整个损失函数是 u ,u2,…,  uT  的函数,而它们都是权重和偏置的函数。根据链式法则,结合式10、12,有:

 

  类似地:

  对偏置项的梯度为:

  

四、BFTT算法流程

  计算出对所有权重和偏置的梯度之后,由此可以得到BPTT算法的流程:

  循环,对 t = 1,2,…,T

    对(xt ,yt)进行正向传播

  结束循环

  计算出输出层权重和偏置的梯度

  用梯度下降法更新输出层权重和偏置的值

  循环,反向传播,对 t = T,…,2 , 1

    计算误差项 δt

    根据误差项计算循环层权重和偏置的梯度

    用梯度下降法更新循环层权重和偏置的值

  结束循环

 

循环神经网络中BFTT的公式推导的更多相关文章

  1. Recurrent Neural Network系列1--RNN(循环神经网络)概述

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...

  2. 深度学习之循环神经网络(RNN)

    循环神经网络(Recurrent Neural Network,RNN)是一类具有短期记忆能力的神经网络,适合用于处理视频.语音.文本等与时序相关的问题.在循环神经网络中,神经元不但可以接收其他神经元 ...

  3. 循环神经网络之LSTM和GRU

    看了一些LSTM的博客,都推荐看colah写的博客<Understanding LSTM Networks> 来学习LSTM,我也找来看了,写得还是比较好懂的,它把LSTM的工作流程从输入 ...

  4. 循环神经网络(Recurrent Neural Network,RNN)

    为什么使用序列模型(sequence model)?标准的全连接神经网络(fully connected neural network)处理序列会有两个问题:1)全连接神经网络输入层和输出层长度固定, ...

  5. Recurrent Neural Networks(RNN) 循环神经网络初探

    1. 针对机器学习/深度神经网络“记忆能力”的讨论 0x1:数据规律的本质是能代表此类数据的通用模式 - 数据挖掘的本质是在进行模式提取 数据的本质是存储信息的介质,而模式(pattern)是信息的一 ...

  6. TensorFlow——循环神经网络基本结构

    1.导入依赖包,初始化一些常量 import collections import numpy as np import tensorflow as tf TRAIN_DATA = "./d ...

  7. TensorFlow学习笔记(六)循环神经网络

    一.循环神经网络简介 循环神经网络的主要用途是处理和预测序列数据.循环神经网络刻画了一个序列当前的输出与之前信息的关系.从网络结构上,循环神经网络会记忆之前的信息,并利用之前的信息影响后面节点的输出. ...

  8. TensorFlow框架(6)之RNN循环神经网络详解

    1. RNN循环神经网络 1.1 结构 循环神经网络(recurrent neural network,RNN)源自于1982年由Saratha Sathasivam 提出的霍普菲尔德网络.RNN的主 ...

  9. 从网络架构方面简析循环神经网络RNN

    一.前言 1.1 诞生原因 在普通的前馈神经网络(如多层感知机MLP,卷积神经网络CNN)中,每次的输入都是独立的,即网络的输出依赖且仅依赖于当前输入,与过去一段时间内网络的输出无关.但是在现实生活中 ...

随机推荐

  1. APP安全之代码混淆防止反编译查看真实的头文件函数声明

    现在有的公司对自己的爱屁屁(APP)安全上有重视,所以本篇讲一下代码混淆,即使别人反编译出来,也看不出来头文件的信息. 上菜: 1.首先安装class-dump,下载地址:http://steveny ...

  2. 使用CocoaPods卡在了"pod setup"界面的解决办法

      http://blog.csdn.net/samoy/article/details/51956799   有时候,我们在执行pod install或pod search命令时,会在终端偶现卡在’ ...

  3. 微软人工智能公开课 https://mva.microsoft.com/colleges/microsoftai#!jobf=Developer

    https://mva.microsoft.com/colleges/microsoftai#!jobf=Developer

  4. MySQL 时间函数加减计算

    一.MySQL 获得当前日期时间 函数 1.1 获得当前日期 + 时间(date + time) 函数:now() mysql> select now();+———————+| now() |+ ...

  5. zabbix结合grafana

    一.下载grafana 下载地址: http://docs.grafana.org/installation/rpm/ https://s3-us-west-2.amazonaws.com/grafa ...

  6. Fix: The account is not authorized to log in from this station

    If you have more the one computers running Windows, then its possible to connect them using HomeGrou ...

  7. Luogu 2000 拯救世界

    从胡小兔的博客那里过来的,简单记一下生成函数. 生成函数 数列$\{1, 1, 1, 1, \cdots\}$的生成函数是$f(x) = 1 + x + x^2 + x^3 + \cdots$,根据等 ...

  8. jquery页面初始化控件时间

    this.InitControlTime = function () { if ($("#txt_Id_").val() == "") { var today ...

  9. Spring Boot☞ 配置文件详解:自定义属性、随机数、多环境配置等

    自定义属性与加载 我们在使用Spring Boot的时候,通常也需要定义一些自己使用的属性,我们可以如下方式直接定义: application-dev.yml com.didispace.blog: ...

  10. cookie用法小结 cookie.setPath 跨域共享

    1. JSP中Cookie的读写 Cookie的本质是一个键值对,当浏览器访问web服务器的时候写入在客户端机器上,里面记录一些信息.Cookie还有一些附加信息,比如域名.有效时间.注释等等. 下面 ...