文章来源于我的个人公众号:KAU的云实验台,主要更新智能优化算法的原理、应用、改进
前段时间的文章中KAU介绍了循环神经网络 (Recurrent Neural Network,RNN)的改进算法——长短期记忆神经网络 (Long Short-Term Memory,LSTM),LSTM诞生于1997年[1],其有效克服了RNN的梯度消失问题,在许多场合得到了应用。
在此基础上,Graves等[2]综合后向特征计算,提出了双向长短期神经网络 (Bi-directional Long Short-Term Memory, BiLSTM),使模型可以同时考虑上下文信息,对预测任务具有更强的建模能力。
接下来KAU就将具体介绍BiLSTM的原理、优化及其代码实现。并将BiLSTM与优化的BiLSTM应用于时序预测/回归拟合/分类三种问题中
00 目录
1 BiLSTM模型
2 优化算法及其改进概述
3 XX-BiLSTM预测模型
4 实验结果
5 源码获取
01 BiLSTM模型
关于LSTM部分的介绍这里就不再赘述,感兴趣的朋友可以查看KAU的往期文章。
回归算法|长短期记忆网络LSTM及其优化实现
由于单向的LSTM往往只能考虑到前文序列数据对现有数据的影响,对后文的学习却无法反馈到前文进行判断,即无法做到联系上下文进行综合学习。因此LSTM的变体——双向LSTM被提出,其在单向LSTM的基础上,增加一层后向传播LSTM层,BiLSTM 具有能够利用历史数据以及未来信息进行预测的能力,其结构如下:
图源文献[3]
BiLSTM神经网络结构分为2条LSTM网络,其思想是将同一个输入序列分别接入前向和后向的两个LSTM中,然后将两个网络的隐藏层连在一起,共同接入输出层。
在该模型中,输入信号经过前向LSTM层输出ht→和后向LSTM层输出ht←,共同决定传入隐藏层的值,得到BiLSTM的输出yt,其更新公式为:
02 优化算法及其改进概述
同样,BiLSTM也存在一定可进行优化选择的超参数,若采取经验法或试错法,则有不能获取最优取值组合、时间成本高等问题。优化算法通过对超参数组合的随机生成与更新,能够更快速地获取优解,不失为一种应用方法。
前面的文章中KAU已经介绍过很多种优化算法及其改进策略,本文中我也会应用这些算法优化BiLSTM,下面简单罗列一些优化算法方便一些朋友查看相应原理。
03 XX-BiLSTM预测模型
对于BiLSTM而言,神经元数量、迭代次数、学习率、dropoutrate等都可作为待优化的参数。
而Greff等[4]的实验表明,对LSTM神经网络模型影响最大的超参数是学习率,其次是最大迭代次数和隐藏层神经元数量,因此本文主要选取神经元数量、迭代次数、学习率作为待优化参数。
神经元数量:
神经元的数量直接影响模型的学习能力和网络的复杂性,过多的节点会增加网络的训练时间,而节点太少会损害网络性能。
迭代次数:
表示模型迭代整个训练数据集的次数。
学习率:
选择太小的学习率可能会延长训练周期,而太大的学习率可能会阻碍收敛。
对于时序数据来说,时间步长(滑动窗口大小)也可作为优化参数中的一个,以GWO为例,GWO优化BiLSTM的流程如下:
04 实验结果
本文针对时序预测、分类和回归拟合问题进行实验,优化参数为隐层1神经元数,隐层2神经元数,迭代次数,学习率。
为量化预测质量,针对分类问题,本文采用混淆矩阵、准确率、精确率、召回率、F1-score进行评价。针对时序预测和回归拟合问题,本文采用均方根差、平均绝对百分误差、平均绝对值误差和可决系数进行评价。
分类:(以COA为例,数据集为多输入单输出)
时序预测:(以GWO为例)
时序预测较之回归拟合,多了时间步长作为优化参数
回归拟合:(以NOA为例,数据集为多输入单输出)
05 源码获取
代码注释详细,数据都用的excel,只需要替换数据集就行了,非常方便,针对分类、时序预测、回归拟合,采用MATLAB编码,本文源码提供3个版本:
1.免费版
主要是BiLSTM模型,并且同时包含分类、时序预测、回归拟合3种应用,对于需要进行一些简单预测或者是想学习BiLSTM算法的同学足够了。
获取方式——公众号(KAU的云实验台)后台回复:BIL
2.付费版1
主要是各类优化算法(如:NOA、WOA、DBO、GWO、COA)优化BILSTM模型,并有LSTM、BiLSTM对比。针对分类、时序预测、回归拟合3种应用都各有代码。程序的注释详细,易于替换,KAU之前介绍过的智能优化算法都可以进行替换。
获取方式——
时序预测类问题
公众号(KAU的云实验台)后台回复:BILT
程序目录(以GWO为例)
分类问题
公众号(KAU的云实验台)后台回复:BILC
程序目录(以DBO为例)
回归拟合问题
公众号(KAU的云实验台)后台回复:BILR
程序目录(以WOA为例)
3.付费版2
在付费版1的基础上,此版本引入了KAU前面提出的一系列原创改进算法进行对比,如MSIDBO、AAMCWOA、MSGWO、MSCOA。这部分程序包含了函数测试、预测模型对比两个部分,可以用来发这类方向的文章,当然你也可以在KAU算法的基础上再作创新改进,比如预测模型上可以再对预测误差做一个预测模型进行级联,或者对KAU的原创改进再引入新的修改策略等等。
(若前面已经购买了KAU的原创改进,想买付费版2的,可以联系我给你减免)
获取方式——
时序预测类问题
公众号(KAU的云实验台)后台回复:BILT
分类问题
公众号(KAU的云实验台)后台回复:BILC
回归拟合问题
公众号(KAU的云实验台)后台回复:BILR
参考文献
[1] HOCHREITER S, SCHMIDHUBER J. Long short-term memory[J], Neural Computation, 1997, 9(8):1735-1780.
[2] GRAVES A, SCHMIDHUBER J. Framewise phoneme classification with bidirectional LSTM and other neural network architectures[J]. Neural Networks, 2005, 18(5/6): 602-610.
[3] 魏佳恒,郭惠勇.基于贝叶斯优化BiLSTM模型的输电塔损伤识别[J].振动与冲击,2023,42(1):238-248.
[4] GREFF K, SRIVASTAVA R K, KOUTNIK J, et al. LSTM: a search space odyssey[J]. IEEE Transactions on Neural Networks and Learning Systems, 2017, 28(10): 2222 -2232
另:如果有伙伴有待解决的优化问题(各种领域都可),可以发我,我会选择性的更新利用优化算法解决这些问题的文章。
如果这篇文章对你有帮助或启发,可以点击右下角的赞/在看(ง •̀_•́)ง(不点也行)。