LSTM神经网络输入输出究竟是怎样的?

2018 年 1 月 2 日 七月在线实验室

本题节选自《BAT机器学习面试1000题》,1000题系列作为国内首个AI题库,囊括绝大部分机器学习和深度学习的笔试面试题、知识点,可以作为机器学习自测题,也可以当做查漏补缺的资料库。七月在线AI题库(网页版及APP版)见“阅读原文

306. LSTM神经网络输入输出究竟是怎样的?
@YJango,本题解析来源:https://www.zhihu.com/question/41949741
Recurrent Layers——介绍(https://zhuanlan.zhihu.com/p/24720659?refer=YJango)

  • 第一要明确的是神经网络所处理的单位全部都是:向量

下面就解释为什么你会看到训练数据会是矩阵和张量

  • 常规feedforward 输入和输出:矩阵

       输入矩阵形状:(n_samples, dim_input)
       输出矩阵形状:(n_samples, dim_output)
注:真正测试/训练的时候,网络的输入和输出就是向量而已。加入n_samples这个维度是为了可以实现一次训练多个样本,求出平均梯度来更新权重,这个叫做Mini-batch gradient descent。 如果n_samples等于1,那么这种更新方式叫做Stochastic Gradient Descent (SGD)。
Feedforward 的输入输出的本质都是单个向量。

  • 常规Recurrent (RNN/LSTM/GRU) 输入和输出:张量

       输入张量形状:(time_steps, n_samples,  dim_input)
       输出张量形状:(time_steps, n_samples,  dim_output)
注:同样是保留了Mini-batch gradient descent的训练方式,但不同之处在于多了time step这个维度。
Recurrent 的任意时刻的输入的本质还是单个向量,只不过是将不同时刻的向量按顺序输入网络。所以你可能更愿意理解为一串向量 a sequence of vectors,或者是矩阵。

python代码表示预测的话:

import numpy as np 
#当前所累积的hidden_state,若是最初的vector,则hidden_state全为0
hidden_state=np.zeros((n_samples, dim_input))
#print(inputs.shape):(time_steps, n_samples, dim_input)
outputs = np.zeros((time_steps, n_samples, dim_output))

for i in range(time_steps):
   #输出当前时刻的output,同时更新当前已累积的hidden_state outputs[i],
   hidden_state = RNN.predict(inputs[i],hidden_state)
#print(outputs.shape):(time_steps, n_samples, dim_output)

但需要注意的是,Recurrent nets的输出也可以是矩阵,而非三维张量,取决于你如何设计。

  1. 若想用一串序列去预测另一串序列,那么输入输出都是张量 (例如语音识别或机器翻译 一个中文句子翻译成英文句子(一个单词算作一个向量),机器翻译还是个特例,因为两个序列的长短可能不同,要用到seq2seq;

  2. 若想用一串序列去预测一个值,那么输入是张量,输出是矩阵 (例如,情感分析就是用一串单词组成的句子去预测说话人的心情)

Feedforward 能做的是向量对向量的one-to-one mapping,
Recurrent 将其扩展到了序列对序列 sequence-to-sequence mapping.

但单个向量也可以视为长度为1的序列。所以有下图几种类型:

除了最左侧的one to one是feedforward 能做的,右侧都是Recurrent所扩展的


若还想知道更多

  • 可以将Recurrent的横向操作视为累积已发生的事情,并且LSTM的memory cell机制会选择记忆或者忘记所累积的信息来预测某个时刻的输出。

  • 以概率的视角理解的话:就是不断的conditioning on已发生的事情,以此不断缩小sample space

  • RNN的思想是: current output不仅仅取决于current input,还取决于previous state;可以理解成current output是由current input和previous hidden state两个输入计算而出的。并且每次计算后都会有信息残留于previous hidden state中供下一次计算


往期题目:

BAT机器学习面试1000题系列(第1~60题)

BAT机器学习面试1000题系列(第61~100题)

BAT机器学习面试1000题系列(第101~200题)

BAT机器学习面试1000题系列(第201~250题)

BAT机器学习面试1000题系列(第251~255题)

BAT机器学习面试1000题系列(第256~260题)

BAT机器学习面试1000题系列(第261~265题)

BAT机器学习面试1000题系列(第266~270题)

BAT机器学习面试1000题系列(第271~275题)

BAT机器学习面试1000题系列(第276~280题)

BAT机器学习面试1000题系列(第281~285题)

BAT机器学习面试1000题系列(第286~290题)

BAT机器学习面试1000题系列(第291~295题)

BAT机器学习面试1000题系列(第296~300题)

BAT机器学习面试1000题系列(第301~305题)




在线刷题,高效率学习!

登录查看更多
1

相关内容

长短期记忆网络(LSTM)是一种用于深度学习领域的人工回归神经网络(RNN)结构。与标准的前馈神经网络不同,LSTM具有反馈连接。它不仅可以处理单个数据点(如图像),还可以处理整个数据序列(如语音或视频)。例如,LSTM适用于未分段、连接的手写识别、语音识别、网络流量或IDSs(入侵检测系统)中的异常检测等任务。
神经网络的拓扑结构,TOPOLOGY OF DEEP NEURAL NETWORKS
专知会员服务
31+阅读 · 2020年4月15日
自回归模型:PixelCNN
专知会员服务
26+阅读 · 2020年3月21日
麻省理工学院MIT-ICLR2020《神经网络能推断出什么?》
专知会员服务
50+阅读 · 2020年2月19日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
【论文笔记】基于LSTM的问答对排序
专知
12+阅读 · 2019年9月7日
三次简化一张图:一招理解LSTM/GRU门控机制
机器之心
15+阅读 · 2018年12月18日
动态可视化指南:一步步拆解LSTM和GRU
论智
16+阅读 · 2018年10月25日
基于 Keras 用 LSTM 网络做时间序列预测
R语言中文社区
21+阅读 · 2018年8月6日
时间序列深度学习:状态 LSTM 模型预测太阳黑子(下)
R语言中文社区
9+阅读 · 2018年6月15日
通俗理解卷积神经网络(小学生都能看懂)
七月在线实验室
9+阅读 · 2018年1月25日
【干货】人人都能看懂的GRU
机器学习研究会
11+阅读 · 2018年1月5日
如何为LSTM重新构建输入数据(Keras)
全球人工智能
6+阅读 · 2017年10月13日
Universal Transformers
Arxiv
5+阅读 · 2019年3月5日
Arxiv
3+阅读 · 2018年10月25日
Relational recurrent neural networks
Arxiv
8+阅读 · 2018年6月28日
Arxiv
7+阅读 · 2018年6月1日
Arxiv
14+阅读 · 2018年5月15日
VIP会员
相关资讯
【论文笔记】基于LSTM的问答对排序
专知
12+阅读 · 2019年9月7日
三次简化一张图:一招理解LSTM/GRU门控机制
机器之心
15+阅读 · 2018年12月18日
动态可视化指南:一步步拆解LSTM和GRU
论智
16+阅读 · 2018年10月25日
基于 Keras 用 LSTM 网络做时间序列预测
R语言中文社区
21+阅读 · 2018年8月6日
时间序列深度学习:状态 LSTM 模型预测太阳黑子(下)
R语言中文社区
9+阅读 · 2018年6月15日
通俗理解卷积神经网络(小学生都能看懂)
七月在线实验室
9+阅读 · 2018年1月25日
【干货】人人都能看懂的GRU
机器学习研究会
11+阅读 · 2018年1月5日
如何为LSTM重新构建输入数据(Keras)
全球人工智能
6+阅读 · 2017年10月13日
Top
微信扫码咨询专知VIP会员