• RNNs
    2020-09-28 17:26:24


    Disclaimer: this article assumes that readers possess preliminary knowledge behind the model intuition and architecture of LSTM neural networks.


    总览 (Overview)

    1. Background of Deep Learning in FTS


    2. Noteworthy Data Preprocessing Practices for FTS


    3. Temporal Convolutional Network Architecture


    4. Example Application of Temporal Convolutional Networks in FTS


    • Knowledge-Driven Stock Trend Prediction and Explanation via TCN


    1.背景 (1. Background)

    Financial Time Series (FTS) modelling is a practice with a long history which first revolutionised algorithmic trading in the early 1970s. The analysis of FTS was divided into two categories: fundamental analysis and technical analysis. Both these practices were put into question by the Efficient Market Hypothesis (EMH). The EMH, highly disputed since its initial publication in 1970, hypothesizes that stock prices are ultimately unpredictable. This has not constrained research attempting to model FTS through the use of linear, non-linear and ML-based models, as mentioned hereafter.

    金融时间序列(FTS)建模是一种历史悠久的实践,在1970年代初首次对算法交易进行了革新。 FTS的分析分为两类:基础分析和技术分析。 有效市场假说(EMH)对这两种做法都提出了质疑。 自从1970年首次发布以来,EMH一直备受争议,它假设股价最终是不可预测的。 如下所述,这并未限制尝试通过使用线性,非线性和基于ML的模型对FTS建模的研究。

    Due to the nonstationary, nonlinear, high-noise characteristics of financial time series, traditional statistical models have difficulty predicting them with high precision. Hence, increased attempts in recent years are being made to apply deep learning to stock market forecasts, though far from perfection. To list a mere few:

    由于金融时间序列具有非平稳,非线性,高噪声的特点,因此传统的统计模型很难准确预测它们。 因此,尽管远非完美,但近年来人们越来越多地尝试将深度学习应用于股票市场预测。 仅列出几个:



    Lin et al. proposed a method to predict stocks using a support vector machine to establish a two-part feature selection and prediction model and proved that the method has better generalization than conventional methods.

    Lin 等。 提出了一种使用支持​​向量机建立两部分特征选择和预测模型的股票预测方法,证明了该方法具有比常规方法更好的泛化能力。



    Wanjawa et al. proposed an artificial neural network using a feed-forward multilayer perceptron with error backpropagation to predict stock prices. The results show that the model can predict a typical stock market.

    Wanjawa 提出了一种人工神经网络,该网络使用具有误差反向传播的前馈多层感知器来预测股票价格。 结果表明,该模型可以预测典型的股票市场。



    ‎‎‎‎Enter LSTM — a surge in studies concerning application of LSTM neural networks to the time series data.

    输入 LSTM -在涉及应用LSTM神经网络的时间序列数据研究的激增。

    Zhao et al., a time-weighted function was added to an LSTM neural network, and the results surpassed those of other models.

    等。 ,将时间加权函数添加到LSTM神经网络,结果超过了其他模型。



    Zhang et al. later combined convolutional neural network (CNN) and recurrent neural network (RNN) to propose a new architecture, the deep and wide area neural network (DWNN). The results show that the DWNN model can reduce the predicted mean square error by 30% compared to the general RNN model.

    等。 后来结合了卷积神经网络(CNN)和递归神经网络(RNN)提出了一种新的体系结构,即广域神经网络(DWNN)。 结果表明,与常规RNN模型相比,DWNN模型可以将预测的均方误差降低30%。

    Ha et al., CNN was used to develop a quantitative stock selection strategy to determine stock trends and then predict stock prices using LSTM to promote a hybrid neural network model for quantitative timing strategies to increase profits.

    Ha ,CNN被用于开发定量股票选择策略,以确定股票趋势,然后使用LSTM预测股票价格,以推广用于定量计时策略的混合神经网络模型,以增加利润。

    Jiang et al. used an LSTM neural network and RNN to construct models and found that LSTM could be better applied to stock forecasting.




    Jin et al. added investor sentiment tendency in model analysis and introduced empirical modal decomposition (EMD) combined with LSTM to obtain more accurate stock forecasts. The LSTM model based on the attention mechanism is common in speech and image recognition but is rarely used in finance.

    Jin 在模型分析中增加了投资者的情绪趋势,并引入经验模态分解(EMD)与LSTM相结合,以获得更准确的股票预测。 基于注意力机制的LSTM模型在语音和图像识别中很常见,但在金融领域却很少使用。

    Radford et al. Precursor to the now hot-stock, GPT-3, GPT-2’s goal is to design a multitask learner, and it utilizes a combination of pretraining and supervised finetuning to achieve more flexible forms of transfer. Therefore it has 1542M parameters, much bigger than other comparative models.

    Radford 等。 目前热门的GPT-3的前身, GPT-2的目标是设计一个多任务学习器,它将预训练和监督式微调相结合,以实现更灵活的传输形式。 因此,它具有1542M参数,比其他比较模型大得多。

    Shumin et al. A knowledge-driven approach using Temporal Convolutional Network (KDTCN) for stock trend prediction and explanation. They first extracted structured events from financial news and utilize knowledge graphs to obtain event embeddings. Then, combine event embeddings and price values together to forecast stock trend. Experiments demonstrate that this can (i) react to abrupt changes much faster and outperform state-of-the-art methods on stock datasets. (This will be the focal point of this article.)

    Shumin 。 一种使用时间卷积网络( KDTCN)进行知识趋势预测和解释的知识驱动方法。 他们首先从财经新闻中提取结构化事件,然后利用知识图获得事件嵌入。 然后,将事件嵌入和价格值结合在一起以预测库存趋势。 实验表明,该方法可以(i)更快地应对突然的变化,并且可以胜过股票数据集上的最新方法。 (这将是本文的重点。)



    Jiayu et al. and Thomas et al. proposed hybrid attention networks to predict stock trend based on the sequence of recent news. LSTMs with attention mechanisms outperforms conventional LSTMS as it prevents long-term dependencies due to its unique storage unit structure.

    贾玉托马斯等。 提出了一种基于最近新闻序列的混合注意力网络来预测股票趋势。 具有注意机制的LSTM优于传统LSTM,因为它具有独特的存储单元结构,可防止长期依赖。

    Hongyan et al. proposed an exploratory architecture referred to Temporal Convolutional Attention-based Network (TCAN) which combines temporal convolutional network and attention mechanism. TCAN includes two parts, one is Temporal Attention (TA) which captures relevant features inside the sequence, the other is Enhanced Residual (ER) which extracts the shallow layer’s important information and transfers to deep layers.

    红岩等。 提出了一种基于时间卷积注意力的网络(TCAN)的探索性架构,该架构结合了时间卷积网络和注意力机制。 TCAN包括两个部分,一个是时间注意(TA) ,它捕获序列中的相关特征,另一个是增强残差(ER) ,其提取浅层的重要信息并传输到深层。

    The timeline above is merely meant to provide a glimpse into the historical context of FTS in deep learning but not downplay on the significant work contributed to by the rest of the sequence model academia during similar time periods.


    However, a word of caution is worth mentioning here. It might be the case that academic publications in the field of FTS forecasting are often misleading. Many FTS forecasting papers tend to inflate their performance for recognition and overfit their models due to the heavy use of simulators. Many of the performances claimed in these papers are difficult to replicate as they fail to generalise for future changes in the particular FTS being forecast.

    但是,在此值得一提。 FTS预测领域的学术出版物可能经常会产生误导。 由于大量使用模拟器,许多FTS预测论文往往会夸大其性能以供识别和过拟合其模型。 这些论文中声称的许多性能难以复制,因为它们无法概括所预测的特定FTS的未来变化。

    2. FTS值得注意的数据预处理实践 (2. Noteworthy Data Preprocessing Practices for FTS)

    2.1去噪 (2.1 Denoising)

    Financial time series data — especially stock prices, constantly fluctuate with seasonality, noise and autocorrection. Traditional methods of forecasting use moving averages and differencing to reduce the noise for forecasting. However, FTS is conventionally non-stationary and exhibits the overlapping of useful signals and noise, which makes traditional denoising ineffective.

    金融时间序列数据(尤其是股票价格)会随着季节,噪声和自动更正而不断波动。 传统的预测方法使用移动平均值和微分来减少预测的噪声。 然而,FTS传统上是不稳定的,并且表现出有用信号和噪声的重叠,这使得传统的去噪无效。

    Wavelet analysis has led to remarkable achievements in areas such as image and signal processing. With its ability to compensate for the shortcomings of Fourier analysis, it has gradually been introduced in the economic and financial fields. The wavelet transform has unique advantages in solving traditional time series analysis problems as it can decompose and reconstruct financial time series data from a different time and frequency domain scales.

    小波分析在图像和信号处理等领域取得了令人瞩目的成就。 由于它具有弥补傅里叶分析缺​​点的能力,因此已逐渐引入经济和金融领域。 小波变换在解决传统时间序列分析问题方面具有独特的优势,因为它可以分解和重建来自不同时域和频域尺度的金融时间序列数据

    Wavelet transform essentially uses multi-scale characteristics to denoise the dataset, effectively separating the useful signal from the noise. In a paper by Jiayu Qiu, Bin Wang, Changjun Zhou, they used the coif3 wavelet function with three decomposition layers, and evaluate the effect of the wavelet transform by its signal-to-noise ratio (SNR) and root mean square error (RMSE). The higher the SNR and the smaller the RMSE, the better the denoising effect of the wavelet transform:

    小波变换本质上使用多尺度特征对数据集进行降噪,从而有效地将有用信号与噪声分离。 邱佳瑜,王斌,周长军的论文中他们将coif3小波函数用于三个分解层,并通过其信噪比(SNR)和均方根误差(RMSE)来评估小波变换的效果。 )。 SNR越高,RMSE越小,小波变换的去噪效果越好

    Image for post
    Jiayu Qiu1, Bin Wang, Changjun Zhou邱佳玉1,王斌,周长军

    2.2数据混排 (2.2 Data Shuffling)

    In FTS, the choice of which piece of data to use as the validation set is not trivial. Indeed, there exist a myriad of ways of doing this which must be carefully considered for stock indices of varying volatility.

    在FTS中,选择哪个数据用作验证集并非易事。 确实,存在无数种执行此操作的方法,对于变化不定的股票指数,必须仔细考虑。

    The fixed origin method is the most naive and common method used. Given a certain split size, the start of the data is the training set and the end is the validation set. However, this is a particularly rudimentary method to choose, especially for a high-growth stock like Amazon. The reason why this is the case is that Amazon’s stock price starts off with low volatility and, as the stock grows, experiences increasingly volatile behaviour.

    固定原点方法是最幼稚和最常用的方法。 给定一定的拆分大小,数据的开始是训练集,而结束是验证集。 但是,这是一种特别基本的选择方法,对于像亚马逊这样的高增长股票而言尤其如此。 出现这种情况的原因是,亚马逊的股价始于低波动性,并且随着股票的增长,其行为也越来越不稳定。

    Image for post
    AMZN Year-to-Date prices (source: Google Finance)

    We would therefore be training a model on low volatility dynamics and expect it to deal with unseen high volatility dynamics for its predictions. This has indeed shown itself to be difficult and come at a cost in performance for these types of stocks. Therefore our benchmark for validation loss and performance may be misleading if we only consider this. However, for stocks like Intel that are more constant in their volatility (pre-COVID crisis), this method is reasonable.

    因此,我们将针对低波动率动态模型进行训练,并期望该模型能够处理其预测中看不见的高波动率动态模型。 对于这些类型的股票,这确实表明了自己的难度,并且以性能为代价。 因此,仅考虑这一点,我们的验证损失和性能基准可能会产生误导。 但是,对于像英特尔这样的波动性较为恒定的股票(COVID危机前),这种方法是合理的。

    The rolling origin recalibration method is slightly less vulnerable than fixed origin as it allows the validation loss to be computed by taking the average of various different splits of the data to avoid running into unrepresentative issues with high volatility timeframes.


    Finally, the rolling window method is usually one of the most useful methods as it is particularly used for FTS algorithms being run for long timeframes. Indeed, this model outputs the average validation error of multiple rolling windows of data. This means the final values we get are more representative of recent model performance, as we are less biased by strong or poor performance in the distant past.

    最后, 滚动窗口方法通常是最有用的方法之一,因为它特别适用于长时间运行的FTS算法。 实际上,该模型输出多个滚动数据窗口的平均验证误差。 这意味着我们获得的最终值更能代表近期的模型性能,因为我们在远古时代对强或弱性能的偏见较少。

    A study done by Thomas Hollis, Antoine Viscardi, Seung Eun Yi indicated that both rolling window (RW) and rolling origin recalibration (ROR) describe very slightly better performances (58% and 60%) than that of the simple fixed origin method. This suggests that for volatile stocks like Amazon, using these shuffling methods would be inevitable.

    托马斯·霍利斯 ( Thomas Hollis),安托万·维斯卡迪(Antoine Viscardi)和成恩义(Seung Eun Yi)进行的一项研究表明,滚动窗口(RW)和滚动起点重新校准(ROR)都比简单固定起点方法的性能要好得多(58%和60%)。 这表明对于像亚马逊这样的动荡股票,使用这些洗牌方法将是不可避免的。

    Image for post
    Performance comparison of shuffling methods

    3.时间卷积网络 (3. Temporal Convolutional Network)

    Temporal Convolutional Networks, or simply TCN, is a variation of Convolutional Neural Networks for sequence modelling tasks, by combining aspects of RNN and CNN architectures. Preliminary empirical evaluations of TCNs have shown that a simple convolutional architecture outperforms canonical recurrent networks such as LSTMs across a diverse range of tasks and datasets while demonstrating longer effective memory.

    时间卷积网络 (简称TCN)是卷积神经网络的一种变体,它通过结合RNN和CNN架构的方面来进行序列建模任务。 对TCN的初步经验评估表明,简单的卷积体系结构在各种任务和数据集上均表现出优于LSTM的规范化递归网络,同时展示了更长的有效内存。

    The distinguishing characteristics of TCNs are:


    1. The convolutions in the architecture are causal, meaning that there is no information “leakage” from future to past.


    2. The architecture can take a sequence of any length and map it to an output sequence of the same length, just as with an RNN. TCNs possess very long effective history sizes (i.e., the ability for the networks to look very far into the past to make a prediction) using a combination of very deep networks (augmented with residual layers) and dilated convolutions.

      与RNN一样,该体系结构可以采用任意长度的序列并将其映射到相同长度的输出序列。 TCN具有非常长的有效历史记录大小(即,网络可以使用非常深的过去进行预测的能力),可以结合使用非常深的网络(带有残差层)和膨胀卷积。

    3.1模型架构概述 (3.1 Model Architecture Overview)

    3.1.1 Causal Convolutions


    As mentioned above, the TCN is based upon two principles: the fact that the network produces an output of the same length as the input, and the fact that there can be no leakage from the future into the past. To accomplish the first point, the TCN uses a 1D fully-convolutional network (FCN) architecture, where each hidden layer is the same length as the input layer, and zero padding of length (kernel size − 1) is added to keep subsequent layers the same length as previous ones. To achieve the second point, the TCN uses causal convolutions, convolutions where output at time t is convolved only with elements from time t and earlier in the previous layer.

    如上所述,TCN基于两个原则:网络产生与输入长度相同的输出,以及从将来到过去都不会泄漏的事实。 为了完成第一点,TCN使用一维全卷积网络(FCN)架构,其中每个隐藏层的长度与输入层的长度相同,并且添加了零填充长度(内核大小− 1)以保留后续层与以前的长度相同 。 为了达到第二点,TCN使用因果卷积 ,即在卷积中时间t的输出仅与时间t或更早的上一层中的元素卷积。

    To put it simply: TCN = 1D FCN + causal convolutions.

    简单地说: TCN = 1D FCN +因果卷积。

    3.1.2 Dilated Convolutions


    A simple causal convolution is only able to look back at a history with size linear in the depth of the network. This makes it challenging to apply the aforementioned causal convolution on sequence tasks, especially those requiring a longer history. The solution implemented by Bai, Kolter and Koltun (2020), was to employ dilated convolutions that enable an exponentially large receptive field. More formally, for a 1-D sequence input x ∈ Rⁿ and a filter f:{0,…,k−1}→R, the dilated convolution operation F on element s of the sequence is defined as:

    一个简单的因果卷积只能回顾网络深度为线性的历史。 这使得将上述因果卷积应用于序列任务,特别是那些需要较长历史记录的任务具有挑战性。 Bai,Kolter和Koltun(2020 )实施的解决方案是采用膨胀卷积,以实现指数级大的接收场。 更正式地,对于一维序列输入x∈Rⁿ和滤波器f:{0,…,k-1}→R,对该序列元素s的扩张卷积运算F定义为:

    Image for post

    where d is the dilation factor, k is the filter size, and sd · i accounts for the direction of the past. Dilation is thus equivalent to introducing a fixed step between every two adjacent filter taps. When d = 1, a dilated convolution reduces to a regular convolution. Using larger dilation enables an output at the top level to represent a wider range of inputs, thus effectively expanding the receptive field of a ConvNet.

    其中d是扩张因子, k是滤波器大小, s - d · i代表过去的方向。 因此,膨胀等效于在每两个相邻的滤波器抽头之间引入一个固定的阶跃。 当d = 1时,膨胀卷积减小为规则卷积。 使用较大的膨胀可使顶层的输出代表更大范围的输入,从而有效地扩展了ConvNet的接收范围。

    Image for post
    A dilated causal convolution with dilation factors d = 1, 2, 4 and filter size k = 3. The receptive field is able to cover all values from the input sequence.
    扩张因果卷积,扩张因数d = 1、2、4,滤波器大小k =3。接收场能够覆盖输入序列中的所有值。

    3.1.3 Residual Connections


    Residual blocks effectively allow layers to learn modifications to the identity mapping rather than the entire transformation, which has repeatedly been shown to benefit very deep networks.


    Since a TCN’s receptive field depends on the network depth n as well as filter size k and dilation factor d, stabilization of deeper and larger TCNs becomes important.

    由于TCN的接收场取决于网络深度n以及滤波器大小k和扩散因子d ,因此更深和更大的TCN的稳定化变得很重要。

    3.2利弊 (3.2 Pros & Cons)

    Several advantages of using TCNs for sequence modelling:


    Parallelism. Unlike in RNNs where the predictions for later timesteps must wait for their predecessors to complete, convolutions can be done in parallel since the same filter is used in each layer. Therefore, in both training and evaluation, a long input sequence can be processed as a whole in TCN, instead of sequentially as in RNN.

    并行性 。 与RNN中的后继时间步长的预测必须等待其前任完成之前的RNN不同,卷积可以并行完成,因为每一层都使用相同的滤波器。 因此,在训练和评估中,可以在TCN中整体上处理一个长输入序列,而不是像RNN中那样顺序处理。

    Flexible receptive field size. A TCN can change its receptive field size in multiple ways. For instance, stacking more dilated (causal) convolutional layers, using larger dilation factors, or increasing the filter size are all viable options. TCNs thus afford better control of the model’s memory size and are easy to adapt to different domains.

    灵活的接收场大小。 TCN可以多种方式更改其接收字段的大小。 例如,使用更大的膨胀因子堆叠更多的膨胀(因果)卷积层或增加过滤器尺寸都是可行的选择。 因此,TCN可以更好地控制模型的内存大小,并且易于适应不同的域。

    Stable gradients. Unlike recurrent architectures, TCN has a backpropagation path different from the temporal direction of the sequence. TCN thus avoids the problem of exploding/vanishing gradients, which is a major issue for RNNs (and which led to the development of LSTM and GRU).

    稳定的渐变 。 与循环架构不同,TCN的反向传播路径与序列的时间方向不同。 因此,TCN避免了爆炸/消失梯度的问题,这是RNN的主要问题(并导致了LSTM和GRU的发展)。

    Low memory requirement for training. Especially in the case of a long input sequence, LSTMs and GRUs can easily use up a lot of memory to store the partial results for their multiple cell gates. However, in a TCN the filters are shared across a layer, with the backpropagation path depending only on network depth. Therefore in practice, it was found that gated RNNs are likely to use up to a multiplicative factor more memory than TCNs.

    训练的记忆力低 。 尤其是在输入序列较长的情况下,LSTM和GRU可以轻松地消耗大量内存来存储其多个单元门的部分结果。 但是,在TCN中,过滤器是跨层共享的,反向传播路径仅取决于网络深度。 因此,在实践中发现,门控RNN可能比TCN占用最多乘数的内存。

    Variable length inputs. Just like RNNs, which model inputs with variable lengths in a recurrent way, TCNs can also take in inputs of arbitrary lengths by sliding the 1D convolutional kernels. This means that TCNs can be adopted as drop-in replacements for RNNs for sequential data of arbitrary length.

    可变长度输入 。 就像RNN以循环方式对可变长度的输入进行建模一样,TCN也可以通过滑动一维卷积内核来接受任意长度的输入。 这意味着,对于任意长度的顺序数据,可以将TCN用作RNN的直接替代。

    Two notable disadvantages to using TCNs:


    Data storage during evaluation. TCNs need to take in the raw sequence up to the effective history length, thus possibly requiring more memory during evaluation.

    评估期间的数据存储 。 TCN需要采用原始序列,直到有效的历史记录长度,因此在评估期间可能需要更多的存储空间。

    Potential parameter change for a transfer of domain. Different domains can have different requirements on the amount of history the model needs in order to predict. Therefore, when transferring a model from a domain where only little memory is needed (i.e., small k and d) to a domain where much longer memory is required (i.e., much larger k and d), TCN may perform poorly for not having a sufficiently large receptive field.

    域转移的潜在参数更改。 不同领域对模型进行预测所需的历史记录数量可能有不同的要求。 因此,当将模型从仅需要很少内存(即,较小的kd )的域转移至需要更长内存(即,较大的kd )的域时,TCN可能会因为没有足够大的接收场。

    3.3基准 (3.3 Benchmark)

    Executive summary:


    The results strongly suggest that the generic TCN architecture with minimal tuning outperforms canonical recurrent architectures across a broad variety of sequence modelling tasks that are commonly used to benchmark the performance of recurrent architectures themselves.

    结果强烈表明,在各种序列建模任务(通常用于对循环体系结构本身的性能进行基准测试)中, 具有最少调整的通用TCN体系结构的性能优于规范的循环体系结构。

    4.通过TCN进行知识驱动的股票趋势预测和解释 (4. Knowledge-Driven Stock Trend Prediction and Explanation via TCN)

    4.1背景 (4.1 Background)

    Most of the deep neural networks in stock trend prediction have two common drawbacks: (i) current methods are not sensitive enough to abrupt changes of stock trend, and (ii) forecasting results are not interpretable for humans. To address these two problems, Deng et al., 2019 proposed a novel Knowledge-Driven Temporal Convolutional Network (KDTCN) for stock trend prediction and explanation, by incorporating background knowledge, news events and price data into deep prediction models, to tackle the problem of stock trend prediction and explanation with abrupt changes.

    股票趋势预测中的大多数深度神经网络都有两个共同的缺点:(i) 当前的方法对股票趋势的突然变化不够敏感 ,(ii) 人类无法预测预测结果 。 为了解决这两个问题, Deng等人(2019)提出了一种新颖的知识驱动的时间卷积网络(KDTCN) ,通过将背景知识,新闻事件和价格数据整合到深度预测模型中来进行股票趋势预测和解释,以解决该问题。变化趋势的股票趋势预测和解释。

    To address the problem of prediction with abrupt changes, events from financial news are extracted and structurized into event tuples, e.g., “Britain exiting from EU ” is represented as (Britain, exiting from, EU ). Then entities and relations in event tuples are linked to KGs, such as Freebase and Wikidata. Secondly, structured knowledge, textual news, as well as price values are vectorized respectively, and then concatenated together. Finally, feed these embeddings into a TCN-based model.

    为了解决与急剧变化预测的问题,从金融新闻事件被提取和结构化到事件的元组,例如,“从英国退出欧盟的”被表示为( 英国 欧盟 退出 )。 然后,将事件元组中的实体和关系链接到KG,例如Freebase和Wikidata。 其次,将结构化知识,文本新闻以及价格值分别矢量化,然后连接在一起。 最后,将这些嵌入内容放入基于TCN的模型中。

    Experiments demonstrate that KDTCN can (i) react to abrupt changes much faster and outperform state-of-the-art methods on stock datasets, as well as (ii) facilitate the explanation of prediction particularly with abrupt changes.


    Furthermore, based on prediction results with abrupt changes, to address the problem of making explanations, the effect of events are visualized by presenting the linkage among events with the use of Knowledge Graphs (KG). By doing so, we can make explanations of (i) how knowledge-driven events influence the stock market fluctuation in different levels, and (ii) how knowledge helps to associate events with abrupt changes in stock trend prediction.

    此外,基于具有突然变化的预测结果,以解决做出解释的问题,通过使用知识图谱(KG)呈现事件之间的链接,可以可视化事件的效果。 通过这样做,我们可以做出以下解释:(i)知识驱动的事件如何在不同程度上影响股市波动;(ii)知识如何帮助将事件与股票趋势预测的突然变化相关联。

    Note the section below merely summarizes into a broad overview of the paper Shumin et al., if you could refer to the paper if you seek further technical details.

    请注意 ,如果您需要进一步的技术细节,请参考本文, 以下部分只是对 Shumin等人 的论文进行了概述

    4.2模型架构概述 (4.2 Model Architecture Overview)

    The fundamental TCN model architecture mentioned here is derived from Section 3 above —a generic TCN architecture consisting of causal convolutions, residual connections and dilated convolutions.


    The overview of KDTCN architecture is shown below:


    Image for post
    Illustration of the KDTCN framework

    Original model inputs are price values X, news corpus N , and knowledge graph G. The price values are normalized and mapped into the price vector, denoted by

    原始模型输入是价格值X新闻语料库N知识图G。 价格值已标准化并映射到价格向量中,表示为

    Image for post

    where each vector pt represents a real-time price vector on a stock trading day t, and T is the time span.

    其中每个向量p t代表股票交易日t上的实时价格向量,而T是时间跨度。

    As for news corpus, pieces of news are represented as event sets, ε; then, structured into event tuple e = (s, p, o), where p is the action/predicate, s is the actor/subject and o is the object on which the action is performed; then, each item in the event tuples is linked to KG, correspond to entities and relations in KG; lastly, event embeddings V are obtained by training both event tuples and KG triples. A more detailed of this process is documented in Shumin et al.

    对于新闻语料库,新闻片段表示为事件集ε ; 然后,构造成事件元组e =(s,p,o) ,其中p是动作/谓词, s是角色/主体, o是在其上执行动作的对象; 然后,将事件元组中的每个项目链接到KG,对应于KG中的实体和关系。 最后,通过训练事件元组和KG三元组获得事件嵌入V。 Shumin 等人在文档中详细介绍了此过程

    Finally, event embeddings, combined with price vectors are input into a TCN-based model.


    4.2.1数据集和基准 (4.2.1 Datasets & Baselines)



    1. Time-series Price Data X: The price dataset of daily value records of DJIA index

      时间序列价格数据X DJIA指数每日价值记录的价格数据集

    2. Textual News Data N: News dataset composed of historical news headlines from Reddit WorldNews Channel (top 25 posts based on votes).

      文字新闻数据N:由Reddit WorldNews频道的历史新闻头条组成的新闻数据集(根据投票数排名前25位)。

    3. Structured Knowledge Data G: A sub-graph constructed from the structured data of two commonly used open knowledge graphs for research — Freebase and the Wikidata.




    Image for post
    event embedding (a) and 事件嵌入(a)event embedding (b) denote event embedding without and with KG respectively. 事件嵌入(b )分别表示不使用KG和使用KG的事件嵌入。

    4.4预测评估 (4.4 Prediction Evaluation)

    Performance of KDTCN was benchmarked in three progressive aspects: (i) evaluation of basic TCN architecture, (ii) influence of different model inputs with TCN, and (iii) TCN-based model performance for abrupt changes.


    Basic TCN Architecture:


    Image for post
    Stock trend prediction results over the DJIA index dataset with different basic prediction models.

    Note that all experiments reported in this part are only input with price values.


    TCN greatly outperforms baseline models on the stock trend prediction task. TCN achieves much better performance than either traditional ML models (ARIMA), or deep neural networks (such as LSTM and CNN), indicating that TCN has more obvious advantages in sequence modeling and classification problems.

    在股票趋势预测任务上,TCN大大优于基线模型。 与传统的ML模型(ARIMA)或深度神经网络(例如LSTM和CNN)相比,TCN的性能要好得多,这表明TCN在序列建模和分类问题上具有更明显的优势。

    Different Model Inputs with TCN:


    Image for post
    Stock trend prediction results over the overall DJIA index dataset with different inputs on TCN-based models.

    As seen, WB-TCN and EB-TCN both get better performance than TCN, indicating textual information helps to improve forecasting.


    KDTCN gets both the highest accuracy and F1 scores, and such a result demonstrates the validity of model input integration with structured knowledge, financial news, and price values.


    Model Performance for Abrupt Changes:


    Image for post
    Stock trend prediction results over the local DJIA index dataset of abrupt changes, with different model inputs.

    It was observed that models with knowledge-driven event embedding input, such as KDEB-TCN and KDTCN, can greatly outperform numerical-data-based and textual-data-based models. These comparison results indicate that knowledge-driven models have advantages in reacting to abrupt changes in the stock market swiftly.

    据观察,具有知识驱动的事件嵌入输入的模型(例如KDEB-TCN和KDTCN)可以大大胜过基于数字数据和基于文本数据的模型。 这些比较结果表明,知识驱动的模型在Swift应对股市的突然变化方面具有优势。

    Additional note on how the degree of stock fluctuation is quantified below.


    First, get time intervals of abrupt changes by figuring out the difference of stock fluctuation degree D(fluctuation) between two adjacent stock trading days

    首先,通过计算两个相邻股票交易日之间的股票波动程度D( 波动)的差,得出突变的时间间隔

    Image for post

    where x at time t denotes the stock price value on the stock trading day t. Then the difference of fluctuation degree C is defined by:

    其中,时间t处的x表示股票交易日t的股票价格值。 然后,将波动程度C的差定义为:

    Image for post

    If |Ci | exceeds a certain threshold, it can be considered that the stock price abruptly changes at the ith day.

    如果| Ci | 超过某个阈值,可以认为股价在第i天突然变化。

    4.1.4预测说明 (4.1.4 Explanation for Predictions)

    Explanations for why knowledge-driven events are common sources of abrupt changes to human without ML expertise are accomplished in two aspects: (i) visualizing effects of knowledge-driven events on prediction results with abrupt changes, and (ii) retrieving background facts of knowledge-driven events by linking the events to external KG.

    为何在没有ML专业知识的情况下知识驱动事件是导致人类突然改变的常见原因的解释从两个方面完成:(i) 可视化知识驱动事件对具有突然改变的预测结果的影响,以及(ii) 检索知识的背景事实通过将事件链接到外部KG来驱动事件

    Effect Visualization of Events:


    The prediction result in the figure below is that trend of DJIA index will drop. Note that the bars of the same colour have the same event effect, the height of bars reflects the degree of effects, and the event popularity declines from left to right. Intuitively, events with higher popularity should have greater effects on stock trend prediction with abrupt changes, but not always.

    下图的预测结果是DJIA指数的趋势将下降。 请注意,相同颜色的条具有相同的事件效果,条的高度反映了效果的程度,事件受欢迎程度从左到右下降。 从直觉上讲,具有较高知名度的事件应在突然变化的情况下对股票趋势预测产生更大的影响,但并不总是如此。

    Image for post
    Examples of event effect on stock trend prediction

    Nearly all other events with negative effect are related to these two events, e.g., (British Pound, drops, nearly 5%) and (Northern Ireland, calls for poll on United Ireland).

    几乎所有其他具有负面影响的事件都与这两个事件有关, 例如 ,( 英镑,跌幅接近5% )和( 北爱尔兰,要求对联合爱尔兰进行民意调查 )。

    Although there are also some events have positive effects of predicting stock trend to rise, and have high popularity, i.e., (Rich, Getting, Richer), the total effect is negative. Therefore, abrupt changes of the stock index fluctuation can be viewed as the combined result of effects and popularity of events.

    虽然也有一些事件有预测股票走势上涨的积极影响,并有很高的人气, ,( 富,获取更丰富 ),总的影响是消极的。 因此,可以将股指波动的突然变化视为事件的影响和流行的综合结果。

    Visualization of Event Tuples Linked to KG:


    Image for post
    Illustration of triples in KG linked to events

    First, the event tuples with great effects or high popularity in stock trend movements were searched. Then, backtrack to the news texts containing these events. Finally, retrieve associated KG triples linked to event tuples by entity linking. In the above figure, each event tuple is marked in blue, and entities in it are linked to KG.

    首先,搜索在股票趋势运动中具有巨大影响或很高知名度的事件元组。 然后,回溯到包含这些事件的新闻文本。 最后,通过实体链接检索关联到事件元组的关联的KG三元组。 在上图中,每个事件元组都标记为蓝色,并且其中的实体链接到KG。

    These listed event tuples, such as (Britain, exiting from, EU ), (United Kingdom, votes to leave, European Union), (British Pound, drops, nearly 5%), (J. K. Rowling, leads the charge for, Scottish independence), and (Northern Ireland, calls for poll on United Ireland), are not strongly relevant literally. However, with the linkage to KG, they can establish an association with each other, and strongly related to events of Brexit and EU Referendum. By incorporating explanations of event effects, it could be justified that knowledge-driven events are common sources of abrupt changes.

    这些列出的事件元组,例如( 英国,从欧盟退出 ),( 英国,离开欧盟的票数 ),( 英镑,跌幅近5% ),( JK Rowling负责苏格兰独立) )和( 北爱尔兰,要求对联合爱尔兰进行民意测验)在字面上并不是很重要。 但是,通过与KG的联系,他们可以彼此建立联系,并且与英国退欧和欧盟公投事件密切相关。 通过结合事件影响的解释,可以证明知识驱动的事件是突变的常见来源。

    5.结论 (5. Conclusion)

    The preeminence enjoyed by recurrent networks in sequence modelling may be largely a vestige of history. Until recently, before the introduction of architectural elements such as dilated convolutions and residual connections, convolutional architectures were indeed weaker. The recent academic research has indicated that with these elements, a simple convolutional architecture is more effective across diverse sequence modelling tasks than recurrent architectures such as LSTMs. Due to the comparable clarity and simplicity of TCNs, it was proposed in Bai, S., Kolter, J. and Koltun, V., 2020, that convolutional networks should be regarded as a natural starting point and a powerful toolkit for sequence modelling.

    循环网络在序列建模中享有的优势可能在很大程度上是历史的遗迹。 直到最近,在引入诸如卷积卷积和残差连接之类的体系结构元素之前,卷积体系结构确实还比较弱。 最近的学术研究表明,利用这些元素,简单的卷积架构在各种序列建模任务中比LSTM等递归架构更有效。 由于TCN具有相当的清晰度和简单性, Bai,S.,Kolter,J.和Koltun,V.,2020年提出 卷积网络应该被视为自然的起点和强大的序列建模工具。

    Furthermore, as seen in the application of TCNs in stock trend prediction above, by incorporating news event and knowledge graphs, TCNs could significantly outperform canonical RNNs.


    引用与参考 (Citations and References)

    [1] Hollis, T., Viscardi, A. and Yi, S. (2020). “A Comparison Of Lstms And Attention Mechanisms For Forecasting Financial Time Series”.

    [1] Hollis,T.,Viscardi,A.和Yi,S.(2020)。 用于预测财务时间序列的Lstms和注意机制的比较”

    [2] Qiu J, Wang B, Zhou C. (2020). “Forecasting stock prices with long-short term memory neural network based on attention mechanism”.

    [2] 邱健,王冰,周丙(2020)。 基于注意力机制的长短期记忆神经网络预测股票价格”。

    [3] Bahdanau, Dzmitry, Kyunghyun Cho, and Yoshua Bengio. (2020). “Neural Machine Translation By Jointly Learning To Align And Translate”.

    [3] Bahdanau,Dzmitry,Kyunghyun Cho和Yoshua Bengio。 (2020)。 “通过共同学习对齐和翻译来进行神经机器翻译”

    [4] Bai, S., Kolter, J. and Koltun, V., 2020. “An Empirical Evaluation Of Generic Convolutional And Recurrent Networks For Sequence Modeling”.

    [4] Bai,S.,Kolter,J.和Koltun,V.,2020年。“ 基于通用卷积和递归网络进行序列建模的实证评估”

    [6] Deng, S., Zhang, N., Zhang, W., Chen, J., Pan, J. and Chen, H., 2019. “Knowledge-Driven Stock Trend Prediction and Explanation via Temporal Convolutional Network”.

    [6] 邓S.,张N.,张W.,Chen,J.,Pan,J.和Chen,H.,2019。“ 通过时间卷积网络的知识驱动型股票趋势预测和解释”

    [5] Hao, H., Wang, Y., Xia, Y., Zhao, J. and Shen, F., 2020. “Temporal Convolutional Attention-Based Network For Sequence Modeling”.

    [5] Hao,H.,Wang,Y.,Xia,Y.,Zhao,J.和Shen,F.,2020。“ 基于时序卷积注意力的序列建模网络”

    翻译自: https://towardsdatascience.com/farewell-rnns-welcome-tcns-dd76674707c8


  • 确保编译pycaffe,即python接口输入root_folder / excitationBP-RNNs ,使用python笔记本运行demo.ipynb 。 它将向您展示如何计算视频的时空显着性图,并在演示视频中包括示例。 有关在服务器上远程运行python...
  • Training rnns as fast as cnns论文内容。作者LeiTao,ZhangYu等人。
  • RNNs

    千次阅读 2016-09-22 10:11:50
    RNNs是一个相对较简单的RNNs,是由两个RNNs上下叠加在一起组成的。输出由这两个RNNs的隐藏层的状态决定的。如下图所示:  Deep(Bidirectional)RNNs[4]   Deep(Bidirectional)RNNs与Bidirectional ...


    循环神经网络(RNN, Recurrent Neural Networks)介绍


      循环神经网络(Recurrent Neural Networks,RNNs)已经在众多自然语言处理(Natural Language Processing, NLP)中取得了巨大成功以及广泛应用。但是,目前网上与RNNs有关的学习资料很少,因此该系列便是介绍RNNs的原理以及如何实现。主要分成以下几个部分对RNNs进行介绍: 
    1. RNNs的基本介绍以及一些常见的RNNs(本文内容); 
    2. 详细介绍RNNs中一些经常使用的训练算法,如Back Propagation Through Time(BPTT)、Real-time Recurrent Learning(RTRL)、Extended Kalman Filter(EKF)等学习算法,以及梯度消失问题(vanishing gradient problem) 
    3. 详细介绍Long Short-Term Memory(LSTM,长短时记忆网络); 
    4. 详细介绍Clockwork RNNs(CW-RNNs,时钟频率驱动循环神经网络); 
    5. 基于Python和Theano对RNNs进行实现,包括一些常见的RNNs模型。

      不同于传统的FNNs(Feed-forward Neural Networks,前向反馈神经网络),RNNs引入了定向循环,能够处理那些输入之间前后关联的问题。定向循环结构如下图所示: 

      该tutorial默认读者已经熟悉了基本的神经网络模型。如果不熟悉,可以点击:Implementing A Neural Network From Scratch进行学习。



    From Nature 
      RNNs包含输入单元(Input units),输入集标记为 {x0,x1,...,xt,xt+1,...} ,而输出单元(Output units)的输出集则被标记为 {y0,y1,...,yt,yt+1.,..} 。RNNs还包含隐藏单元(Hidden units),我们将其输出集标记为 {s0,s1,...,st,st+1,...} ,这些隐藏单元完成了最为主要的工作。你会发现,在图中:有一条单向流动的信息流是从输入单元到达隐藏单元的,与此同时另一条单向流动的信息流从隐藏单元到达输出单元。在某些情况下,RNNs会打破后者的限制,引导信息从输出单元返回隐藏单元,这些被称为“Back Projections”,并且隐藏层的输入还包括上一隐藏层的状态,即隐藏层内的节点可以自连也可以互连。 

    • xt 表示第 t,t=1,2,3... 步(step)的输入。比如, x1 为第二个词的one-hot向量(根据上图, x0 为第一个词); 
      PS:使用计算机对自然语言进行处理,便需要将自然语言处理成为机器能够识别的符号,加上在机器学习过程中,需要将其进行数值化。而词是自然语言理解与处理的基础,因此需要对词进行数值化,词向量(Word Representation,Word embeding)[1]便是一种可行又有效的方法。何为词向量,即使用一个指定长度的实数向量v来表示一个词。有一种种最简单的表示方法,就是使用One-hot vector表示单词,即根据单词的数量|V|生成一个|V| * 1的向量,当某一位为一的时候其他位都为零,然后这个向量就代表一个单词。缺点也很明显: 
      1. 由于向量长度是根据单词个数来的,如果有新词出现,这个向量还得增加,麻烦!(Impossible to keep up to date);
      2. 主观性太强(subjective)
      3. 这么多单词,还得人工打labor并且adapt,想想就恐
      4. 最不能忍受的一点便是很难计算单词之间的相似性。 
    • st 为隐藏层的第 t 步的状态,它是网络的记忆单元。  st 根据当前输入层的输出与上一步隐藏层的状态进行计算。 st=f(Uxt+Wst1) ,其中 f 一般是非线性的激活函数,如tanhReLU,在计算 s0 时,即第一个单词的隐藏层状态,需要用到 s1 ,但是其并不存在,在实现中一般置为0向量;
    • ot 是第 t 步的输出,如下个单词的向量表示, ot=softmax(Vst)
    • 你可以认为隐藏层状态 st 是网络的记忆单元.  st 包含了前面所有步的隐藏层状态。而输出层的输出 ot 只与当前步的 st 有关,在实践中,为了降低网络的复杂度,往往 st 只包含前面若干步而不是所有步的隐藏层状态;
    • 在传统神经网络中,每一个网络层的参数是不共享的。而在RNNs中,每输入一步,每一层各自都共享参数 U,V,W 。其反应者RNNs中的每一步都在做相同的事,只是输入不同,因此大大地降低了网络中需要学习的参数;这里并没有说清楚,解释一下,传统神经网络的参数是不共享的,并不是表示对于每个输入有不同的参数,而是将RNN是进行展开,这样变成了多层的网络,如果这是一个多层的传统神经网络,那么 xt st 之间的U矩阵与 xt+1 st+1 之间的 U 是不同的,而RNNs中的却是一样的,同理对于 s s 层之间的 W s 层与 o 层之间的 V 也是一样的。
    • 上图中每一步都会有输出,但是每一步都要有输出并不是必须的。比如,我们需要预测一条语句所表达的情绪,我们仅仅需要关系最后一个单词输入后的输出,而不需要知道每个单词输入后的输出。同理,每步都需要输入也不是必须的。RNNs的关键之处在于隐藏层,隐藏层能够捕捉序列的信息。


      RNNs已经被在实践中证明对NLP是非常成功的。如词向量表达、语句合法性检查、词性标注等。在RNNs中,目前使用最广泛最成功的模型便是LSTMs(Long Short-Term Memory,长短时记忆模型)模型,该模型通常比vanilla RNNs能够更好地对长短时依赖进行表达,该模型相对于一般的RNNs,只是在隐藏层做了手脚。对于LSTMs,后面会进行详细地介绍。下面对RNNs在NLP中的应用进行简单的介绍。

    语言模型与文本生成(Language Modeling and Generating Text)

      给你一个单词序列,我们需要根据前面的单词预测每一个单词的可能性。语言模型能够一个语句正确的可能性,这是机器翻译的一部分,往往可能性越大,语句越正确。另一种应用便是使用生成模型预测下一个单词的概率,从而生成新的文本根据输出概率的采样。语言模型中,典型的输入是单词序列中每个单词的词向量(如 One-hot vector),输出时预测的单词序列。当在对网络进行训练时,如果 otxt+1 ,那么第 t 步的输出便是下一步的输入。 

    机器翻译(Machine Translation)

    RNN for Machine Translation. Image Source 

    语音识别(Speech Recognition)


    图像描述生成 (Generating Image Descriptions)

      和卷积神经网络(convolutional Neural Networks, CNNs)一样,RNNs已经在对无标图像描述自动生成中得到应用。将CNNs与RNNs结合进行图像描述自动生成。这是一个非常神奇的研究与应用。该组合模型能够根据图像的特征生成描述。如下图所示: 
      图像描述生成中的深度视觉语义对比. Image Source


      对于RNN是的训练和对传统的ANN训练一样。同样使用BP误差反向传播算法,不过有一点区别。如果将RNNs进行网络展开,那么参数 W,U,V 是共享的,而传统神经网络却不是的。并且在使用梯度下降算法中,每一步的输出不仅依赖当前步的网络,并且还以来前面若干步网络的状态。比如,在 t=4 时,我们还需要向后传递三步,已经后面的三步都需要加上各种的梯度。该学习算法称为Backpropagation Through Time (BPTT)。后面会对BPTT进行详细的介绍。需要意识到的是,在vanilla RNNs训练中,BPTT无法解决长时依赖问题(即当前的输出与前面很长的一段序列有关,一般超过十步就无能为力了),因为BPTT会带来所谓的梯度消失或梯度爆炸问题(the vanishing/exploding gradient problem)。当然,有很多方法去解决这个问题,如LSTMs便是专门应对这种问题的。


      这些年,研究者们已经提出了多钟复杂的RNNs去改进vanilla RNN模型的缺点。下面是目前常见的一些RNNs模型,后面会对其中使用比较广泛的进行详细讲解,在这里进行简单的概述。

    Simple RNNs(SRNs)[2]

      SRNs是RNNs的一种特例,它是一个三层网络,并且在隐藏层增加了上下文单元,下图中的 y 便是隐藏层, u 便是上下文单元。上下文单元节点与隐藏层中的节点的连接是固定(谁与谁连接)的,并且权值也是固定的(值是多少),其实是一个上下文节点与隐藏层节点一一对应,并且值是确定的。在每一步中,使用标准的前向反馈进行传播,然后使用学习算法进行学习。上下文每一个节点保存其连接的隐藏层节点的上一步的输出,即保存上文,并作用于当前步对应的隐藏层节点的状态,即隐藏层的输入由输入层的输出与上一步的自己的状态所决定的。因此SRNs能够解决标准的多层感知机(MLP)无法解决的对序列数据进行预测的任务。 

    Bidirectional RNNs[3]

      Bidirectional RNNs(双向网络)的改进之处便是,假设当前的输出(第 t 步的输出)不仅仅与前面的序列有关,并且还与后面的序列有关。例如:预测一个语句中缺失的词语那么就需要根据上下文来进行预测。Bidirectional RNNs是一个相对较简单的RNNs,是由两个RNNs上下叠加在一起组成的。输出由这两个RNNs的隐藏层的状态决定的。如下图所示: 


      Deep(Bidirectional)RNNs与Bidirectional RNNs相似,只是对于每一步的输入有多层网络。这样,该网络便有更强大的表达与学习能力,但是复杂性也提高了,同时需要更多的训练数据。Deep(Bidirectional)RNNs的结构如下图所示: 

    Echo State Networks[5]


    • 它的核心结构时一个随机生成、且保持不变的储备池(Reservoir),储备池是大规模的、随机生成的、稀疏连接(SD通常保持1%~5%,SD表示储备池中互相连接的神经元占总的神经元个数N的比例)的循环结构;
    • 其储备池到输出层的权值矩阵是唯一需要调整的部分;
    • 简单的线性回归就可完成网络的训练。

      从结构上讲,ESNs是一种特殊类型的循环神经网络,其基本思想是:使用大规模随机连接的循环网络取代经典神经网络中的中间层,从而简化网络的训练过程。因此ESNs的关键是中间的储备池。网络中的参数包括: W 为储备池中节点的连接权值矩阵, Win 为输入层到储备池之间的连接权值矩阵,表明储备池中的神经元之间是连接的, Wback 为输出层到储备池之间的反馈连接权值矩阵,表明储备池会有输出层来的反馈, Wout 为输入层、储备池、输出层到输出层的连接权值矩阵,表明输出层不仅与储备池连接,还与输入层和自己连接。 Woutbias 表示输出层的偏置项。 
      对于ESNs,关键是储备池的四个参数,如储备池内部连接权谱半径SR( SR=λmax=max{|W|} ,只有SR <1时,ESNs才能具有回声状态属性)、储备池规模N(即储备池中神经元的个数)、储备池输入单元尺度IS(IS为储备池的输入信号连接到储备池内部神经元之前需要相乘的一个尺度因子)、储备池稀疏程度SD(即为储备池中互相连接的神经元个数占储备池神经元总个数的比例)。对于IS,如果需要处理的任务的非线性越强,那么输入单元尺度越大。该原则的本质就是通过输入单元尺度IS,将输入变换到神经元激活函数相应的范围(神经元激活函数的不同输入范围,其非线性程度不同)。 

    Gated Recurrent Unit Recurrent Neural Networks[6]

      GRUs也是一般的RNNs的改良版本,主要是从以下两个方面进行改进。一是,序列中不同的位置处的单词(已单词举例)对当前的隐藏层的状态的影响不同,越前面的影响越小,即每个前面状态对当前的影响进行了距离加权,距离越远,权值越小。二是,在产生误差error时,误差可能是由某一个或者几个单词而引发的,所以应当仅仅对对应的单词weight进行更新。GRUs的结构如下图所示。GRUs首先根据当前输入单词向量word vector已经前一个隐藏层的状态hidden state计算出update gate和reset gate。再根据reset gate、当前word vector以及前一个hidden state计算新的记忆单元内容(new memory content)。当reset gate为1的时候,new memory content忽略之前的所有memory content,最终的memory是之前的hidden state与new memory content的结合。 

    LSTM Netwoorks[7]

      LSTMs与GRUs类似,目前非常流行。它与一般的RNNs结构本质上并没有什么不同,只是使用了不同的函数去去计算隐藏层的状态。在LSTMs中,i结构被称为cells,可以把cells看作是黑盒用以保存当前输入 xt 之前的保存的状态 ht1 ,这些cells更加一定的条件决定哪些cell抑制哪些cell兴奋。它们结合前面的状态、当前的记忆与当前的输入。已经证明,该网络结构在对长序列依赖问题中非常有效。LSTMs的网络结构如下图所示。对于LSTMs的学习,参见 this post has an excellent explanation 


    • new memory的计算方法都是根据之前的state及input进行计算,但是GRUs中有一个reset gate控制之前state的进入量,而在LSTMs里没有这个gate;
    • 产生新的state的方式不同,LSTMs有两个不同的gate,分别是forget gate (f gate)和input gate(i gate),而GRUs只有一个update gate(z gate);
    • LSTMs对新产生的state又一个output gate(o gate)可以调节大小,而GRUs直接输出无任何调节。

    Clockwork RNNs(CW-RNNs)[9]

      CW-RNNs是较新的一种RNNs模型,其论文发表于2014年Beijing ICML。在原文[8]中作者表示其效果较SRN与LSTMs都好。 
       CW-RNNs与SRNs网络结构类似,也包括输入层(Input)、隐藏层(Hidden)、输出层(Output),它们之间也有向前连接,输入层到隐藏层的连接,隐藏层到输出层的连接。但是与SRN不同的是,隐藏层中的神经元会被划分为若干个组,设为 g ,每一组中的神经元个数相同,设为 k ,并为每一个组分配一个时钟周期 Ti{T1,T2,...,Tg} ,每一个组中的所有神经元都是全连接,但是组 j 到组 i 的循环连接则需要满足 Tj 大于 Ti 。如下图所示,将这些组按照时钟周期递增从左到右进行排序,即 T1<T2<...<Tg ,那么连接便是从右到左。例如:隐藏层共有256个节点,分为四组,周期分别是[1,2,4,8],那么每个隐藏层组256/4=64个节点,第一组隐藏层与隐藏层的连接矩阵为64*64的矩阵,第二层的矩阵则为64*128矩阵,第三组为64*(3*64)=64*192矩阵,第四组为64*(4*64)=64*256矩阵。这就解释了上一段的后面部分,速度慢的组连到速度快的组,反之则不成立。 



      其中, W 为隐藏层神经元的自连接矩阵, Win 为输入层到隐藏层的连接权值矩阵, Wout 是隐藏层到输出层的连接权值矩阵 , xt 是第 t 步的输入, st1 为第 t1 步隐藏层的输出, st 为第 t 步隐藏层的输出, ot 为第 t 步的输出, fs 为隐藏层的激活函数, fo 为输出层的激活函数。 
      与传统的RNNs不同的是,在第 t 步时,只有那些满足 (tmodTi)=0 的隐藏层组才会执行。并且每一隐藏层组的周期 {T1,T2,...,Tg} 都可以是任意的。原文中是选择指数序列作为它们的周期,即 Ti=2i1i[1,...,g] 。 
      因此 W Win 将被划分为 g 个块。如下: 


    其中 W 是一个上三角矩阵,每一个组行 Wi 被划分为列向量 {W1i,...,Wii,0(i+1)i,...,0gi}T Wji,j[1,...,g] 表示第i个组到第j个组的连接权值矩阵。在每一步中, W Win 只有部分组行处于执行状态,其它的为0: 


      为了使表达不混淆,将 Win 写成 Win 。并且执行的组所对应的 o 才会有输出。处于非执行状态下的隐藏层组仍保留着上一步的状态。下图是含五个隐藏层组在 t=6 时的计算图: 
      上图中,绿色实线是预测结果,蓝色散点是真实结果。每个模型都是对前半部分进行学习,然后预测后半部分。LSTMs模型类似滑动平均,但是CW-RNNs效果更好。其中三个模型的输入层、隐藏层、输出层的节点数都相同,并且只有一个隐藏层,权值都使用均值为0,标准差为0.1的高斯分布进行初始化,隐藏层的初始状态都为0,每一个模型都使用 Nesterov-style 
    momentum SGD(Stochastic Gradient Descent,随机梯度下降算法)[10]




    • 详细介绍RNNs中一些经常使用的训练算法,如Back Propagation Through Time(BPTT)、Real-time Recurrent Learning(RTRL)、Extended Kalman Filter(EKF)等学习算法,以及梯度消失问题(vanishing gradient problem)
    • 详细介绍Long Short-Term Memory(LSTM,长短时记忆网络);
    • 详细介绍Clockwork RNNs(CW-RNNs,时钟频率驱动循环神经网络);
    • 基于Python和Theano对RNNs进行实现,包括一些常见的RNNs模型;

      本系列将实现一个基于循环神经网络的语言模型(recurrent neural network based language model)。该实现包含两个方面:一是能够得到任意语句在现实中成立的得分,其提供了判断语法与语义的正确性的度量方式。该模型是机器翻译中的典型应用。二是模型能够产生新的文本,这是一个非常棒的应用。比如,对莎士比亚的文章进行训练,能够产生一个新的类似莎士比亚的文本,目前,这个有趣的想法已经被Andrew Karpathy基于RNNs的字符级别的语言模型实现了。




    [1] Hinton G E. Learning Distributed Representations of Concepts[C]. Proceedings of the 8th Annual Conference of the Cognitive Science Society. 1986, 1: 12. 
    [2] Elman, J. L. Finding structure in time. CRL Technical Report 8801, Center for Research in Language, University 
    of California, San Diego, 1988. 
    [3] Schuster M, Paliwal K K. Bidirectional recurrent neural networks[J]. Signal Processing, IEEE Transactions on, 1997, 45(11): 2673-2681. 
    [4] Graves A, Mohamed A R, Hinton G. Speech Recognition with Deep Recurrent Neural Networks[J]. Acoustics Speech & Signal Processing . icassp. international Conference on, 2013:6645 - 6649. 
    [5] Jaeger H, Haas H. Harnessing nonlinearity: Predicting chaotic systems and saving energy in wireless communication[J]. Science, 2004, 304(5667): 78-80. 
    [6] Cho K, Van Merrienboer B, Gulcehre C, et al. Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation[J]. Eprint Arxiv, 2014. 
    [7] Hochreiter S, Schmidhuber J. Long short-term memory.[J]. Neural Computation, 1997, 9(8):1735-1780. 
    [8] Chung J, Gulcehre C, Cho K H, et al. Empirical evaluation of gated recurrent neural networks on sequence modeling[J]. arXiv preprint arXiv:1412.3555, 2014. 
    [9] Jan Koutnik, Klaus Greff, Faustino Gomez, Juergen Schmidhuber. A Clockwork RNN[J]. Proceedings of The 31st International Conference on Machine Learning, pp. 1863–1871, 2014. 
    [10] Sutskever, Ilya, Martens, James, Dahl, George E., and Hinton, Geoffrey E. On the importance of initialization and momentum in deep learning. In Dasgupta, Sanjoy and Mcallester, David (eds.), Proceedings of the 30th International Conference on Machine Learning (ICML-13), volume 28, pp. 1139–1147.

  • Zoneout Regularizing RNNs by Randomly Preserving Hidden Activations
  • 原始题目:Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention 中文翻译:Transformers 是RNNs: 带线性Attention的快速自回归Transformers 发表时间:2020 年 6 月 29 日 平台:ICML ...

    原始题目:Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention

    中文翻译:Transformers 是RNNs: 带线性Attention的快速自回归Transformers

    发表时间:2020 年 6 月 29 日

    平台:ICML 2020

    来源:Idiap Research Institute, Switzerland


    开源代码:GitHub - idiap/fast-transformers: Pytorch library for fast transformer implementations


            Transformers 在一些任务中取得了显著的性能,但由于其二次复杂度(相对于输入长度),对于非常长的序列,它们的速度会非常慢。为了解决这一限制,我们将 self-attention 表示为核特征图的线性点积,并利用矩阵乘积的结合性将复杂度从O(N^{2})降低到O (N),其中N为序列长度。我们展示了这种公式允许迭代实现,极大地加速了自回归Transformers ,并揭示了它们与循环神经网络的关系。我们的线性Transformers 实现了与普通Transformers 相似的性能,并且在非常长的序列的自回归预测方面快了4000倍。

    5. 结论

            在这项工作中,我们提出了一种线性Transformer模型,它可以显著降低原始Transformer 的内存和计算成本。特别地,通过利用矩阵乘积的结合性,我们能够计算出时间和内存上的 self-attention,它们与序列长度成线性比例。我们表明,我们的模型可以使用因果掩蔽( masking),并仍然保留其线性渐近复杂度。最后,我们将Transformer 模型表示为一个循环神经网络,这使我们能够更快地对自回归任务进行推理。

            这一特性为未来在 RNNs和 Transformers 中存储和检索信息的研究开辟了许多方向。另一个有待探索的研究方向是线性 attention 特征图的选择。例如,用随机傅里叶特征逼近RBF核可以允许我们使用 用softmax attention预训练的模型。

    1. 引言

            Transformers 模型最初是由Vaswani等人(2017)在神经机器翻译的背景下引入的(Sutskever等人,2014;Bahdanau等人,2015年),并在处理自然语言(Devlin等人,2019年)、音频(Sperber等人,2018年)和图像(Parmar等人,2019年)的各种任务上展示了令人印象深刻的结果。除了有充分监督的任务外,当用自回归(Radford et al., 2018; 2019) 或掩码语言建模目标 (Devlin et al., 2019; Yang et al., 2019; Song et al., 2019; Liu et al., 2020)进行预训练时,Transformers 也能有效地将知识转移任务中,这些任务是有限制的或无监督的。

            然而,这些好处往往伴随着非常高的计算和内存成本。这种瓶颈主要是由于self-attention的全局感受野以二次空间和时间复杂度O(N^{2})处理N个输入的上下文,导致Transformers 在实际应用中训练缓慢,其上下文是受限制的这破坏了时间连贯性,并阻碍了长期依赖的捕获。Dai等人(2019)通过关注来自以前上下文的记忆来解决后者,尽管以牺牲计算效率为代价。

     后者这里指的是 破坏时间的连贯性

            最近,研究人员关注在不牺牲效率的前提下增加上下文长度的方法上。为此,Child等人(2019)引入了  attention 矩阵的稀疏分解,将 self-attention复杂度降低到O(N\sqrt{N})。Kitaev等人(2020)使用位置敏感哈希( locality sensitive hashing)进一步将复杂性降低到O (N logN)。这使得长序列的缩放(scaling)成为可能。尽管上述模型可以有效地训练大序列,但它们不能加速自回归推理。

            在本文中,我们引入了线性 transformer 模型,显著减少内存占用,并与上下文长度线性缩放。我们通过使用基于核的 self-attention 公式和矩阵乘积的关联属性来计算self-attention权重(3.2节)来实现这一点。使用我们的线性公式,我们也用线性复杂性和常数内存来表示因果掩蔽(3.3)。这揭示了transformers和 RNNs之间的关系,这使我们能够更快地执行自回归推断,速度快几个数量级(3.4)。

            我们对图像生成和自动语音识别的评估表明, linear transformer 可以达到 transformer 的性能水平,同时在推理过程中速度提高3个数量级。

    2. 相关工作

            在本节中,我们提供了寻求解决 transformers 大内存和计算需求的最相关的工作的概述。此外,还讨论了对 transformers 模型的核心部件—— self-attention 进行理论分析的方法。最后,我们提出了另一项工作,旨在缓解 attention 计算中的softmax瓶颈。

    2.1. 高效Transformers

            现有的研究试图通过权重剪枝(weight pruning) (Michel等人,2019年)、权重因数分解(weight factorization)(Lan等人,2020年)、权重量化(Zafrir等人,2019年)或知识蒸馏来提高transformers 的内存效率。Clark等人(2020)提出了一种新的预训练目标,称为替换 token 检测,它的采样效率(sample efficient)更高,减少了整体计算。Lample等人(2019)使用 product-key attention 来增加任何层的容量,而计算开销忽略不计。

            使用这些方法减少内存或计算需求,导致训练或推断时间加速,但从根本上说,时间复杂度仍然是二次的序列长度,这阻碍了扩展( scaling)到长序列。相反,我们表明,我们的方法在理论上(3.2)和经验上(4.1)都降低了transformers 的空间和时间复杂度。

            另一项研究旨在增加transformers 中 self-attention 的“上下文”( "context")。上下文指的是序列中用于计算 self-attention 的最大部分。Dai等人(2019)推出了Transformer-XL,通过学习固定长度上下文以外的依赖性,而不破坏时间连续性,实现了最先进的语言建模。但是,在内存中维护以前的上下文会带来大量额外的计算成本。与此相反,Sukhbaatar等人(2019)通过学习每个 attention head 的最优attention 跨度(attention span),显著延长了上下文长度,同时保持对内存占用和计算时间的控制。注意,两种方法都具有与普通模型相同的渐近复杂度。相比之下,我们改善了 self-attention的渐近复杂度,这让我们可以使用更大的 context。

            与我们的模型更相关的是Child等人(2019)和Kitaev等人(2020)的作品。前者(Child et al., 2019)引入了 attention 矩阵的稀疏分解( sparse factorizations),降低了二次复杂度到O(N\sqrt{N})的整体复杂度,用于长序列的生成式建模。最近,Kitaev等人(2020)提出了Reformer。该方法通过使用位置敏感哈希( locality-sensitive hashing (LSH))来减少点积,进一步将复杂度降低到O (N logN)。注意,为了能够使用LSH,  对于 attention,Reformer将 keys 约束为与queries 相同。因此,此方法不能用于解码  keys需要与 queries 不同的任务。相比之下, linear transformers 对 queries 和 keys 没有限制,并且与序列长度线性比例( scale)。此外,它们可以用于在自回归任务中执行推理,速度快三个数量级,在验证复杂度方面达到相当的性能。

    2.2. 理解 Self-Attention

            从理论角度更好地理解 self-attention的努力很少。蔡等人(2019)提出了一种基于内核的transformers  attention公式,将 attention 视为在输入上应用内核平滑器( kernel smoother),内核分数是输入之间的相似性。这个公式提供了一种更好的方式来理解注意力组件和整合位置嵌入。相比之下,我们使用内核公式来加快 self-attention 的计算并降低其计算复杂度。此外,我们观察到,如果将具有正相似性分数的内核应用于queries和 keys,则线性 attention 通常会收敛。
            最近,Cordonnier 等人(2020)提供了理论证明和经验证据,证明具有足够数量的head的 multi-head selfattention 可以表达任何卷积层。在这里,我们改为展示使用自回归目标训练的 self-attention层 可以看作是循环神经网络,并且这种观察可以用来显著加快自回归 transformer 模型的推理时间。

    2.3. 线性化softmax

            多年来,softmax 一直是训练具有大量类别的分类模型的瓶颈(Goodman, 2001; Morin & Bengio, 2005; Mnih & Hinton, 2009)。 最近的工作 (Blanc & Rendle, 2017; Rawat et al., 2019) 使用特征图的线性点积来逼近 softmax,以通过采样加速训练。 受这些工作的启发,我们将 transformers 中的 softmax  attention 线性化。 在这项工作的同时,Shen 等人(2020 年)探索了将线性 attention 用于图像中目标检测的任务。 相比之下,我们不仅将 attention 计算线性化,而且还开发了一个具有线性复杂度和常数内存的自回归变换器模型,用于推理和训练。 此外,我们表明,通过内核的镜头,每个 transformer 都可以看作是一个循环神经网络。

    3.  Linear Transformers

            在本节中,我们将我们提出的 linear transformer 公式化。 我们提出,将注意力从传统的 softmax 注意力转移到基于特征图的点积注意力会导致更好的时间和空间复杂度以及可以在线性时间内执行序列生成的因果模型,类似于递归神经网络。
            最初,在第 3.1 节中,我们介绍了 (Vaswani et al., 2017) 中介绍的 Transformer 架构的公式。 随后,在第 3.2 节和第 3.3 节中,我们提出了 linear transformer,最后,在第 3.4 节中,我们将 transformer重写为循环神经网络。

    3.1. Transformers

            x\in \mathbb{R}^{N\times F},序列长度=N,特征维度 = F。一个 Transformer 是一个函数 T:\mathbb{R}^{N\times F}\rightarrow \mathbb{R}^{N\times F} ,通过 L 个 transformer 层 T_{1}(·), . . . , T_{L}(·) 的组成定义,如下:

            函数 f_{l}(·) 独立于其他特征变换每个特征,通常用一个小型的两层前馈网络实现。 A_{l}(·) 是 self -attention函数,是  transformer 中唯一跨序列起作用的部分。

    只有 self -attention 涉及到了跨序列变换。

             self-attention 函数 A_{l}(·) 为每个位置计算所有其他位置的特征表示的加权平均值,其权重与表示之间的相似性分数成正比。 形式上,输入序列 x\in \mathbb{R}^{N\times F} 由三个矩阵 W_{Q} \in \mathbb{R}^{F\times D}W_{K} \in \mathbb{R}^{F\times D}W_{V} \in \mathbb{R}^{F\times M} 投影到相应的表示 Q、K 和 V。 所有位置的输出,A_{l}(x) = V ',计算如下:

     Q: NxD; K^T: DxN -> NxN  x   V: NxM  -> NxM

            请注意,在前面的等式中,softmax 函数 行级别(rowwise) 应用于 QK^{T} 。 按照通用术语,Q、K 和 V 分别称为 "queries"、 "keys" 和"values"。

            方程2实现了一种特殊形式的 self-attention,称为 softmax attention,其中相似度分数是一个 query 和一个 key 之间点积的指数。假设矩阵下标为i,将返回矩阵的第i行作为一个向量,我们可以对任意相似函数写出如下广义 attention 方程:


     3.2. Linearized Attention 线性化的Attention 

            方程2中 attention 的定义是通用的,可以用来定义其他几种 attention 实现,如多项式(polynomial)attention或 RBF kernel attention (Tsai et al., 2019)。请注意,为了让方程3定义一个 attention 函数,我们需要对sim(·) 施加的唯一约束是非负的。这包括所有的kernels k (x, y): R^{2\times F} \rightarrow \mathbb{R}_{+}

            给这样一个特征表示 \phi (x)的一个核,我们可以定义公式2 如下:



             注意,特征映射\phi (\cdot )被行应用于矩阵Q和K。

            由式2可知,softmax  attention 尺度的计算代价为O(N^{2}),其中N表示序列长度。对于内存需求也是如此,因为必须存储完整的 attention 矩阵来计算关于 queries、 keys 和 values 的梯度。相比之下,由公式5提出的 linear transformer 的时间和内存复杂度为O(N),因为我们可以一次计算\sum_{j=1}^{N}\phi (K_{j})V_{j}^{T}\sum_{j=1}^{N}\phi (K_{j}),并在每次 query 时重新使用它们。

    3.2.1 特征图和计算成本

            对于softmax attention,乘法和加法的总成本规模为O (n^{2}max (D, M)),其中是 queries和 keys的维度是D,values 的维度是M。相反,对于 linear attention,我们首先计算C维的特征图。随后,计算新的 values 需要O(NCM )加法和乘法。

            前面的分析没有考虑到 kernel 和 feature function 的选择。请注意,对应于指数核的特征函数是无限维的,这使得精确softmax attention的线性化不可行。另一方面,多项式核,例如,具有精确的有限维特征图已被证明与指数核或RBF核同样工作良好(Tsai等人,2019)。线性化2次多项式 transformer 的计算代价为O (ND^2M)。当 N>D^{2}时,这使得计算复杂度有利。注意,这在实践中是正确的,因为我们希望能够处理具有数万个元素的序列。


            其中 elu(·) 表示指数线性单元(Clevert et al., 2015)激活函数。我们更喜欢 elu(·) 而不是relu(·),以避免在 x 为负时将梯度设置为0。这个特征映射产生了一个需要O (NDM)乘法和加法的 attention 函数。在我们的实验部分中,我们展示了方程7的特征映射与全 transformer 的性能相当,同时显著降低了计算和内存需求。

    3.3. Causal Masking 因果掩码

             transformer 架构可以通过掩码 attention 计算,使第 i 个位置只受 位置 j 的影响,当且仅当

    j <= i , 即某个位置不受后续位置的影响,从而可以有效地训练自回归模型。公式化,这个因果掩码将方程3变为如下:

             按照§3.2的推理,我们将被掩码的 attention 线性化,如下所述,

             通过如下引入S_{i}Z_{i} :

             简化公式9 为:

            注意,S_{i}Z_{i}可以在常数时间内从S_{i-1}Z_{i-1}计算出来,因此使得带有因果掩码的 linear transformers 的计算复杂度与序列长度成线性关系。


            在任何深度学习框架中,方程12的简单实现都需要存储所有中间值S_{i},以便计算梯度。这会使内存消耗增加 max (D, M) 倍; 从而阻碍了 causal linear attention 对较长序列或较深模型的适用性。为了解决这个问题,我们推导 公式9中分子的梯度作为累加( cumulative)和。这使我们能够计算 linear time  和 constant memory 中 causal linear attention 的前向和后向传播。补充材料中提供了详细的推导过程。

            给定分子 \bar{V}_{i} 和标量损失函数对分子 的梯度\triangledown _{\bar{V}_{i}}\pounds,我们推导 如下:

            公式 9,13 -15 中的累积和项是在线性时间内计算的,并且相对于序列长度需要 constant memory 。这导致了给定的C维特征图,一个算法的计算复杂度 O(NCM) 和内存O(N max (C, M)) 。算法 1 给出了分子前后传递的伪代码实现。

     3.3.2. TRAINING AND INFERENCE 训练和推理

            当训练一个自回归 transformer 模型时,完整的 ground truth 序列是可用的。这使得 方程1 的f_{l}(\cdot )和注意力计算都可以实现分层并行。因此,transformer 的训练比循环神经网络更高效。另一方面,在推理期间,时间步(timestep) i  的输出是 timestep i + 1 的输入。这使得自回归模型不可能并行化。此外,transformer 的每步时间成本不是恒定的; 相反,它按照当前序列长度的平方进行缩放,因为必须计算 先前所有时间步的attention。

            我们提出的 linear transformer 模型结合了两者的优点。当涉及到训练时,计算可以被并行化,并充分利用gpu或其他加速器。当涉及到推理时,每次预测的成本和内存对于我们的模型是恒定的。这意味着我们可以简单地存储矩阵作为一个内部状态,并像循环神经网络一样在每一步更新它。这导致推理速度比其他 transformer  模型快数千倍

    3.4. Transformers are RNNs

            在文献中,transformer 模型被认为是一种完全不同于递归神经网络的方法。然而,从§3.3中的因果掩码公式和上一节的讨论,很明显,任何带有因果掩码的 transformer 层可以被写为一个模型,给定输入,修改内部状态,然后预测输出,即一个循环神经网络(RNN)。请注意,与 通用Transformers( Universal Transformers)(Dehghani et al.2018)相比,我们考虑的是时间而不是深度的循环。

            在下面的方程中,我们将方程 1 的transformer 层公式化为递归神经网络。得到的RNN有两个隐藏状态,即注意力记忆( attention memory)s  和标准化( normalizer)记忆 z 。我们使用下标表示循环中的时间步。

            其中,x_{i} , y_{i} 分别表示表示某一 transformer 层的第 i 个输入和第 个输出。请注意,我们的公式没有对特征函数施加任何约束,它可以用于表示任何 transformer 模型,在理论上甚至是使用 softmax attention 的 transformer  模型。这个公式是朝着更好地理解 transformer 和流行的循环网络(Hochreiter & Schmidhuber, 1997) 以及用于存储和检索信息的过程之间的关系迈出的第一步。

    4. 实验


  • Edward Grefenstette - Beyond Sequence to Sequence with Augmented RNNs
  • PyTorch 的 RNNs 实现

    2021-03-03 15:21:26
    在进入神经网络本身之前,让我向您展示两类常用循环神经网络(RNNs)解决的问题。 时间序列预测 第一个例子是时间序列预测问题,我们用现有的数值序列(蓝色)来训练神经网络,以便预测未来的时间步长(红色)。 如果我们...

    欢迎关注 “小白玩转Python”,发现更多 “有趣”

    大多数类型的神经网络都是建立在对样本进行预测的基础上的,这些样本的目标都是神经网络训练过的。一个典型的例子是 MNIST 数据集。像 MLP 这样的常规神经网络知道有10个数字,它只是基于这些数字才能做出预测,即使图像与网络训练的图像非常不同。



    剑桥大学出版社(Cambridge University Press)将序列定义为“事物或事件相继发生的顺序”,或者,最重要的是,“一系列相关的事物或事件”。为了将这个定义调整到 Deep Learning 的范围内,sequence 是一组包含可训练上下文的数据,删除一些元素可能会使它变得无用。












    RNN 配置

    正如我们所看到的,RNNs 从序列中提取信息以提高其预测能力。


    一个简单的 RNN 图表示在上面。绿色节点允许输入一些 x^t,并输出一些值 h^t,这些值也会反馈给包含从输入收集的信息的节点。无论什么样的模式输入到节点,节点都会学习它,并保存这些信息以备下一次输入。上标 t 代表时间步长。



    Many-to-one 配置是当我们在不同的时间步骤中输入多个输入以获得一个输出,这可能是在一个电影场景的不同帧中捕获的情感分析。

    One-to-many 使用一个输入来获得多个输出。例如,我们可以使用 many-to-one 的结构编码一首表达某种情感的诗歌,并使用 one-to-many 的结构来创造具有同样情感的诗歌。

    Many-to-many 使用多个输入来获得多个输出,比如使用一系列值,比如在电量预测使用中,预测未来12个月而不是只使用一个。

    Stacked many-to-many 就是一个包含多个隐藏层节点的网络。

    RNN 前向传播




    这个想法是预测未来的一个值。所以,假设我们选择批处理的第一行: [10 20 30] ,经过训练我们的网络后,我们应该得到值40。为了测试神经网络,我们可以feed向量[70 80 90] ,并期望得到一个接近100,如果网络是训练有素的。

    我们将使用多对一配置分别提供每个序列的三个时间步骤。当使用循环网络时,输入不是进入网络的唯一值,还有一个隐藏数组,它是将序列的上下文从一个节点传输到另一个节点的结构。我们将其初始化为一个零数组,并将其连接到输入。它的维数(1 x 2)是一个个人选择,只是使用了与1 x 1步骤输入不同的维数。



    全局输入向量 x^t、权重矩阵 w 和偏置矩阵 b 以及隐数组的计算都在上面进行了表示。只有一个步骤没有完成,那就是使用最后一个隐藏数组来预测未来的下一个时间步骤,用一个线性层来计算最终结果。整个网络的形式如下:






    反向传播是一系列的导数,使用链式规则的微积分计算损失以及所有的权重和偏差参数。这意味着我们最终需要以下值(如果它们是多维的,则需要数组) :


    这里需要注意一点:零点也可以是最大值,它是不稳定的,优化不应该到那里,或者鞍点本身也不是很稳定的位置。最小值可以是全局的(函数的最小值) ,也可以是局部的。


    你在图片中看到的是两个滚下山谷的球。从视觉上看,一阶导数给我们一个山坡倾斜度的大小。如果我们沿着 w 轴增加的方向(从左到右)走,那么对于绿色的球,倾角是负的(向下走) ,对于红色的球,倾角是正的(向上走)。

    如果我们希望损失最小,我们希望球到山谷的最低点。W 代表权重和偏差的值,所以如果我们在绿色球的位置,我们将减去负导数的一部分(使其为正)到绿色球向右移动的 w 位置,减去正导数的一部分(使其为负)到红色球向左移动的 w 位置,以便接近两个球的最小值。


    η 调整了我们用来更新权重和偏差的导数的比例。


    需要记住的一点是,我们正在寻找的四个一阶导数数组的形状必须与我们将要更新的参数相同。例如,数组 dL/dW_h 的形状必须与权重数组 W_h 相同。上标 T 表示矩阵是转置的。

    我们找到了最终线性层参数的导数。我们知道 dL/dy_hat 的形状是1 x 1和 h^3 2 x 1,而且矩阵乘法的内部维度必须是一致的,所以 h^3需要转置。我们得到一个矩阵是1 × 2,因为 W_h 是2 × 1,我们需要第二个转置。

    现在,反向传播过程稍有不同。尽管所有三个时间步骤中的参数都是相同的,但我们仍然通过所有这些参数进行反向传递,对于每个隐藏节点,我们计算一个新的 dL/dW_x 和 dL/dB_x。


    我们回到了 dL/dh^2,这意味着我们回传了一个完整的循环隐藏节点,为此我们需要从全局输入导数中去连接输入和隐藏状态。接下来的两个隐状态的计算是相同的,所以我不会详细讨论它们。

    现在我们把这些导数加在一起,应用我们之前看到的梯度下降法方程来更新参数,这个模型就可以进行另一次迭代了。让我们看看如何用 PyTorch 构建一个简单的 RNN。

    PyTorch 的 RNN 实现

    使用 PyTorch 使它变得非常简单,因为我们真的不需要担心反向传播。然而,我仍然相信了解它的工作原理是很重要的,即使我们不直接使用它。

    接下来,如果我们参考 PyTorch 的文档,我们可以看到他们已经准备好了一个 RNN 对象可以使用。我将留下一段代码,我实现的 RNN 和如何训练它。不要忘记在使用网络之前对数据进行规范化,并创建一个数据集和一个数据引导器。

    import torch
    import torch.nn as nn
    class RNN_LSTM_Base(nn.Module):
        def training_step(self, batch):
            samples, targets = batch
            outputs = self(samples.double())
            loss = nn.functional.mse_loss(outputs, targets)
            return loss
    class VanillaRNN(RNN_LSTM_Base):
        def __init__(self, in_size, hid_size, out_size, n_layers=1):
            super(VanillaRNN, self).__init__()        
            # Define dimensions for the layers
            self.input_size = in_size
            self.hidden_size = hid_size
            self.output_size = out_size
            self.n_layers = n_layers        
            # Defining the RNN layer
            self.rnn = nn.RNN(in_size, hid_size, n_layers, batch_first=True)        
            # Defining the linear layer
            self.linear = nn.Linear(hid_size, out_size)
        def forward(self, x):
            # x must be of shape (batch_size, seq_len, input_size)
            xb = x.view(x.size(0), x.size(1), self.input_size).double()        
            # Initialize the hidden layer's array of shape (n_layers*n_dirs, batch_size, hidden_size_rnn)
            h0 = torch.zeros(self.n_layers, x.size(0), self.hidden_size_rnn, requires_grad=True).double()        
            # out is of shape (batch_size, seq_len, num_dirs*hidden_size_rnn)
            out, hn = self.rnn(xb, h0)        
            # out needs to be reshaped into dimensions (batch_size, hidden_size_lin)
            out = nn.functional.tanh(hn)        
            # Finally we get out in the shape (batch_size, output_size)
            out = self.linear(out)
            return out
    def fit(epochs, lr, model, train_loader, test_loader, opt_func=torch.optim.SGD):
        optimizer = opt_func(model.parameters(), lr)
        for epoch in range(epochs):
            # Training phase
            for batch in train_loader:
                loss = model.training_step(batch)
                # Calculate gradients from chain rule
                # Apply gradient descent step
                # Remove gradients for next iteration
        return 'Trained for {} epochs'.format(epochs)
    def predict(model, dataloader):
        result = []
        for dl in dataloader:
            sample, target = dl
            output = model(sample.double())
            result.append([output.item(), target.item()])
        return result






    最后,我们展示了一段使用 PyTorch 构建一个基本的循环网络的代码。

    ·  END  ·
  • Bidirectional RNNs Multi-layer RNNs 总结 梯度消失直觉 当求 J ( 4 ) ( θ ) J^{(4)}(\theta) J ( 4 ) ( θ ) 关于 h ( 1 ) h^{(1)} h ( 1 ) 的梯度时,使用链导法则,可得到图中的式子,若每一个乘数都很小...
  • 一、How to model sequential data?(怎样对时序数据建模) 1.1 one to one模型 one to one模型:一个输入对应一个输出。...RNNs对于输入和输出的长度都不需要固定 RNNs适合文本,语音,时序序列数据 更新状态向量
  • Time-Aware Multi-Scale RNNs for Time Series Modeling 多尺度信息对时间序列建模至关重要。虽然现有的大多数方法在时间序列数据中考虑了多个尺度,但它们假设所有的尺度对每个样本都是同等重要的,这使得它们无法...
  • 来自Jordi Pons一份循环神经网络RNNs简明学习材料,详述了RNN中的诸多技术以及技巧,非常值得收藏并学习。
  • Introduction to RNNs.pdf

    2021-03-30 13:18:37
  • RNNs是一种特殊类型的神经网络,具有允许信息在网络中的不同步骤中持续存在的循环。 循环神经网络的循环 循环使神经网络返回并检查所有先前单词中发生的事情,然后再确定当前单词的实际含义。RNN可以被看作是...
  • 本序列摘要3、阅读理解,输入文章,输出问题答案4、语音识别,输入语音序列信息,输出文字序列1.6 Attention机制在上述通用的Encoder-Decode
  • RNNs更加高效(Making RNNs More Effective) 这节课我们学习三个技巧来提升RNN的效果,分别是: 多层RNN(Stacked RNN) 双向RNN(Bidirectional RNN) 多层RNN(Stacked RNN) 我们知道,可以把许多全连接层/...
  • 【神经网络】RNNs概述

    2018-03-10 15:57:27
    \qquad循环神经网络(Recurrent Neural Networks, RNNs)已经广泛应用在了自然语言处理领域(NLP)。 2.RNNs基本介绍 \qquadRNNs的目的使用来处理序列数据。在传统的神经网络模型中,是从输入层到隐含层再到输...
  • Recurrent Neural Networks (RNNs) are popular models that have shown great promise in many NLP tasks. But despite their recent popularity I’ve only found a limited number of resources that throughly ...
  • 文章目录Neural Machine Translation with RNNs Neural Machine Translation with RNNs
  • 在本文中,我们用一种叫做zoneout的新方法解决了循环神经网络(RNNs)中的正则化问题。  RNN通过使用依赖于输入的转换操作将新的输入映射到其隐藏状态,顺序地构造任意长度序列的固定长度表示。 然而,在序列的...
  • RNNs in TensorFlow

    2017-09-12 16:07:05
    RNNs TensorFlow RNNs TensorFlow RNNs TensorFlow RNNs TensorFlow RNNs TensorFlow RNNs TensorFlow RNNs TensorFlow
  • 来源:Coursera吴恩达深度学习课程 目前我们学习了不同RNN的版本,每一个都可以独当一面(already work quite well by themselves)。但是要学习非常复杂的函数,通常我们会把RNN的多个层堆叠在一起构建更深的模型...
  • GroundHog, 使用Theano实现RNNs的库 土拨鼠土拨鼠警告:土拨鼠发展完毕。 请考虑使用块 。 有关使用块的机器翻译示例,请参见块示例库土拨鼠是 Theano ( http://deeplearning.net/software/theano/ ) 之上的一个 ...
  • MIT 6.S191实验1:使用RNN进行TensorFlow和音乐生成的介绍TensorFlow是一个广泛用于机器学习的软件库。 在这里,我们将学习如何表示计算以及如何在TensorFlow中定义简单的神经网络。 TensorFlow使用称为的高级API,...
  • 在智能手机中使用RNN进行人类活动识别一,引言:项目概况: 该项目的目标是建立一个离线模式的machine learning model和signal processing pipeline ,该signal processing pipeline能够处理使用智能手机惯性传感器...
  • 文章目录 Backpropagation Through Time, BPTT Vanishing and Exploding Gradients in Vanilla RNNs Long Short-Term Memory Networks, LSTMs Preventing Vanishing Gradients with LSTMs Gradient clipping: ...
  • 利用RNNs实现手写合成✏️
  • 循环神经网络中的持续学习 递归神经网络的连续学习方法,可以灵活地学习针对每个任务进行微调的一组专用参数,不需要增加可训练砝码的数量,并且对于灾难性遗忘具有强大的鲁棒性。 有关此方法的详细信息,请阅读。...



1 2 3 4 5 ... 20
收藏数 6,801
精华内容 2,720