基于轻量化网络和嵌入式平台的电力负荷预测算法研究
实现阶段
step 1:数据处理与分析 pearson.py
数据
Area1_Load:
日期20090101~20150110 每天每隔15min的历史负荷数据,
日期20150111~20150117未知,需要预测
共2209-1行
Area1_Weather:
日期20120101~20150117 每天的
最高温度、最低温度、平均温度、平均湿度、降雨量,每日的五个因素的值
计算pearson系数需要:20120101~20150110的五个因素+日平均负荷
- 准备好(1106,5)维和(1106,1)维的数据
- 拼接成(1106,6)维数组
- DataFrame.corr()求系数
结果:
日平均复负荷最高温度 最低温度 平均温度 平均湿度 降雨量
0 1.000000 0.594663 0.638024 0.638560 0.117022 0.072762
疑问:如果根据3法则删除异常值,是要把对应的其他几个因素的值都删掉吗,数据不连续会对预测造成影响吗?
step 2.1:GRU
由于历史负荷带有时序信息,将其经过1层GRU神经元,输出记为x1
预测的是什么?输入是什么?
目前问题:
step 2.2:全连接层
x1与step 1中得到的其他因素(气象因素数据和日期类型数据(节假日信息))的数据一起,输入3个全连接层
step 3:剪枝
step 4 :预测
一些其他方法
准备阶段
关键词:轻量化/低资源、需求响应分析、嵌入式开发/应用于终端
应用场景:企业
满足需求、不降低用户体验的情况下
① 应用背景,输入是什么,要得到哪些输出
② 调研已有算法,哪些有改进空间
③ 代码实现,先用python把论文解决,再讨论嵌入式
大致思路:负荷预测算法的轻量化改进,比如LSTM/GRU的剪枝
重点参考文献:
基于剪枝优化CNN_LSTM混合模型在边坡位移预测中的应用_郑海青
在CNN剪枝,再进入LSTM
基于联合动态剪枝的深度神经网络压缩算
介绍了几种剪枝方法,静态剪枝、动态剪枝
模型压缩的最终目的是降低模型的复杂度,减少模型的 存储空间,并加速模型的训练和推理。因而,其涉及到多方面 的不同问题,包括优化算法、计算机架构、数据压缩、硬件设计 等。模型压缩的主要方法有低秩近似、网络量化、知识蒸馏、 紧凑网络设计,以及网络剪枝
较早的剪枝工作侧重于权值,通过移除不重要的神经元,并对网络进行再训练,微调至收敛。Han 等[6]设计了深度压缩、结合剪枝、量化和哈夫曼编码三种方法,在 AlexNet上获得了 35 倍的压缩比。国内针对权值剪枝也有广泛的研究,巩凯强等[7]提出了基于统计量的网络剪枝结合张量分解的神经网络压缩方法,选择均值和方差作为评判权值贡献度的依据,有利于模型在资源受限的嵌入式设备中的部署。王忠锋等[8]则以梯度作为评判权值重要性的依据,移除模型中小于阈值的梯度对应权值,并且通过再训练恢复模型容量的损失。
这些方法是静态剪枝,还有一些动态剪枝的方法。
基于梯度的深度网络剪枝算法
GDP剪枝方法
基于GRU-NN模型的短期负荷预测方法
把带有时序特征的历史符合数据送进GRU,其他没有时序特征的数据直接送入层3组合层,层4~层6的全连接层
想法
1. 数据降维:
数据量比较大,为了减少计算量,需要减少数据量,将数据集降维。因为不是每一个特征都对实验结果有很大的影响,所以我们需要一个办法来确定相关程度,然后删除掉相关度不大的特征,实现数据降维。可以选择皮尔森系数:一种线性相关系数,是用来反映两个变量线性相关程度的统计量。系数越大,说明相关性越强。原文链接
2. 剪枝
方法待定
相关文献:
基于嵌入式 GPU 的 AI 加速推理技术研究
在计算机算法中,某些判断条件下当前分支产生的结果不可能是最终的正确结果,对这些不需要的分支进行剪枝,减少不必要的计算量,使得在线提交的代码可以在规定时间内计算完成。同样,深度学习中的剪枝也是为了减掉对最终结果贡献不大的网络层,以提升推理速度
方法:先按照一定的范式(某统计量)对卷积核滤波器进行重要性排序,再剪掉排序靠后的滤波器。对于某一层卷积层,其包括多个卷积核,当其中某些卷积核被剪掉后,那么输出特征图的通道数会对应减少,当前卷积层的输出作为下一层的输入,因此下一卷积层的输入特征图的通道数会对应减少,与此同时,由于下一层卷积中每个卷积核通道数应该与输入特征图的通道数相等,因此下一层卷积核的通道数也应该对应减少。
那么不是卷积核的情况呢?
基于电力大数据的用户用电行为分析与用电优化策略研究
3.2节
基于剪枝优化CNN_LSTM混合模型在边坡位移预测中的应用_郑海青
通道剪枝,也是针对卷积层进行剪枝
Q1:这个问题如何求解?
Q2:有没有数学推导更为清晰的文献?
基于联合动态剪枝的深度神经网络压缩算法
动态剪枝,其特点为不永久性地移除
任何参数,转而根据输入图像的特征,动态地选择网络的一部
分参与运算,以降低模型的复杂度
基于梯度的深度网络剪枝算法
GDP:
压缩卷积层能获得更大加速效果,压缩全连接层更能减少计算模型对存储空间的占用
Dynamic Network Surgery for Efficient DNNs 貌似略复杂
待解决问题
CNN在预测中的作用
GPU是图像处理单元,为啥是图像?
7.30. pytorch自带剪枝工具prune,这种方法貌似是把要剪枝的权重置零,模型大小没变,计算复杂度可能差别不大。那么剪枝方法哪里有新意呢?有没有其他剪枝方法呢?
目前任务:找一种剪枝方法,理解数学推导
数学知识
以下讨论针对全连接层(该论文中的层3~层5)
- 神经网络结构入门:参考网址
第层的输入为第
层的输出
:
,其中
为权值矩阵,
为阈值
- loss函数:
由loss term和regularization term(如L1、L2范式)组成
loss term常用均方误差、交叉熵,参考网址 - loss对权值矩阵求导:
会得到同尺寸的矩阵 - 权值矩阵的维数:
输入维数输出位数
问题1:把需要剪枝的权值置为零,再进行权值的重新训练,这样并没有降低运算规模,好处在哪里?
模型的参数量减小了(模型压缩),减少计算模型对存储空间的占用
问题2:“重新训练”是如何进行的,是仅针对当前这一层吗?多层神经网络的训练过程:权重的调整训练还是通过梯度下降法来进行,但梯度的求取使用反向传播法。参考网址
结合论文,应该是先全连接训练一遍,然后剪枝,然后从头重新训练一遍。
论文实验结果显示,剪枝不仅压缩模型,减少参数量,而且由于更好防止过拟合,能够提升性能。
算法总体思路总结:
- 计算天气、温度等数据对负荷的皮尔孙系数,选用相关度较大的因素作为模型的输入,降低数据规模和训练难度
- 由于历史负荷带有时序信息,将其经过1层GRU神经元,输出记为
- 将
与步骤1中得到的其他因素的数据一起,输入3个全连接层
- 采用GDP剪枝方法,降低参数量,减少模型对存储空间的占用
- 得到训练完成的模型,再由输入求出输出,记为负荷预测值