RNN杂谈
2017-03-18 22:13
204 查看
RNN杂谈
RNN 用于序列建模,输入输出均为序列,常见的应用有NLP中的语言模型、时间序列建模两类。语言模型
一个句子的概率模型可以表示为p(x)=p(x1)⋅p(x2|x1)⋅p(x3|x1,x2)⋅⋅⋅p(xn|x2,x2,...xn−1)
这里 x 表示一个 sentence, 构成 x 的单词为xi 。
一个常见的实例是给定一个句子的前半部分,预测接下来的一个词:
This is the People’s Republic of [ ].
My favorite movie is called [ ].
使用RNN解决这个问题可以这样做:
1) 给每个句子加上起止符”\begin”,”\end”
2) 以 I love pandas.为例,训练任务是给定 \begin i love ,期待预测输出 i love pandas \end
3) 这个例子中RNN 的两个主要参数 predict_length=1, sequence_length =3
4) 以每个句子为一条训练数据(这样RNN 的 sequence_length在训练过程中 是可变的,可使用tensorflow中的padding with 0 的 trick),训练得到模型
5) 以预测My favorite movie is called [ ] 为例,将已知的my / favorite / movie / is / called 依次输入模型(一个RNN cell)更新其 state ,取最后的输出作为预测的单词
predict_length 是模型期望的预测能力,取值越大则期望的预测能力越高,比如有人能预测一年后的收入,远比预测一个月后的收入具有挑战性;
sequence_length 是模型对过去的记忆长度,取值越大则记忆的时间越长
一般来说 predict_length 越小, sequence_length 越大,模型的预测能力越高,预测效果越好,但 sequence_length增加后可能会面临着 cell记忆能力不够的问题,RNN 的变体 LSTM即使解决这样的问题的。
RNN 也可以用来生成文本,给定 my / favorite /,可能会输出 animal / is / pandas , animal的生成同上例最后一个单词的产生(更新状态后输出),is 和 pandas 的产生是预测的预测,即由 animal 产生 is , is 产生 pandas,但是预测的预测容易产生的问题是重复输出一个单词,比如 animal / animal / animal,可见预测的预测效果不是很好,这里可以采用 beam_search 的方法避免这个问题。
短期预测的效果要远好于长期预测。
RNN 也可用于古诗的生成,古诗有着规整的长度,古诗生成可以给定一句诗,生成它的下一句,两句古诗之间对仗工整,上下句之间由明显的对应关系,比如“两个黄鹂鸣翠柳,一行白鹭上青天”,那么预测的过程可以是
输入x | 输出y |
---|---|
两个/黄鹂/鸣/翠柳 | 一行/白鹭/上/青天 |
一行/白鹭/上/青天 | 窗/含/西岭/千秋/雪 |
窗/含/西岭/千秋/雪 | 门/泊/东吴/万里/船 |
古诗生成也可以是给定前三句,预测输出最后一句,那么 predict_length= 1 句诗,sequence_length= 3 句诗
时间序列
以某个基站的流量数据为例,假设我们已知某个基站3个月的流量数据,时间粒度为 1h,即我们有 3*30*24个流量数据记录,我们想预测未来一周的流量。注意这里的流量粒度为 1h ,如果想预测未来一个月的流量,就相当于是长期细粒度预测,很难实现。时间序列与语言建模的明显区别是时间序列会有明显的周期性,这里的 predict_length 一般等于周期的长度或其整数倍,而 sequence_length 只要大于 predict_length 即可,作为超参数调参可以找出最适合的数值。
假设我们有 24 条流量记录,记为1,2,3,…,24
batch_size = 2
sequence_length = 4
predict_length = 3
红色框表示 batch 输入,黑色框表示 batch 真实值
相关文章推荐
- 杂谈(fastcgi)
- iOS APP 逆向安全杂谈
- RNN-RBM 网络架构及程序解读
- Theano(3) 通用RNN
- 杂谈
- 数据结构杂谈(一)浅谈基本排序算法
- Deep Learning(深度学习)整理,RNN,CNN,BP
- TensorFlow人工智能引擎入门教程之九 RNN/LSTM循环神经网络长短期记忆网络使用
- Model-View-Controller - 杂谈
- KVM&Libvirt基本概念及开发杂谈
- 党课心得五(杂谈)
- 【人生杂谈】【科普杂谈】不要对知识与技术的遗忘感到焦虑
- iOS杂谈
- 架构(Architecture)和框架(Framework)杂谈
- Deep Learning及NLP(自然语言处理)杂谈--第二部分
- RNN 与 LSTM 的应用
- 杂谈WebGIS
- RNN以及LSTM的介绍和公式梳理
- 计算机杂谈
- 我所崇拜的人-----杂谈