在我的项目中,我的目标之一是找到航空发动机数据中的异常值,并选择使用复制器神经网络来做到这一点,并阅读以下关于它的报告(http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.12.3366&rep=rep1&type=pdf),我对步长函数(第4页,图3)和由此产生的预测值有一点了解。
复制器神经网络的解释在上面的报告中描述得很好,但作为背景,我构建的复制器神经网络的工作原理是具有与输入相同的输出数,并具有3个隐藏层,具有以下激活函数:
隐藏层1= tanh sigmoid S1(θ) = tanh,隐藏层2=逐级,S2(θ) = 1/2 + 1/(2(k−1)) {求和每个变量j} S2(θj/N)隐藏层3= tanh sigmoid S1(θ−)= tanh,输出层4= normal sigmoidθ(θ)= 1/1+e^-θ我已经实现了该算法,它似乎正在训练中(因为均方误差在训练期间稳步下降)。我唯一不明白的是,当中间层应用逐级激活函数时,预测是如何做出的,因为它导致3个中间节点的激活成为特定的离散值(例如,我在3个中间节点上的最后激活是1.0,-1.0,2.0 ),这导致这些值被前向传播,并且我每次都变得非常相似或完全相同的预测。
3-4页的报告中的部分最好地描述了算法,但我不知道我必须做什么来解决这个问题,我也没有太多的时间:(
任何帮助都将不胜感激。
谢谢
发布于 2015-10-15 20:15:14
我面临着实现这个算法的问题,这是我对您可能遇到的问题的见解:中间层,通过使用分步函数,本质上是对数据执行聚类。每一层都将数据转换为离散的数字,该数字可以解释为网格系统中的坐标。假设我们在中间层使用两个神经元,步长值从-2到+2,增量为1。这样,我们定义了一个5x5网格,其中将放置每组特征。允许的步数越多,网格就越多。网格越多,拥有的“集群”就越多。
这一切听起来都很好。毕竟,我们正在将数据压缩成较小的(维度)表示,然后使用该表示尝试重建为原始输入。
然而,这种分步函数本身有一个很大的问题:反向传播(在理论上)不适用于分步函数。您可以在this paper中找到有关这方面的更多信息。在这最后一篇论文中,他们建议将阶梯式函数转换为斜坡式函数。也就是说,拥有几乎无限数量的集群。
您的问题可能与此直接相关。尝试将逐步函数转换为渐变函数,并测量在整个学习阶段误差是如何变化的。
顺便问一下,你有没有这些代码可供其他研究人员使用?
https://stackoverflow.com/questions/23269699
复制相似问题