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. JAVA开发环境搭建 - Eclipse基本配置

    Eclipse设置的内容包括许多方面,不同的开发人员,不同的项目需要,可能对Eclipse的设置不尽相同.如下内容仅是对本人的一些基本设置做一些记录,以作备忘.后期会逐渐对相关内容进行更新,仅供参考. ...

  2. sqlserver的一些小知识点

    1.高效分页sql和储存过程 select top 每页条数 * from ( select ROW_NUMBER() over (order by id)as nid ,* from table01 ...

  3. Memcached 内存管理详解

    Memcached是一个高效的分布式内存cache,了解memcached的内存管理机制,便于我们理解memcached,让我们可以针对我们数据特点进行调优,让其更好的为我所用. 首先需要我们先了解两 ...

  4. C++ 11 学习1:类型自动推导 auto和decltype

    Cocos 3.x 用了大量的C++ 11 的东西,所以作为一个C++忠实粉丝,有必要对C++ 11进行一个系统的学习. 使用C++11之前,一定要注意自己使用的编译器对C++11的支持情况,有些编译 ...

  5. Asp.Net 常用工具类之Office-文档操作(6)

    文档一直是老大难问题,君不知,代码用时方恨少!有一套成熟的文件帮助类能很大程度上减少寻找各种资料的时间. 记得以前做一个业务,需要导出协议,一份可编辑,一份不可编辑.那么Word和PDF是最好的选择, ...

  6. JAVA基础知识系列---进程、线程安全

    1 相关概念 1.1 临界区 保证在某一时刻只有一个线程能访问数据的简便方法,在任意时刻只允许一个线程对资源进行访问.如果有多个线程试图同时访问临界区,那么在有一个线程进入后,其他所有试图访问临界区的 ...

  7. redux-form的学习笔记

    redux是一种常用的与react框架搭配的一种数据流架构,而伴随着redux的出现,也出现了许多基于redux开源的第三方库,而redux-form就是其中之一的开源组件库,到今天我写下这篇笔记为止 ...

  8. 关于IE低版本兼容问题

    1,元素浮动之后,能设置宽度的话就给元素加宽度.如果需要宽度是内容撑开,就给它里边的块元素加上浮动: 解决方案:给需要宽度由内容撑开的元素加上浮动 css样式: <style> .box{ ...

  9. Git-最简单的本地项目变成版本仓库,然后把内容推送到GitHub仓库

    (注:本文的前提是本地Git仓库和github仓库之间已经存在SSH key了,所以如果没有建立联系的小伙伴们请先建立联系) 具体操作: 一:把本地项目变成版本仓库 1.把本地的一个项目目录编程版本库 ...

  10. [TPYBoard - Micropython之会python就能做硬件 8] 学习使用蓝牙模块及舵机

    转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604   一.实验器材 1.TPYboard V102板  一块 2.电机驱动模块L2 ...