递归神经网络 RNN 原理(下)
基于对 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 原理(下)的更多相关文章
- lecture7-序列模型及递归神经网络RNN
Hinton 第七课 .这里先说下RNN有recurrent neural network 和 recursive neural network两种,是不一样的,前者指的是一种人工神经网络,后者指的是 ...
- lecture7-序列模型及递归神经网络RNN(转载)
Hinton 第七课 .这里先说下RNN有recurrent neural network 和 recursive neural network两种,是不一样的,前者指的是一种人工神经网络,后者指的是 ...
- 递归神经网络(RNN)简介(转载)
在此之前,我们已经学习了前馈网络的两种结构--多层感知器和卷积神经网络,这两种结构有一个特点,就是假设输入是一个独立的没有上下文联系的单位,比如输入是一张图片,网络识别是狗还是猫.但是对于一些有明显的 ...
- 循环神经网络RNN原理
一.循环神经网络简介 循环神经网络,英文全称:Recurrent Neural Network,或简单记为RNN.需要注意的是,递归神经网络(Recursive Neural Network)的简写也 ...
- 深度学习原理与框架-递归神经网络-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) # 构建 ...
- 图机器学习(GML)&图神经网络(GNN)原理和代码实现(前置学习系列二)
项目链接:https://aistudio.baidu.com/aistudio/projectdetail/4990947?contributionType=1 欢迎fork欢迎三连!文章篇幅有限, ...
- TensorFlow学习笔记13-循环、递归神经网络
循环神经网络(RNN) 卷积网络专门处理网格化的数据,而循环网络专门处理序列化的数据. 一般的神经网络结构为: 一般的神经网络结构的前提假设是:元素之间是相互独立的,输入.输出都是独立的. 现实世界中 ...
- 递归神经网络(RNN,Recurrent Neural Networks)和反向传播的指南 A guide to recurrent neural networks and backpropagation(转载)
摘要 这篇文章提供了一个关于递归神经网络中某些概念的指南.与前馈网络不同,RNN可能非常敏感,并且适合于过去的输入(be adapted to past inputs).反向传播学习(backprop ...
- 【神经网络篇】--RNN递归神经网络初始与详解
一.前述 传统的神经网络每个输入节点之间没有联系, RNN (对中间信息保留): 由图可知,比如第二个节点的输入不仅依赖于本身的输入U1,而且依赖上一个节点的输入W0,U0,同样第三个节点依赖于前两个 ...
- 递归神经网络(Recursive Neural Network, RNN)
信息往往还存在着诸如树结构.图结构等更复杂的结构.这就需要用到递归神经网络 (Recursive Neural Network, RNN),巧合的是递归神经网络的缩写和循环神经网络一样,也是RNN,递 ...
随机推荐
- IAP升级(STM32)
IAP升级(STM32) IAP作用简述:将要升级的程序bin文件通过串口发送给STM32,STM32接收后存储到FLASH或者SRAM,用户通过事件(按键等)触发(也可延时自动触发)后将升级 文件夹 ...
- MySQL - [20] 事务
题记部分 一.什么是ACID (1)Atomicity 原子性 某个操作,要么全部执行完毕,要么全部回滚. (2)Consistency 一致性 数据库中的数据全都符合现实世界中的约束,则这些数据就符 ...
- Windows Api如何创建一个快捷方式并且在开始菜单搜索到自己的应用
原文链接:http://cshelloworld.com/home/detail/1804473083243925504 当我们点击win10系统搜索框的时候,输入名称 ,win10会帮助我们匹配到对 ...
- 【MATLAB习题】牛头刨床机构的运动学分析
1. 数学模型 已知牛头刨床主运动机构各构件的尺寸为: \(l1=125mm,l3=600mm,l4=150mm,l6=275mm,l'6=575mm\),原动件1以匀角速度ω1=1rad/s逆时针转 ...
- 使用word模板的科研论文编写
编写SCD论文等的时候,可能出现官网的论文模板不够全面.一般我们使用latex作为论文编写模板,格式等都方便控制和编写,而word模板操作起来较为复杂.但是官网有些时候可能找不到latex的模板内容, ...
- 介绍一个不知道怎么形容的小东西--Proxy
what's this? The Proxy object is used to define custom behavior for fundamental operations (e.g. pro ...
- 质数测试——Fermat素数测试和MillerRabin素数测试
质数测试 今天我来填坑了,之前我在数学基础算法--质数篇这篇文章中提到我要单独讲一下MillerRabin算法,最近已经有许多粉丝在催了,所以我马不停蹄的来出这篇文章了,顺便把Fermat素数测试也讲 ...
- SpringBoot应用调用Linkis进行任务调度执行SQl;进行数据质量分析
基于Linkis的Rest-API调用任务 官网示例:"https://linkis.apache.org/zh-CN/docs/1.3.2/api/linkis-task-operator ...
- 「实战篇」开源项目docker化运维部署-借助dockerSwarm搭建集群部署(九)
为了让学习的知识融汇贯通,目前是把所有的集群都放在了一个虚拟机上,如果这个虚拟机宕机了怎么办?俗话说鸡蛋不要都放在一个篮子里面,把各种集群的节点拆分部署,应该把各种节点分机器部署,多个宿主机,这样 ...
- Top 出海 AI 公司招技术!HIX.AI & Pollo.ai | 深圳
HIX.AI & Pollo.ai 招聘高级海外 AI 产品经理 (25-45K) 岗位职责: 负责Web 端海外 AI 产品的规划与策划,负责产品需求分析及原型设计,并制定方案推动产品研发落 ...