0语言模型-N-Gram
语言模型就是给定句子前面部分,预测后面缺失部分
eg.我昨天上学迟到了,老师批评了____。
N-Gram模型: ,对一句话切词 我 昨天 上学 迟到 了 ,老师 批评 了 ____。
2-N-Gram 会在语料库中找 了 后面最可能的词;
3-N-Gram 会在预料库中找 批评了 后面最可能的词;
4-N-Gram 的内存耗费就非常巨大了(语料库中保存所有的四个词的预料组合)。
 
 
1.1单向循环神经网络
一个单隐层结构示意图:
参数:输入到隐层的权重U、隐层到输出的权重V,自身递归的权重W
循环层输出:
输出层(全连接)
 
 
1.2双向循环神经网络
单向循环网络是根据前文猜测空白词语;双向是根据前后文一起预测空白词语。
eg 我的手机坏了,我打算____一部新手机。
双向卷积神经网络的隐藏层要保存两个值,一个A参与正向计算,另一个值A'参与反向计算。
最终输出加和。
注:同向权重共享,异向权重不共享!
规范格式:
 
 
1.3深度循环网络
堆叠多个隐层,示意图如下:
  第i个隐藏层计算:
 
2训练BPTT
同bp的训练步骤
  
2.1 前向计算:
向量形式:
 
 
2.2 反向计算:分两个方向考虑,沿时间反向传播(与W有关)传递到上一层网络(与U有关)
2.2.1第一个方向,沿时间传递一个时刻:同bp原理借用netj传导
又t时刻和t-1时刻netj的关系:
因此梯度链
上式第一项:
带入求得
所以最终梯度计算得:
 
2.2.2第二个方向:同bp
由l层和l-1层的netj关系:
因此梯度链
 
所以最终梯度计算得: 
 
2.3计算权重矩阵W
由nett计算公式:
求t时刻w的梯度:
所以 t时刻W的梯度为: 
最终 各个时刻W梯度之和:
 
2.4计算权重U:
同理W,求t时刻u的梯度: 
最终 各个时刻U梯度之和: 
 
 
 
3梯度爆炸和消失问题
由于RNN在训练过程中容易发生梯度爆炸和消失问题,所以不适合处理较长序列。
梯度爆炸问题:设置阈值,直接截取;
梯度消失问题:1合理初始化权重,躲避梯度消失区域;
                       2用relu代替tanh和sigmoid作为激活函数;
                       3使用GRU或者LSTM结构。
 
 
4工程应用:
1 one-hot编码:建立一个包含所有词汇的字典,每个词都是N维的二进制向量,排列在第几个就第几位为1,其余0;
缺点:得到高纬并且稀疏的向量
 
2softmax:可以得到输出概率
 
 
3优化函数:soft max层对应交叉熵代替均方误差MSE,研究证明更make sense
 
 
 
 
 
 
参考:网络博客

循环神经网络RNN公式推导走读的更多相关文章

  1. 循环神经网络(RNN, Recurrent Neural Networks)介绍(转载)

    循环神经网络(RNN, Recurrent Neural Networks)介绍    这篇文章很多内容是参考:http://www.wildml.com/2015/09/recurrent-neur ...

  2. 通过keras例子理解LSTM 循环神经网络(RNN)

    博文的翻译和实践: Understanding Stateful LSTM Recurrent Neural Networks in Python with Keras 正文 一个强大而流行的循环神经 ...

  3. 循环神经网络RNN及LSTM

    一.循环神经网络RNN RNN综述 https://juejin.im/entry/5b97e36cf265da0aa81be239 RNN中为什么要采用tanh而不是ReLu作为激活函数?  htt ...

  4. 深度学习之循环神经网络RNN概述,双向LSTM实现字符识别

    深度学习之循环神经网络RNN概述,双向LSTM实现字符识别 2. RNN概述 Recurrent Neural Network - 循环神经网络,最早出现在20世纪80年代,主要是用于时序数据的预测和 ...

  5. 循环神经网络RNN模型和长短时记忆系统LSTM

    传统DNN或者CNN无法对时间序列上的变化进行建模,即当前的预测只跟当前的输入样本相关,无法建立在时间或者先后顺序上出现在当前样本之前或者之后的样本之间的联系.实际的很多场景中,样本出现的时间顺序非常 ...

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

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

  7. 循环神经网络(RNN, Recurrent Neural Networks)介绍

    原文地址: http://blog.csdn.net/heyongluoyao8/article/details/48636251# 循环神经网络(RNN, Recurrent Neural Netw ...

  8. 用纯Python实现循环神经网络RNN向前传播过程(吴恩达DeepLearning.ai作业)

    Google TensorFlow程序员点赞的文章!   前言 目录: - 向量表示以及它的维度 - rnn cell - rnn 向前传播 重点关注: - 如何把数据向量化的,它们的维度是怎么来的 ...

  9. 循环神经网络(RNN)模型与前向反向传播算法

    在前面我们讲到了DNN,以及DNN的特例CNN的模型和前向反向传播算法,这些算法都是前向反馈的,模型的输出和模型本身没有关联关系.今天我们就讨论另一类输出和模型间有反馈的神经网络:循环神经网络(Rec ...

随机推荐

  1. js:如何在循环异步请求的每次返回中添加想要的值

    先看一个场景 var arr = ["a","b","c"]; for (var i in arr) {         $.get(&qu ...

  2. windows container (docker) 容器资料笔记

    背景 业务需求:简化公司私有云,公有云的部署,尝试寻找更好的,更优化的技术方案替换现有的虚拟机部署方案. 技术背景: .net Docker 学习资料 Docker中文社区: http://www.d ...

  3. 香港多IP站群服务器-搭建多IP代理服务器、游戏加速服务器

    耀磊花楹qq82521463香港WK自营机房多IP服务器租用,多IP站群服务器,多IP多C段 站群服务器租用 耀磊数据拥有3万个自由香港IP以及独立AS号,是APNIC核心成员,机房通过BGP融合 多 ...

  4. node c++多线程插件 第一天 c++线程相关函数

    因为不会c++,今天主要是学习了一下c++的东西,感觉非常麻烦. 目前知道了c++里创建线程createThread,返回一个内核对象(HANDLE),我的理解是,c++中系统层面上的操作(线程,文件 ...

  5. 算法模板——平衡树Treap 2

    实现功能:同平衡树Treap 1(BZOJ3224 / tyvj1728) 这次的模板有了不少的改进,显然更加美观了,几乎每个部分都有了不少简化,尤其是删除部分,这个参照了hzwer神犇的写法,在此鸣 ...

  6. 用Jquery做一个时间日期选择器

    今天我们就用Jquery做一个时间日期选择器,当打开网页时,文本框里面显示的是当前的日期,点击文本框可以出现年.月.日的下拉菜单,并且可以选择,会根据年份的选择判断是否是闰年,从而改变二月的天数,闰年 ...

  7. ST 单元测试之maven安装

    junit是用于单元测试的jar包,可以直接下载然后粘贴至lib目录,maven是专门的包管理工具,所以尝试安装maven. 安装maven之前需要先安装好java以及eclipse,在相应的官网下载 ...

  8. HibernateSessionFactory类的主要方法

    package com.app.www.hibernate; import java.sql.SQLException; import org.hibernate.HibernateException ...

  9. 【SF】开源的.NET CORE 基础管理系统系列导航

    SF是一套基于ASP.NET Core MVC+EFCore+Bootstrap开发出来的基础管理系统,源代码完全开源,可以帮助你解决C#.NET项目中重复编码的繁琐工作,让开发人员远离加班! SF ...

  10. - (BOOL)setResourceValue:(id)value forKey:(NSString *)key error:(NSError **)error

    如果我们的APP需要存放比较大的文件的时候,同时又不希望被系统清理掉,那我么我们就需要把我们的资源保存在Documents目录下,但是我们又不希望他会被iCloud备份,因此就有了这个方法 [URL ...