你好,
我现在正在使用自动编码器上的工作,将一些简单的2D数据简化为1D。体系结构为2-10-1-1-10-2神经元/层。作为激活函数,我在使用该身份的输出层以外的每一层中使用Sigmoid。我正在使用Accord.net框架来构建它。
我正在用RBM和CD-Algorithm预先训练自动编码器,在这里我可以更改初始权重,学习率,动量和权重衰减。
微调是通过反向传播完成的,我可以配置学习率和动量。
数据是一些人为创建的形状,在图片中标记为绿色:
数据 重建
自动编码器的重建是黄线。这导致了我的问题。以某种方式,编码器无法创建非线性形状作为输出。尽管我经常测试了ARROUND并更改了值,但我并没有得到更好的结果。也许这里有人知道我如何找到问题。
谢谢!
一般而言,任何神经网络都基于您的功能针对输出的线性表示,因此网络实际在做什么(考虑两个功能)是[W1*x1 w2*x2=输出]。
实现非线性表示需要做的是使用额外的功能(s),这是旧功能的非线性表示。假设例如,使用x1^2作为额外功能或x2^2或两者。因此,网络将给出此全局方程[W1*X1 W2*X2 W3*X1^2 =输出],在本质上是一个非线性方程,然后您可以具有非线性表示。
额外的功能方程主要取决于您的数据。在我的示例中,我使用了二次方程式,但这并不总是正确的事情。指您的数据我认为您需要使用cos(x)或sin(x)表示。