【问题标题】:Neuroph: Multi Layer Perceptron Backpropagation learning not workingNeuroph:多层感知器反向传播学习不起作用
【发布时间】:2015-07-11 23:05:16
【问题描述】:

此问题与Neuroph Java 库有关。

我有以下程序,它创建一个包含 20 个节点的单个隐藏层的多层感知器。正在学习的函数是 x^2。使用反向传播学习规则。但是,从输出中可以明显看出,该程序似乎不起作用。输出总是1。我的程序有错误吗?

程序

import org.neuroph.core.NeuralNetwork;
import org.neuroph.core.data.DataSet;
import org.neuroph.nnet.MultiLayerPerceptron;
import org.neuroph.nnet.learning.BackPropagation;
import org.neuroph.util.TransferFunctionType;

public class SquareNeuralNetwork {

    public static void main(String[] args) {
        NeuralNetwork neuralNetwork = new MultiLayerPerceptron(TransferFunctionType.SIGMOID, 1, 20, 1);
        DataSet trainingSet = new DataSet(1, 1);
        for (int i = 1; i <= 100; i++) {
            trainingSet.addRow(new double[]{i}, new double[]{i * i});
        }
        BackPropagation backPropagation = new BackPropagation();
        backPropagation.setMaxIterations(10);
        neuralNetwork.learn(trainingSet, backPropagation);
        for (int i = 1; i <= 100; i++) {
            neuralNetwork.setInput(i);
            neuralNetwork.calculate();
            double output = neuralNetwork.getOutput()[0];
            System.out.println(i + " - " + output);
        }
    }
}

输出

1 - 1.0
2 - 1.0
3 - 1.0
4 - 1.0
5 - 1.0
6 - 1.0
7 - 1.0
8 - 1.0
9 - 1.0
10 - 1.0
11 - 1.0
12 - 1.0

【问题讨论】:

    标签: java neural-network


    【解决方案1】:

    乙状结肠

    范围内的sigmoid激活函数输出值:

    您似乎正在尝试教 sigmoid 函数输出 1 到 10000 的值,这是不可能的。因此,网络可以实现的最佳适应度是始终输出 1。

    替代方法

    如果您将函数重新建模为 1/x^2 而不是 x^2,您仍然可以教神经网络对指数函数进行建模,因为这会将 x >= 1 的输出范围修改为 [0, 1] . 训练完成后使用网络时,必须除以 1 / output 才能得到你想要的指数曲线。

    我建模了一个包含 20 个隐藏节点和一个隐藏层的网络作为概念证明:

    【讨论】:

    • 我已经很久没有做反向传播了,但是库没有提供一种在 [0,1]^n 之外生成输出的方法吗?例如,如果输出单元只是扇入的加权和(隐藏单元上的 sigmoid 但输出上 不是),那么我们应该能够学习原始的非归一化函数......
    • 您当然可以使用线性函数 - 但将目标函数压缩或投影到 [1, 0] 范围内并不少见。线性函数没有界,流行的 Rectified 线性函数 ReLU 也没有。
    猜你喜欢
    • 2013-03-04
    • 2012-04-18
    • 1970-01-01
    • 2017-07-12
    • 2017-03-18
    • 1970-01-01
    • 2014-07-03
    • 2013-03-09
    • 2018-07-15
    相关资源
    最近更新 更多