深度学习-循环神经网络-RNN实现股价预测-LSTM自动生成文本

序列模型(Sequence Model)

深度学习-循环神经网络-RNN实现股价预测-LSTM自动生成文本_第1张图片
深度学习-循环神经网络-RNN实现股价预测-LSTM自动生成文本_第2张图片
基于文本内容及其前后信息进行预测
深度学习-循环神经网络-RNN实现股价预测-LSTM自动生成文本_第3张图片
基于目标不同时刻状态进行预测
深度学习-循环神经网络-RNN实现股价预测-LSTM自动生成文本_第4张图片
深度学习-循环神经网络-RNN实现股价预测-LSTM自动生成文本_第5张图片
基于数据历史信息进行预测
序列模型:输入或者输出中包含有序列数据的模型
突出数据的前后序列关系
两大特点:

  1. 输入(输出)元素之间是具有顺序关系。不同的顺序,得到的结果应该是不同的,比如“不吃饭”和“吃饭不”这两个短语意思是不同的
  2. 输入输出不定长。比如文章生成、聊天机器人

循环神经网络(RNN)

深度学习-循环神经网络-RNN实现股价预测-LSTM自动生成文本_第6张图片
前部序列的信息经处理后,作为输入信息传递到后部序列
任务:
自动寻找语句中的人名:
深度学习-循环神经网络-RNN实现股价预测-LSTM自动生成文本_第7张图片
词汇数值化:建立一个词汇-数值一一对应的字典,然后把输入词汇转化数值矩阵
深度学习-循环神经网络-RNN实现股价预测-LSTM自动生成文本_第8张图片
深度学习-循环神经网络-RNN实现股价预测-LSTM自动生成文本_第9张图片
深度学习-循环神经网络-RNN实现股价预测-LSTM自动生成文本_第10张图片
字典生成的另外一种方式
深度学习-循环神经网络-RNN实现股价预测-LSTM自动生成文本_第11张图片

不同类型的RNN模型

RNN常见结构
深度学习-循环神经网络-RNN实现股价预测-LSTM自动生成文本_第12张图片
深度学习-循环神经网络-RNN实现股价预测-LSTM自动生成文本_第13张图片
多输入对多输出、维度相同RNN结构
应用:特定信息识别
深度学习-循环神经网络-RNN实现股价预测-LSTM自动生成文本_第14张图片
应用:情感识别
举例:I feel happy watching the movie
判断:positive
深度学习-循环神经网络-RNN实现股价预测-LSTM自动生成文本_第15张图片
应用:序列数据生成器
举例:文章生成、音乐生成
深度学习-循环神经网络-RNN实现股价预测-LSTM自动生成文本_第16张图片
应用:语言翻译

普通RNN结构缺陷

  • 前部序列信息在传递到后部的同时,信息权重下降,导致重要信息丢失
  • 求解过程中梯度消失

需要提高前部特定信息的决策权重
深度学习-循环神经网络-RNN实现股价预测-LSTM自动生成文本_第17张图片
长短期记忆网络(LSTM)
深度学习-循环神经网络-RNN实现股价预测-LSTM自动生成文本_第18张图片
深度学习-循环神经网络-RNN实现股价预测-LSTM自动生成文本_第19张图片
深度学习-循环神经网络-RNN实现股价预测-LSTM自动生成文本_第20张图片

  • 忘记门:选择性丢弃a与x中不重要的信息
  • 更新门:确定给记忆细胞添加哪些信息
  • 输出门:筛选需要输出的信息

深度学习-循环神经网络-RNN实现股价预测-LSTM自动生成文本_第21张图片

  • 在网络结构很深(很多层)的情况下,也能保留重要信息
  • 解决了普通RNN求解过程中的梯度消失问题

双向循环神经网络(BRNN)
深度学习-循环神经网络-RNN实现股价预测-LSTM自动生成文本_第22张图片
做判断时,把后部序列信息也考虑
深层循环神经网络(DRNN)
解决更复杂的序列任务,可以把单层RNN叠起来或者在输出前和普通mlp结构结合使用
深度学习-循环神经网络-RNN实现股价预测-LSTM自动生成文本_第23张图片

实战准备

实战一:RNN实现股价预测

提取序列数据:

def extract_data(data,slide):
	x=[]
    y=[]
	for i in range(len(data)-slide):
        x.append([a for a in data[i:i+slide]])
        y.append(data[i+slide])
    x=np.array(x)
	x=x.reshape(x.shape[0],x.shape[1],1)
	return x,y

建立普通RNN模型:

from keras.models import Sequential
from keras.layers import Dense,SimpleRNN
model = Sequential()
#增加一个RNN层
model.add(SimpleRNN(units=5,input_shape=(X.shape[1],X.shape[2]),activation='relu'))
#增加输出层
model.add(Dense(units=1,activation='linear'))
model.compile(optimizer='adam',loss='mean_squared_error')

深度学习-循环神经网络-RNN实现股价预测-LSTM自动生成文本_第24张图片

实战二:LSTM自动生成文本

文本加载:

rew_data = open('flare').read()
# 移除换行字符'\n'
data = rew_data.replace('\n','').replace('\r','')

字符字典建立:

#字符去重
letters = list(set(data))
#建立数字到字符的索引字典
int_to_char = {
   a:b for a,b in enumerate(letters)}
#建立字符到数字的索引字典
char_to_int = {
   b:a for a,b 

你可能感兴趣的:(人工智能,深度学习,rnn,人工智能)