2023/11/19周报

摘要

本周阅读了一篇应用于金融时间序列预测的文章,文章使用具有对抗域自适应的新型深度迁移学习框架,提高了金融预测的准确率。此外,还对LSTM的一些理论知识进行复习,进一步理解了LSTM的概念。

Abstract

This week, an article applys to financial time series prediction is readed, which uses a new deep transfer learning framework with adaptive confrontation domain to improve the accuracy of financial prediction. In addition, some theoretical knowledge of LSTM is reviewed to further understand the concept of LSTM.

文献阅读

1.题目

A novel deep transfer learning framework with adversarial domain adaptation: application to financial time-series forecasting

2.创新点

金融市场预测被认为是数据挖掘中最具挑战性的任务之一。最近的深度学习模型在提高金融时间序列预测(TSF)的准确性方面取得了成功,但由于隐含的复杂信息,并且可用的标记数据很少,当前基准在该领域的泛化能力较差。为了缓解干净数据不足导致的过度拟合的限制,提出了一种新的深度迁移学习框架,将对抗域自适应用于金融TSF任务,简称为ADA-FTSF,以提高可靠,准确和有竞争力的深度预测模型。具体地说,我们实现了一个典型的对抗域自适应架构,以传递特征知识并减少金融数据集之间的分布差异。为了减少预训练过程中的形状差异,在对抗训练阶段巧妙地引入了动态时间规整(DTW)的平滑公式来衡量形状损失。值得注意的是,从潜在源数据集中可靠地选择源域将对预测性能产生重大影响。在我们的研究中,适当的源数据集选择使用时间因果发现方法通过转移熵copula熵。通过对金融指数、能源期货和农产品期货三个领域不同金融数据集的实证实验、消融研究、Diebold-Mariano检验和参数敏感性分析,验证了该框架的可行性和有效性。

3.方法框架

在该部分作者首先提供了一个新的角度来选择源数据集,然后,详细描述了ADA-FTSF框架。

3.1用于选择潜在源域的时间因果关系发现

Schreiber 定义了转移熵(TE)的概念,用于发现稳态时间序列中的因果关系。TE是GC的非线性推广,等价于信息论中的条件互信息,如下所示:
在这里插入图片描述
其中,时间序列在这里插入图片描述在这里插入图片描述在这里插入图片描述
Ma定义了Copula熵的概念,并证明了它与信息论中的互信息是等价的。它由Copula密度函数定义,Copula密度函数本质上是香气熵的一种形式。设x是随机变量,其边际分布u和copula密度cu ∈ u。x的Copula熵定义如下:
在这里插入图片描述
Copula熵是独立性的度量,转移熵是条件独立性的度量。马[37]介绍说,有一个基本的理论相关性。转移熵可以仅用copula熵表示,如下所示:
在这里插入图片描述
在cause X and effects Y之间.

3.2 ADA-FTSF模型结构说明

ADA-FTSF的整体架构如图所示:
在这里插入图片描述

3.2.1深度预测模型
LSTM是一种特殊的递归神经网络(RNN),主要用于解决长序列训练中的梯度消失和梯度爆炸问题。与普通RNN相比,LSTM在更长的序列建模中表现更好。具体地说,它通过一个单独的存储单元和一个跨网络的门控机制来调节信息的流动,该门控机制由三个门控制,称为遗忘门、输入门和输出门。这种机制决定了什么信息被保存,保存多长时间,以及何时从内存位置读取。使用以下公式执行遗忘门(ft)、输入门(it)、输出门(ot)、单元状态(ct)和隐藏状态(ht)的计算:
在这里插入图片描述
其中Wf、Wi、Wo、Wc、Uf、Ui、Uo和Uc是权重矩阵,并且bf、bi、bo和bc是偏置向量。
GRU模型是LSTM网络的一种变体,它将遗忘门和输入门组合成一个更新门,简化了模型结构。每个GRU单元仅包含两个门:复位门rt和更新门zt。重置门决定当前将保留多少历史信息,以及将添加多少更新的信息,这有助于捕获数据中存在的时间依赖性。更新门决定了历史信息的遗忘程度。更新门(ZT)、复位门(RT)、候选状态(EHT)和HIDD的计算使用以下公式:
在这里插入图片描述

其中Wz、Wr和Wh是权重矩阵。
TCN包含三种基本结构:因果卷积模块、扩张卷积模块和剩余连接模块。扩张卷积用于增加卷积核的感受野,弥补局部卷积的缺陷,使模型能够在更长的时间内学习信息。因果卷积是指前一层在时间t的值仅取决于下一层在时间t之前的值,这意味着没有未来的信息泄漏。在这种架构中,零填充用于序列完成,使得任意长度的序列可以被输入并映射到相同长度的输出序列。其公式可描述如下:
在这里插入图片描述

其中F(s)是最终输出结果,k表示卷积核大小,d表示膨胀系数,并且f(i)表示卷积核的第i个元素。
3.2.2构造混合损失函数
在所提出的ADA-FTSF框架中,在预训练阶段设计了混合损失函数用于源和目标分布之间的对齐,其阐述如下:
在这里插入图片描述在这里插入图片描述

根据等式(14-18),预训练阶段的混合损失函数由四个部分组成。Ns和Nt分别表示为源标记数据和目标未标记数据。L1表示使用源数据的均方误差(MSE)损失函数的训练误差,旨在最小化预测误差。f(Xi)表示特征提取模块。

深度神经网络的训练过程主要包括前向传播和反向传播。在反向传播过程中,需要求解网络参数的梯度。然后,利用梯度下降法找到最优网络参数。我们采用AdamW算法来解决方程组中的优化问题。(19-36)。梯度的详细计算如下:
在这里插入图片描述在这里插入图片描述
滚动窗口策略被用于时间序列采样,以构建适合监督学习输入格式的样本集。L4实际上计算每个相同长度的子系列之间的形状损失。
在这里插入图片描述在这里插入图片描述
最后,混合损失函数的梯度可以描述如下:
在这里插入图片描述

数学符号解释如下:
在这里插入图片描述

算法1介绍了ADA-FTSF的形成细节,包括源域选择阶段和预训练阶段。由于ADA-FTSF的迁移策略改进主要集中在预训练阶段,因此这里省略了微调阶段的介绍。简而言之,ADA-FTSF可以细分为两个模块,即,特征提取模块和预测模块。在特征提取模块中,ADAFTSF通过MMD尽量减少源域和目标域之间的差异,使提取的特征更具一般性。在预测模块中,ADAFTSF执行多个预测任务,包括计算预测误差、形状误差和分类域。
在这里插入图片描述

4.实验过程

根据大量实验结果,ADA-LSTM、ADA-GRU和ADATCN的超参数设置为在这里插入图片描述
根据预测误差从{16,32,64}中选择最佳的每一层的隐藏大小。在训练过程中,根据训练损失自适应地调整学习率。初始学习率被设置为0.1,并且最小学习率被设置为0.0000001。随着训练进行,一旦训练损失在五个时期内不再减少,则学习率降低到自身的四分之三。为了完全训练模型,迭代次数设置为10000。

5.实验结果

在这里插入图片描述
在这里插入图片描述

深度学习

LSTM

LSTM(Long Short-Term Memory长短期记忆),是改进后的RNN,拥有比RNN更长的记忆,主要是为了解决当序列过长时候RNN出现的梯度消失和梯度爆炸问题,相比普通的RNN,LSTM能够在长序列中有更好的表现。 LSTM 应用有:翻译语言、图像分析、文档摘要、语音识别、聊天机器人等等。
LSTM的结构如下:
在这里插入图片描述

简化成如下表示:
在这里插入图片描述
LSTM与传统RNN的区别:
RNN在处理长时间依赖性问题时会出现梯度消失/爆炸问题,这是因为它在每一层之间都有相同的权重矩阵,而随着时间序列长度增加,这些权重矩阵的乘积会不断地增大或缩小。而 LSTM 的记忆细胞和门控机制就是为了解决这个问题而设计的。
LSTM 结构中的门控机制,可以更好地控制信息的流动,有效地避免了无关信息的干扰和梯度消失问题。而 RNN 则缺乏这样的机制,信息的流动不够灵活。
LSTM 更适用于处理长时间依赖性问题,因为其能够有效地保存和更新历史信息。而 RNN 更适用于处理短时间依赖性问题。

简单的LSTM文本生成示例,使用 Python 和 Keras 库实现 LSTM 文本生成:

  1. 首先将文本数据预处理,生成字典、输入序列和标签
  2. 使用 Keras 库构建 LSTM 模型,包括嵌入层、LSTM层、Dropout层、Dense层等
  3. 用处理好的数据训练模型
  4. 使用训练好的模型生成文本
from keras.preprocessing.sequence import pad_sequences
from keras.layers import Embedding, LSTM, Dense, Dropout
from keras.preprocessing.text import Tokenizer
from keras.callbacks import EarlyStopping
from keras.models import Sequential
import keras.utils as ku 

设置训练参数
tokenizer = Tokenizer()

数据集
data = "我喜欢学习神经网络和机器学习"

生成字典
def dataset_preparation(data):
    # 对输入数据进行处理
    corpus = data.lower().split("\n")

    # 创建字典
    tokenizer.fit_on_texts(corpus)
    total_words = len(token)

把每句话转换为数字序列
input_sequences = []
for line in corpus:
    token_list = tokenizer.texts_to_sequences([line])[0]
    for i in range(1, len(token_list)):
        n_gram_sequence = token_list[:i+1]
        input_sequences.append(n_gram_sequence)
return input_sequences, total_words

inp_sequences, total_words = dataset_preparation(data)

用于 pad sequences
max_sequence_len = max([len(x) for x in inp_sequences])
inp_sequences = np.array(pad_sequences(inp_sequences, maxlen=max_sequence_len, padding='pre'))

创建predictors和label
predictors, label = inp_sequences[:,:-1],inp_sequences[:,-1]

label = ku.to_categorical(label, num_classes=total_words)

构建模型
model = Sequential()
model.add(Embedding(total_words, 10, input_length=max_sequence_len-1))
model.add(LSTM(150, return_sequences = True))
model.add(Dropout(0.2))
model.add(LSTM(100))
model.add(Dropout(0.2))
model.add(Dense(total_words, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam')
model.fit(predictors, label, epochs=100, verbose=2)

生成文本
model.fit(predictors, label, epochs=100, verbose=2)

生成文本
def generate_text(seed_text, next_words, model, max_sequence_len):
for _ in range(next_words):
token_list = tokenizer.texts_to_sequences([seed_text])[0]
token_list = pad_sequences([token_list], maxlen=max_sequence_len-1, padding='pre')
predict_word = model.predict(token_list, verbose=0)
predict_word = predict_word.argmax()
word = tokenizer.index_word[predict_word]
seed_text += " " + word
return seed_text

print(generate_text("我是一个", 3, model, max_sequence_len))

总结

本周学习了LSTM的一些理论,下周将继续对LSTM时序模型的相关论文进行阅读和学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值