Javascript 这是神经网络吗

Javascript 这是神经网络吗,javascript,algorithm,neural-network,genetic-algorithm,Javascript,Algorithm,Neural Network,Genetic Algorithm,我花了两天时间在神经网络上观看youtube视频 特别是,我一直在尝试实现一种遗传算法,这种算法会随着时间的推移而发展,然而,大多数视频似乎都集中在经过训练的神经网络上,然后用于分类 出于困惑,我决定简单地尝试实现网络的基本结构,为了方便起见,我用JS编码了它 function sigmoid (x) { return 1 / (1 + Math.E ** -x); } function Brain(inputs, hiddens, outputs) { this.weights =

我花了两天时间在神经网络上观看youtube视频

特别是,我一直在尝试实现一种遗传算法,这种算法会随着时间的推移而发展,然而,大多数视频似乎都集中在经过训练的神经网络上,然后用于分类

出于困惑,我决定简单地尝试实现网络的基本结构,为了方便起见,我用JS编码了它

function sigmoid (x) { return  1 / (1 + Math.E ** -x); }
function Brain(inputs, hiddens, outputs) {
    this.weights = {
        hidden: [],
        output: []
    };

    for (var i = hiddens; i--;) {
        this.weights.hidden[i] = [];
        for (var w = inputs; w--;) this.weights.hidden[i].push(Math.random());
    }
    for (var i = outputs; i--;) {
        this.weights.output[i] = [];
        for (var w = hiddens; w--;) this.weights.output[i].push(Math.random());
    }
}

Brain.prototype.compute = function(inputs) {
    var hiddenInputs = [];
    for (var i = this.weights.hidden.length; i--;) {
        var dot = 0;
        for (var w = inputs.length; w--;) dot += inputs[w] * this.weights.hidden[i][w];
        hiddenInputs[i] = sigmoid(dot);
    }

    var outputs = [];
    for (var i = this.weights.output.length; i--;) {
        var dot = 0;
        for (var w = this.weights.hidden.length; w--;) dot += hiddenInputs[w] * this.weights.output[i][w];
        outputs[i] = sigmoid(dot);
    }
    return outputs;
}

var brain = new Brain(1,2,1);
brain.compute([1]);
我成功地获得了介于0和1之间的值。而且,当我使用特定的权重时,对于一个恒定的输入,每次都会得到相同的值

  • 我在代码中使用的术语好吗

  • 我担心我可能只是在观察假阳性,实际上并没有反馈

  • 乙状结肠功能正常吗?我应该将其用于遗传/进化算法吗


  • 我注意到我得到的结果只在0.5到1之间

    将神经网络与遗传算法相结合,你的最佳选择可能是巧妙的。这个算法在JS中有一个非常好的实现,叫做“Neataptic”,您应该能够在github上找到它

    将遗传算法与神经网络相结合时,通常不仅要调整权重,还要调整结构

    Sigmoid激活对于GA来说是可以的,但在很多情况下,您还需要其他激活函数,您可以在wikipedia上找到一小部分激活函数,或者创建自己的激活函数