股票预测,自动翻译,你想要的它都能做——RNN算法探索之旅(2)

如果你想学会一种算法,它既能用来做聊天机器人,还能写诗,写新闻稿,最最重要的,它还能用来预测股价,帮你实现赚一个亿的小目标……

这么厉害的神器,它是谁?

答案就是:循环神经网络,简称RNN。

本系列教程将以RNN为主线,总共分为3个部分:

  • RNN算法之预备知识:前馈神经网络(FFNN)
  • 初识RNN算法
  • RNN算法之变体:长短期记忆(LSTM)

上一节课,我们已经简单了解了前馈神经网络,课程地址:

《股票预测,自动翻译,你想要的它都能做——RNN算法探索之旅(1)》

这一节,我们将学习本系列教程的第2部分:初识RNN算法。

好啦,话不多说,下面开始我们今天的内容。


先来看一组数据:

这组数据来自某只大A股2017年9月份的表现

跌得比较有节奏感

在前馈神经网络中,数据与数据之间,并不存在依存关系,即“下一条数据,并不依赖于之前数据的信息”。

但是,像上图中,这样的一组股票价格,你还能说“上一条数据与下一条没有关系”吗? (都已经跌出惯性了……)

我们在预测9月21日的价格时,不仅要参考9月20日的,还要参考9月18日的、9月17日的、……

此时,每一条数据,都受到之前数据的影响。

除了股价预测外,像搭建聊天机器人:

写新闻稿:

预测故事发展情节:

类似这样的数据,都是带有时间顺序的,即

都需要通过前面已经出现过的文字(或情节),来预测下一个文字(或片段)。

遇到这种情况,我们就需要借助循环神经网络(RNN)来处理。

RNN的运行原理,我们举一个很简单的例子来说明。

假设有这样一句话:

“我爱你们”

每次输入一个文字,我们都希望能预测出下一个即将出现的文字是什么?

这样的数据,写成表格的形式,即:

RNN的运算过程很简单,只要你耐心看完下面这张动图:

你会发现,RNN的运算,是这样一个流程:

如果我们将上图简化,它就是这个样子:

看出它与前馈神经网络的区别了吗?

循环神经网络,除了有前向箭头

外,

还有纵向箭头

即,对于循环神经网络来说,它的每一条数据演算,都会依赖于之前的数据。

我们会反复用到隐藏层所携带的信息:

此时,隐藏层ht不仅受Xt影响,还受上一时刻的ht-1的影响:

注意:ht是受 [Xt,ht-1] 的影响;

不是受 [Xt,Xt-1] 的影响。

因为,ht与Xt-1,可以被视为简单的硬连接。

举个不恰当但是特别好记的例子:

如果你的第二盘菜,准备做鱼香肉丝。

那么,使用第一盘已经切好的土豆丝,

要比直接使用原材料——土豆块,更省时、省力,对吧?

开个玩笑,

不管怎样,要记住:

RNN的隐藏层

是受 [Xt,ht-1] 的影响,而非[Xt,Xt-1]的影响。

希望今后,你再看到其他教材上的公式,会觉得更好理解了。

注:公式中的w,数值可能不同

在上面公式中,对于函数 f() 不了解的同学,可以参照上节课的学习内容:

《股票预测,自动翻译,你想要的它都能做——RNN算法探索之旅(1)》

至此,RNN的基本原理,我们已经学习完了。

下一节,我们重点来看长短期记忆(LSTM)算法,它是一种比RNN更加有效的算法,在预测股票价格等方面,有更好的表现。

好啦,我们下期见。

原文发布于微信公众号 - AI传送门(aiportal)

原文发表时间:2017-10-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏跟着阿笨一起玩NET

C# 通过HttpWebRequest在后台对WebService进行调用

http://www.cnblogs.com/macroxu-1982/archive/2009/12/23/1630415.html

2782
来自专栏码匠的流水账

聊聊EurekaRibbonClientConfiguration

spring-cloud-netflix-eureka-client-2.0.0.RELEASE-sources.jar!/org/springframewor...

1171
来自专栏c#开发者

C# : row-clickable GridView and get and set gridview rows using JavaScript

Complete C# code: ---------------- using System; using System.ComponentModel; ...

2996
来自专栏葡萄城控件技术团队

Table-values parameter(TVP)系列之二: 利用DataTable将其作为参数传给SP

一,回顾         上一部分讲述了“在T-SQL中创建和使用TVP”,通过T-SQL建立如下的对象:         1)Tables ...

2069
来自专栏xingoo, 一个梦想做发明家的程序员

windows程序设计-第四章 system1.c

/*---------------------------------------------------- SYSMETS1.C -- System M...

23710
来自专栏菩提树下的杨过

winform中linkLabel的用法(示例)

private void Form1_Load(object sender, EventArgs e)         {             this...

1925
来自专栏闻道于事

商城项目整理(三)JDBC增删改查

商品表的增加,修改,删除,订单表的增加,确认,用户表的查看,日志表的增加,查看 商品表建表语句: 1 create table TEST.GOODS_TABL...

5465
来自专栏互联网开发者交流社区

WinForm之窗体应用程序

1853
来自专栏谈补锅

记录C#常用的代码片段

using Newtonsoft.Json; using Newtonsoft.Json.Linq;

922
来自专栏c#开发者

jquery easyui datagrid mvc server端分页排序筛选的实现

1自定义一个ModelBinder public class filterRule { public string field { g...

4189

扫码关注云+社区