复制神经网络用于异常检测,阶跃函数导致相同的预测。

7
在我的项目中,我的一个目标是在航空发动机数据中找到异常值,并选择使用复制神经网络来实现,并阅读了关于它的以下报告(http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.12.3366&rep=rep1&type=pdf),但我对步进函数(第4页,图3)和由此产生的预测值有一些理解上的问题。
复制神经网络的解释最好在上述报告中描述,但作为背景,我构建的复制神经网络的输出与输入数量相同,并具有以下三个隐藏层的激活函数:
隐藏层 1 = 双曲正切 sigmoid S1(θ) = tanh, 隐藏层 2 = 阶梯式,S2(θ) = 1/2 + 1/(2(k − 1)) {每个变量 j 的总和} tanh[a3(θ −j/N)] 隐藏层 3 = 双曲正切 sigmoid S1(θ) = tanh, 输出层 4 = 正常 sigmoid S3(θ) = 1/1+e^-θ 我已经实现了算法,它似乎正在训练(因为训练期间均方误差稳步下降)。唯一让我不理解的是,在应用具有阶梯式激活函数的中间层时,预测是如何进行的,因为它导致三个中间节点的激活变成特定的离散值(例如,我的最后三个中间节点的激活值分别是1.0、-1.0、2.0),这会导致这些值被向前传播,并且我每次得到非常相似或完全相同的预测结果。 报告第 3-4 页上的部分最好地描述了该算法,但我不知道该怎么做才能解决这个问题,而且时间也不多:( 任何帮助都将不胜感激。谢谢。
1个回答

4
我正在面临实施该算法的问题,下面是我的见解,也许您也有同样的问题: 中间层通过利用逐步函数,在数据上执行聚类。每个层将数据转换为离散数字,这可以被解释为一个网格系统中的坐标。假设我们在中间层使用两个神经元,其步幅从-2到+2,以1为增量。这样我们定义了一个5x5的网格,每组特征都将被放置在其中。允许的步数越多,网格越多,"集群"就越多。
这听起来都很好。毕竟,我们正在将数据压缩为一个较小的(维度)表示形式,然后使用它来尝试重构为原始输入。
但是,这个逐步函数本身存在一个大问题:反向传播理论上不适用于逐步函数。您可以在此论文中找到更多相关信息。在最近的这篇论文中,他们建议用类似于斜坡状的函数替换逐步函数。也就是说,具有几乎无穷多的集群。
你的问题可能直接与此有关。尝试用斜坡式函数替换逐步函数,并测量整个学习过程中误差的变化。
顺便问一下,您是否能在其他地方提供任何此代码供其他研究人员使用?

哇,非常抱歉回复这么晚!而且随着我回溯问题,阶跃函数也变得更加有意义了,谢谢你。 - Daniel Takyi
我打算挖掘我写过的代码。基本上,我在C++中创建了一个通用的神经网络程序,您可以指定层和节点。它存储在我的旧硬盘驱动器上,当时使用起来很麻烦,但我会尽力找到它,并在有机会时将其发布在线供其他研究人员使用。 - Daniel Takyi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接