尽管近年来研究者对自编码器及其改进算法进行了深入研究,但现阶段仍存在以下问题亟须解决。
1) 无监督学习模式对特征提取能力的限制与有监督学习相比,无监督学习模式摆脱了对样本标签的依赖、避免了人工标注的困难,但也因此失去了样本标签的辅助,标签信息难以有效应用于特征提取中,使自编码器性能与有监督学习存在一定差距。因此,研究半监督或有监督条件下的自编码器,合理运用标签信息提升自编码器特征提取能力,是一个需要重点关注与解决的问题。针对此问题,一方面可以通过在自编码器输入层或输出层中直接添加样本标签,同时重构输入样本及其标签,强迫自编码器在编码与解码过程中考虑到标签损失,使提取的特征更加符合不同样本的类本质。另一方面,可以通过在损失函数上添加暗含标签信息的类内离散度或类间离散度正则化项,在最小化损失函数的过程中,减少抽象特征的类内距离,增加类间距离,增强抽象特征的类可区分性,提升自编码器的特征提取能力,使抽象特征更适用于分类任务。
2) 硬件要求高,训练时间长
复杂的网络结构依赖大量的训练样本,以自编码器为代表的深度学习模型具有较高的时空复杂度,需要消耗巨大的计算与存储资源,这对硬件设备提出了更高要求,往往导致训练时间过长。针对此问题,一方面可以将模型压缩技术应用于自编码器中,采用剪枝算法剔除冗余节点或通道,实现网络结构的精简,或对权值进行稀疏化,抑制部分神经节点,完成对网络参数的压缩。另一方面可以研究轻量化自编码器算法,借鉴ELM-AE算法,对自编码器的训练方式进行改进,减少参数迭代微调次数,提升算法训练效率。此外,还可以通过研究分布式优化算法来降低模型的计算复杂度,或研究并行计算方法以充分利用现有计算资源。这些方法有助于降低自编码器的结构复杂度,降低软硬件要求,减少训练时间。
3) 随机初始化引入额外噪声
目前,绝大多数自编码器及其改进算法对网络参数均采用随机初始化,这不可避免地引入了额外噪声,影响算法的收敛速度与泛化性能。因此,如何有效地进行网络初始化是一个值得深入研究的问题。针对此问题,一方面可以通过在损失函数中添加 L1 或 L2 范数正则化项,以降低随机初始化导致的噪声影响,另一方面可以采用Glorot 初始化方法、He初始化方法等其他改进初始化方法,在缓解噪声影响的同时,使自编码器的训练过程更加稳定,避免出现梯度消失或爆炸现象。
4) 难以适应小样本条件,易产生过拟合
自编码器及其深度结构由于模型结构复杂,需要大量样本进行训练,在小样本条件下训练自编码器极易产生过拟合,进而降低模型泛化性能。因此小样本条件已成为制约自编码器应用的关键因素。
鉴于此,采用普通的自编码器对传感器时间序列数据进行异常检测,运行环境为MATLAB R2021B。
% Loop through data points (the anomaly occurs somewhere around 1350)
for i = 1000:1500
% Take a frame of data
data = faultydata(i:i+99);
% Predict with autoencoder
yhat = predict(autoenc,data);
% Calculate error
losses = [losses;sqrt(sum((yhat - data).^2))];
% After first frame, only add one data point to the plot
if j > 1
yhat = yhat(end);
data = data(end);
end
% Update data to be plotted
dataall = [dataall;[data yhat]];
% Plot
p1(1).XData = 1:size(dataall,1);p1(2).LineWidth = 1.5;
p1(2).XData = 1:size(dataall,1);
p1(1).YData = dataall(:,1);p2.LineWidth = 1.5;
p1(2).YData = dataall(:,2);
p2.XData = 1:length(losses);
p2.YData = losses;
pause(0.005)
j = j+1;
end
-
擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。 完整数据和代码通过知乎学术咨询获得:https://www.zhihu.com/consult/people/792359672131756032?isMe=1