基于对 RNN 的初步认识, 还是先回顾一下它核心的步骤:

(1) words / onehot vectors : \(x^{(t)} \in R^{|v|}\)

**(2) word embeddings: ** \(e^{(t)} = Ex^{(t)}\)

**(3) hidden states: ** \(\sigma(h^{(t)} = W_e e^{(t)} + W_h h^{(t-1)} + b_t)\) 注: \(h^{(0)}\) is the initial hidden state.

(4) output distribution: \(y^{(t)} = softmax(Uh^{(t)} + b_t) \in R^v\)

最后得到的 \(y^{(t)}\) 就是一个概率分布嘛. 值得注意的一点是, 这个 \(W_e\) 是复用的, 同样, 上面的 \(W_h\) 也是复用的, 这样做的特点是, RNN 对于输入向量的尺寸是没有限制的. 即可以用前面比如 5个单词来预测, 或者 10个单词来预测, 效果都是一样的.

然后训练的过程, 也是采用 误差向后传递 BP 的方式, 损失函数用交叉熵.

\(J^{(t)}(\theta) = CE (y^{(t)}, \hat y^{(t}) = -\sum \limits _{w \in V} y_w^{(t)} log \ \hat y_w^{(t)} = -log \ y^{(t)}_{x(t+1)}\)

RNN 如何做预测

至于该神经网络的误差的反向传递, 以及权值如何更新, 就不想再谈了, 思路一样的, 可以翻翻我前面对 BP 算法的推导 2.0 版本的. 核心: 多元函数求偏导, 注意求导的链式法则 (chain rule), 降梯度值作为"error" 这块很关键的, 只有深刻理解了 BP , 后面这些都是差不多的套路而已.

BP推导:

是差别, 但核心思想没变, 改吧改吧, 就基本能推导了, 我现在在 RNN 这里确实不想推了, 就像搞搞怎么去应用先

Just like a n-gram Language Model, you can use a RNN Model to generate text by repeated sampling. Sampled output is next step's input.

就先对 "my" 这个单词, 进行 onehot, 在 encoding 或者 embedding 词向量化, 再变为稠密向量, 与 E 相乘; 初始化 h0 ( 可假设h0向量里面都是0, 你随意) 与 W 相乘, 然后再:

\(\sigma(We + Wh + b_1) * U => y^{(1)}\) 的概率分布, 然后进行采样 sample ( from Vocabulary) 得到 "favorite".

于是就将 "favorite" 作为下一个状态的 "input" 跟上面一样的操作, 假如说取到的是 "season" .

然后再作为下一个状态的 "input", 这种 递归 的方式去不断重复这个过程... 这样就能生成一个完整的句子了. (前提是已通过 BP 训练好了 权值矩阵 We, Wh 和 bais 哦)

RNN 模型衡量

The standard evluation mertric (度量标准) for Language Models is perplexity (困惑 或误解程度)

\(perplexity = \prod \limits_{t=1}^T (\frac{1} {P_{lm} (x^{(t_1)} | x^t, ....x^1)})^{(1/t)}\)

真实的是知道的嘛, 再用这个模型 来衡量 perplexity 的程度. This is eque to the exponential of the **cross-entropy loss ** \(J(\theta)\) 的期望即 \(exp (J(\theta))\)

\(= \prod \limits_{t=1}^T (\frac{1} {y^t_{x+1}})^{1/t} = exp(\frac{1}{T} \sum\limits_{t=1}^T -log\ \hat y^{(t)}x_{x+1}) = exp(J(\theta))\)

Lower perplexity is better.

从一些前人的试验来看 从2013 -> 2016 从 n-gram 到 RNN -> LSTM 等方式在不断地降低这个 perplexity.

LM 的应用

Language Modeling is a benchmark task (标准任务) that help us measure our progress on understanding language.

同样呢,

Language Modeling is a subcomponent (子任务) for many NLP tasks, especially those involving generating text or estimating the probability of text. 在一些生成文本, 和文本预测的场景.

比如说, 输入法提示; 语音识别; 手写字符识别; 字词矫正; 文章作者猜测; 机器翻译; 自动写文章的简述 (summarization); 对话系统; 等, 应用还是蛮多的, 我很挺感兴趣的, 就目前还不太会, 也不知道靠不靠谱, 后面来试看, 我比较感兴趣的, 对话系统 和 自动文章;

RNN : 中文翻译为 "递归神经网络" 我感觉, 只是在不断复用W , 和前一个输出作为后一个输入, 感觉也没有咱编程中 递归的意思, 感觉上还是差了那么一点, 但, 总听上去却觉得非常高大上.

RNN 应用

小结

  • Language Model: A system that predicts the next word

  • Recurrent Neural Network: A family of neural networks that:

    • Take sequential input of any length (RNN 对于输入的长度没有限制)
    • Apply the same weights on each step (权值矩阵 W 是复用的哦)
    • Can optionally produce output on each step (在每一步都可以产生输出)
  • RNN != LM (不完全等于 语言模型, RNN 还能有很多很多的应用场景, 如上面提到的什么机器翻译, 对话系统... 或者这 时序类预测 ... 理解核心是关键词: "神经网络, 权值复用, 上一状态输出作为下一状态输入" 这很强大的.

  • 应用真的可以蛮多的...

更多应用

  • RNN can be used for tagging (给判断一段话的单词的词性) 也叫 part of speech tagging (词性标注)

  • RNN can be used for sentence calssification (给一段文本, 进行自动情感分析, 是 positive 还是 negative) 或者 0-5 李克特评分表来自动完成, (不由得又突然回到营销这块了)

  • RNN can be used as an encoder moduel (自动问答系统, 机器翻译)

  • RNN can be used to generate text (语音转文本, 自动生成文本)

递归神经网络 RNN 就认识到这了, 本来是想就简单了解一波, 公式也不想推导的, 看了有很多很多应用之后, 突然感觉, 有点想去动手试一波的冲动... 然后, 再看看一下, 比较更厉害点的这种, NLP 懂东西, 了解一下.

递归神经网络 RNN 原理(下)的更多相关文章

  1. lecture7-序列模型及递归神经网络RNN

    Hinton 第七课 .这里先说下RNN有recurrent neural network 和 recursive neural network两种,是不一样的,前者指的是一种人工神经网络,后者指的是 ...

  2. lecture7-序列模型及递归神经网络RNN(转载)

    Hinton 第七课 .这里先说下RNN有recurrent neural network 和 recursive neural network两种,是不一样的,前者指的是一种人工神经网络,后者指的是 ...

  3. 递归神经网络(RNN)简介(转载)

    在此之前,我们已经学习了前馈网络的两种结构--多层感知器和卷积神经网络,这两种结构有一个特点,就是假设输入是一个独立的没有上下文联系的单位,比如输入是一张图片,网络识别是狗还是猫.但是对于一些有明显的 ...

  4. 循环神经网络RNN原理

    一.循环神经网络简介 循环神经网络,英文全称:Recurrent Neural Network,或简单记为RNN.需要注意的是,递归神经网络(Recursive Neural Network)的简写也 ...

  5. 深度学习原理与框架-递归神经网络-RNN网络基本框架(代码?) 1.rnn.LSTMCell(生成单层LSTM) 2.rnn.DropoutWrapper(对rnn进行dropout操作) 3.tf.contrib.rnn.MultiRNNCell(堆叠多层LSTM) 4.mlstm_cell.zero_state(state初始化) 5.mlstm_cell(进行LSTM求解)

    问题:LSTM的输出值output和state是否是一样的 1. rnn.LSTMCell(num_hidden, reuse=tf.get_variable_scope().reuse)  # 构建 ...

  6. 图机器学习(GML)&图神经网络(GNN)原理和代码实现(前置学习系列二)

    项目链接:https://aistudio.baidu.com/aistudio/projectdetail/4990947?contributionType=1 欢迎fork欢迎三连!文章篇幅有限, ...

  7. TensorFlow学习笔记13-循环、递归神经网络

    循环神经网络(RNN) 卷积网络专门处理网格化的数据,而循环网络专门处理序列化的数据. 一般的神经网络结构为: 一般的神经网络结构的前提假设是:元素之间是相互独立的,输入.输出都是独立的. 现实世界中 ...

  8. 递归神经网络(RNN,Recurrent Neural Networks)和反向传播的指南 A guide to recurrent neural networks and backpropagation(转载)

    摘要 这篇文章提供了一个关于递归神经网络中某些概念的指南.与前馈网络不同,RNN可能非常敏感,并且适合于过去的输入(be adapted to past inputs).反向传播学习(backprop ...

  9. 【神经网络篇】--RNN递归神经网络初始与详解

    一.前述 传统的神经网络每个输入节点之间没有联系, RNN (对中间信息保留): 由图可知,比如第二个节点的输入不仅依赖于本身的输入U1,而且依赖上一个节点的输入W0,U0,同样第三个节点依赖于前两个 ...

  10. 递归神经网络(Recursive Neural Network, RNN)

    信息往往还存在着诸如树结构.图结构等更复杂的结构.这就需要用到递归神经网络 (Recursive Neural Network, RNN),巧合的是递归神经网络的缩写和循环神经网络一样,也是RNN,递 ...

随机推荐

  1. IAP升级(STM32)

    IAP升级(STM32) IAP作用简述:将要升级的程序bin文件通过串口发送给STM32,STM32接收后存储到FLASH或者SRAM,用户通过事件(按键等)触发(也可延时自动触发)后将升级 文件夹 ...

  2. MySQL - [20] 事务

    题记部分 一.什么是ACID (1)Atomicity 原子性 某个操作,要么全部执行完毕,要么全部回滚. (2)Consistency 一致性 数据库中的数据全都符合现实世界中的约束,则这些数据就符 ...

  3. Windows Api如何创建一个快捷方式并且在开始菜单搜索到自己的应用

    原文链接:http://cshelloworld.com/home/detail/1804473083243925504 当我们点击win10系统搜索框的时候,输入名称 ,win10会帮助我们匹配到对 ...

  4. 【MATLAB习题】牛头刨床机构的运动学分析

    1. 数学模型 已知牛头刨床主运动机构各构件的尺寸为: \(l1=125mm,l3=600mm,l4=150mm,l6=275mm,l'6=575mm\),原动件1以匀角速度ω1=1rad/s逆时针转 ...

  5. 使用word模板的科研论文编写

    编写SCD论文等的时候,可能出现官网的论文模板不够全面.一般我们使用latex作为论文编写模板,格式等都方便控制和编写,而word模板操作起来较为复杂.但是官网有些时候可能找不到latex的模板内容, ...

  6. 介绍一个不知道怎么形容的小东西--Proxy

    what's this? The Proxy object is used to define custom behavior for fundamental operations (e.g. pro ...

  7. 质数测试——Fermat素数测试和MillerRabin素数测试

    质数测试 今天我来填坑了,之前我在数学基础算法--质数篇这篇文章中提到我要单独讲一下MillerRabin算法,最近已经有许多粉丝在催了,所以我马不停蹄的来出这篇文章了,顺便把Fermat素数测试也讲 ...

  8. SpringBoot应用调用Linkis进行任务调度执行SQl;进行数据质量分析

    基于Linkis的Rest-API调用任务 官网示例:"https://linkis.apache.org/zh-CN/docs/1.3.2/api/linkis-task-operator ...

  9. 「实战篇」开源项目docker化运维部署-借助dockerSwarm搭建集群部署(九)

      为了让学习的知识融汇贯通,目前是把所有的集群都放在了一个虚拟机上,如果这个虚拟机宕机了怎么办?俗话说鸡蛋不要都放在一个篮子里面,把各种集群的节点拆分部署,应该把各种节点分机器部署,多个宿主机,这样 ...

  10. Top 出海 AI 公司招技术!HIX.AI & Pollo.ai | 深圳

    HIX.AI & Pollo.ai 招聘高级海外 AI 产品经理 (25-45K) 岗位职责: 负责Web 端海外 AI 产品的规划与策划,负责产品需求分析及原型设计,并制定方案推动产品研发落 ...