本文解读了哈工大团队提出的一种新的深度学习方法——深度残差收缩网络(Deep Residual Shrinkage Network),原本是应用在基于含噪振动信号的机械故障诊断,加入了笔者自己的理解。
从名字可以看出,深度残差收缩网络是深度残差网络的一种改进方法。其特色是“收缩”,在这里指的是软阈值化,而软阈值化几乎是现在信号降噪算法的必备步骤。
因此,深度残差收缩网络是一种面向含噪数据的深度学习方法,是信号处理里的经典内容和深度学习、注意力机制的又一次完美结合。
深度残差收缩网络的基本模块如下图(a)所示,通过一个小型子网络,学习得到一组阈值,然后进行特征的软阈值化。同时,该模块还加入了恒等路径,以降低模型训练难度。深度残差收缩网络的整体结构如下图(b)所示,与一般的深度残差网络是一样的。
那么为什么要进行收缩呢?收缩有什么好处呢?本文尝试从删除冗余特征的灵活度的角度,进行了解释。
不了解软阈值化的同学可以去搜一下Soft Threshlding,在谷歌学术会搜到这一篇:DL Donoho. De-noising by soft-thresholding[J]. IEEE transactions on information theory, 1995.
De-noising by soft-thresholding这篇论文,现在的引用次数是12893次。可以看出来,软阈值化是一种经典的方法,尤其在信号降噪领域是非常常用的。
软阈值函数的表达式如下:
其中t是阈值,是一个正数。从公式可以看出,软阈值化将[-t,t]区间内的特征置为0,将大于t的特征减t,将小于-t的特征加t。
如果用图片表示软阈值函数,就如下图所示:
软阈值化在深度残差收缩网络中是作为非线性映射,而现在深度学习最常用的非线性映射是ReLU激活函数。所以下面进行了两者的对比。
我们首先分析一下,收缩(这里指软阈值化)和ReLU激活函数的共同优点。
首先,软阈值化和ReLU都可以将部分区间的特征置为0,相当于删除部分特征/信息。(可理解为,前面的层将冗余特征转换到某个取值区间,然后用软阈值化或ReLU进行删除)
其次,软阈值化和ReLU的梯度都要么为0,要么为1,都有利于梯度的反向传播。
相较于ReLU,软阈值化能够更加灵活地设置“待删除(置为0)”的特征取值区间。
我们首先独立地看ReLU,以下图为例。ReLU将低于0的特征,全部删除(置为0);大于0的特征,全部保留(保持不变)。
软阈值函数呢?它将某个区间,也就是[-阈值,阈值]这一区间内的特征删除(置为零);将这个区间之外的部分,包括大于阈值和小于-阈值的部分,保留下来(虽然朝向0进行了收缩)。下图展示了阈值t=10的情况:
在深度残差收缩网络中,阈值是可以通过注意力机制自动设置的。也就是说,[-阈值,阈值]的区间,是可以根据样本自身情况、自动调整的。
如果我们把ReLU和之前(卷积层或者批标准化里面的)偏置b,放在一起看呢?那么ReLU能够删除的特征取值空间,是可以变化的。比如说,将偏置b和ReLU作为一个整体的话,函数形式就变成了max(x+b,0)或者ReLU(x+b)。当偏置b为正数的时候,特征x会沿y轴向上平移,然后再将负特征置为0。例如,当b=20的时候,如下图所示:
或者当偏置b为负数的时候,特征x会沿y轴向下平移,然后再将负特征置为0。例如,当b=-20的时候,如下图所示:
接下来,我们来讨论软阈值函数。将偏置b和软阈值化作为一个整体的话,函数形式就变成了sign(x+b)•max(abs(x+b)-t,0)。当偏置b为正数的时候,首先特征x会沿y轴向上平移,然后再将零附近的特征置为0。例如,当偏置b=20、阈值t=10的时候,如下图所示:
当偏置b为负数的时候,特征x会沿y轴向下平移,然后再将零附近的特征置为0。例如,当偏置b=-20、阈值t=10的时候,如下图所示:
在深度残差收缩网络中,由于偏置b和阈值t都是可以训练得到的参数,所以当偏置b和阈值t取值合适的时候,软阈值化是可以实现与ReLU相同的功能的。也就是,在现有的这些特征的[最小值,最大值]的范围内(不考虑无穷的情况,一般我们采集的数据不会有无穷),将低于某个值的特征全置为0,或者将高于某个值的特征全置为0。例如,在下图的数据中,如果我们将偏置b设置为20,将阈值t也设置为20,就将所有小于0的特征全部置为0了。因为没有小于-40的特征,所以“偏置+软阈值化”就相当于实现了ReLU的功能(将低于0的特征置为0)。
当然,由于[-阈值,阈值]区间和偏置b都是可调的,也可以是这样(b=40,t=20)(是不是和“偏置+ReLU”很相似):
然而,反过来的话,不管“偏置+ReLU”怎么组合,都无法实现下图中软阈值函数可以实现的功能。也就是,“偏置+ReLU”无法将某个区间内特征的置为0,并且同时保留大于上界和小于下界的特征。
从这个角度看的话,当和前一层的偏置放在一起看的时候,软阈值化比ReLU能够更加灵活地设置“待删除特征的取值区间”。
更重要地,深度残差收缩网络采用了注意力机制(类似于Squeeze-and-Excitation Network)自动设置阈值,避免了人工设置阈值的麻烦。(人工设置阈值一直是一个大麻烦,而深度残差收缩网络用注意力机制解决了这个大麻烦)。
在注意力机制中,深度残差收缩网络采用了特殊的网络结构,保障了阈值不仅为正数,而且不会太大。因为如果阈值过大的话,就可能出现下图的情况,也就是所有特征都被置为0了。深度残差收缩网络的阈值,其实是(特征图的绝对值的平均值)×(0到1之间的系数),很好地避免了阈值太大的情况。
同时,深度残差收缩网络的阈值,是在注意力机制下,根据每个样本的情况,单独设置的。也就是,每个样本,都有自己的一组独特的阈值。因此,深度残差收缩网络适用于各个样本中噪声含量不同的情况。
我们在使用深度残差收缩网络的时候,似乎不需要考虑数据中是否真的含有很多噪声。换言之,深度残差收缩网络应该可以用于弱噪声的数据。
这是因为,深度残差收缩网络中的阈值,是根据样本自身的情况,通过一个小型子网络自动获得的。如果样本所含噪声很少,那么阈值可以被自动设置得很低(接近于0),从而“软阈值化”就退化成了“直接相等”。在这种情况下,软阈值化,就相当于不存在了。
相较于普通的残差网络,深度残差收缩网络的结构较为复杂,所以恒等路径是有必要存在的。
M. Zhao, S. Zhong, X. Fu, et al., Deep residual shrinkage networks for fault diagnosis, IEEE Transactions on Industrial Informatics, DOI: 10.1109/TII.2019.2943898
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。