地震去噪探索(三)——怎样让卷积神经网络学习更多特征

“既然选择了远方 便只顾风雨兼程”。


地震去噪探索(三)——怎样让卷积神经网络学习更多特征


在上一篇《地震去噪新探索(二)——无监督卷积神经网络调优实战》里,终于找到了一个网络结构,能够有效学习到地震信号的特征,并且成功地降噪。网络结构是这样的:


地震去噪探索(三)——怎样让卷积神经网络学习更多特征


简单说2个卷积,2个反卷积的网络结构,就实现了超越经典的自编码结构效果。经典的自编码网络结构是这样的:


地震去噪探索(三)——怎样让卷积神经网络学习更多特征

难道就一个反卷积就打败了复杂的采样+卷积的组合吗?先剧透一下,最后的结果证明,能完美处理地震信号的原因根本就和这两种网络结构没有直接关系。

到底是什么原因呢?下面开始探索之旅。

01 反卷积和上采样+卷积之间的联系和区别

反卷积的原理主要是卷积的逆过程,就是对卷积结果的回填。

上采样+卷积的运算过程,是把特征图通过上采样的线性算法进行插值放大,再和一个卷积运算提取特征。

简单来说,二者的共同作用都是增大特征图。区别是反卷积在实际使用中,如果参数配置不当容易出现明显的棋盘现象。

就上面的原理来看,没有理由说反卷积就更适合地震信号处理,采样就会导致处理地震信号无法收敛。为了验证我的猜想,在那个失败的网络中我干脆把所有下采样(池化)和上采样全部去掉,看看是否能收敛呢?

02 采样算法不是导致无法收敛的原因

删掉所有下采样(池化)和上采样结构后,网络就变成了这样:

地震去噪探索(三)——怎样让卷积神经网络学习更多特征


结果很明确——仍然是无法收敛的。就像这样:


地震去噪探索(三)——怎样让卷积神经网络学习更多特征


对于这个现象,我陷入了沉思,也向很多有经验的老师请教。一位老师盯住这个处理Mnist效果良好的自编码网络,忽然提出了一个问题:Mnist训练集的图片很简单,而地震数据如此复杂,是不是会造成训练网络的适应性不同?

03 真正原因是网络结构学习特征的原理不同

1.Mnist图片和地震数据有多大的不同呢?

首先,Mnist的数据结构很简单。一个加噪后的数据数据是这样的:


地震去噪探索(三)——怎样让卷积神经网络学习更多特征


在训练时,这就是最小的训练单元:一个28*28的图块。它的有效信号就是中间的这个零,也就是要学习的特征,其它的部分都是无意义的信号。

而地震信号就不同了。一个地震信号很大,含噪声的地震信号是这样的:

地震去噪探索(三)——怎样让卷积神经网络学习更多特征

拆为28*28的含噪声的小图块是什么样的呢?像这样:

地震去噪探索(三)——怎样让卷积神经网络学习更多特征


这个信号里面包含了地震同向轴图形的一部分,复杂度远超一个简单的数字图像。

然而,理解了这个问题,还不足以找到真正的症结所在。

2.找到决定神经网络学习能力的关键

有时候,现实会出现一些戏剧性。就像凯库勒悟出苯分子环状结构的经过——他做了一个梦。我在反复对比反卷积网络和采样网络差别时,忽然发现二者的LOSS函数不一样。

成功的网络LOSS是用的mean_absolute_error,而失败网络的LOSS用的是binary_crossentropy。

mean_absolute_error的主要功能是线性回归学习,binary_crossentropy的主要功能是逻辑回归学习。这里面有一个信号告诉我们:学习地震这类复杂的特征,用的不是逻辑回归学习。

那我把全卷积网络的LOSS改为mean_absolute_error,效果如何呢?学习曲线是这样的:

地震去噪探索(三)——怎样让卷积神经网络学习更多特征

上图表示,已经成功收敛了。

那预测效果是什么呢?是这样的:

地震去噪探索(三)——怎样让卷积神经网络学习更多特征


很遗憾,没有学习到地震的特征。

这是为什么呢?我顺着回归学习的思路,又发现了一个问题,比如最后一个卷积层的代码有差异:

成功网络最后一层是:

decoded = Conv2D(1, (3, 3), activation='tanh', padding='same')(x8)

失败网络最后一层是:

decoded = Conv2D(1, (3, 3), activation='sigmoid', padding='same')(x)

上面的差异就是激活函数不同,还是逻辑回归和线性回归的差别。果断改为'tanh'激活函数。这次直接在Mnist自编码程序上修改。

训练曲线是这样的:

地震去噪探索(三)——怎样让卷积神经网络学习更多特征

预测结果是这样的:

地震去噪探索(三)——怎样让卷积神经网络学习更多特征

效果非常好。

04 总结和展望

书山有路勤为径,学海无涯苦作舟。

经过一段艰苦的探索,终于在神经网络学习地震特征这个问题上摸到了点门路。Mnist图片非常简单,所以用逻辑分类的思路来学习和降噪效果就很好。这个设计思路作者当然不会说,可能他觉得这个问题太简单了。但是把上面的结构照搬到地震信号的学习,就水土不服了。

你以为这就结束了吗?然而没有,生活远比电视剧离奇。

为了探索更好的效果,我把训练周期从5调到了50,结果效果是这样的,上图是噪声信号,下图是预测的信号:

地震去噪探索(三)——怎样让卷积神经网络学习更多特征


地震去噪探索(三)——怎样让卷积神经网络学习更多特征


上图的去噪效果较5个迭代变差了。训练越多,效果还变差了。这个结果不是我们想要的。究其原因,网络学习的特征还不完全是有效信号。因为我的输入信号和标签数据都是噪声数据,如果单纯的从原图学习,当然学习结果是与原图越接近越好。但这样就没有起到去噪的效果。

所以下一步,要研究LOSS函数,怎样从噪声图片中学习到更多有效信号。

各位老铁,如果喜欢这篇文章请点赞。有兴趣可以联系我交流。


分享到:


相關文章: