【问题标题】:Neural Network Minimize Function神经网络最小化函数
【发布时间】:2021-05-20 17:56:09
【问题描述】:

我创建了一个简单的神经网络;为了实际训练它,我需要知道需要在哪个方向调整权重和偏差。我已经阅读了一些关于该主题的文章,但我对数学并不十分擅长,我唯一理解的是成本函数(我设法使其工作)需要最小化。如果有人至少能在理论上告诉我这是如何工作的,那就太好了。如果需要,我还可以发布更多代码。最小化函数最终应该替换evolve()

import java.util.Random;

public class Neuron {
Neuron[] input;
float[] weight;
float bias;
Float value = null;
public Neuron(Neuron[] input) {
    this.input = input;
    weight = new float[input.length];
    setRandom();
}
public void setValue(float val) {
    this.value = val;
}
public float getValue() {
    if(this.value == null) {
        return calculate();
    }
    else {
        return this.value;
    }
}
private float calculate() {
    float res = 0;
    for(int i = 0; i < input.length; i++) {
        res += input[i].getValue() * weight[i];
    }
    res -= bias;
    return sigmoid(res);
}
private void setRandom() {
    Random rand = new Random();
    float max = 0;
    for(int i = 0; i < weight.length; i++) {
        weight[i] = rand.nextFloat();
        max += weight[i];
    }
    this.bias = max * 0.8f - rand.nextFloat();
}
public void evolve() {
    Random rand = new Random();
    for(int i = 0; i < weight.length; i++) {
        weight[i] += rand.nextFloat() - 0.5f;
    }
    this.bias += rand.nextFloat() - 0.5f;
}

public static float sigmoid(float x) {
    return (float)(1/( 1 + Math.pow(Math.E,(-1*(double)x))));
  }
}

【问题讨论】:

    标签: java math neural-network minimize


    【解决方案1】:

    成本函数基本上是真实数据点与您的预测之间差异的函数(即,这是您的惩罚)。为了争论,你的神经网络是f(x) = 2x + 1。现在,假设您观察到的真实数据点是x = 1y = 4。因此,您的预测 (f(1)) 是 3

    如果您的成本函数是实际观察值和预测值之间的绝对差值,即|f(x) - y|,则您的成本函数值为1(对于x = 1),您需要最小化此成本函数。但是,如果您的成本函数是 100 - |f(x) - y|,您可能希望最大化它。在这个成本函数中,你的最大奖励是100

    因此,您的权重和偏见需要朝着使您更接近于最大限度地减少惩罚和最大化奖励的方向移动。您的预测越接近观察到的数据集值,奖励越高,惩罚越小。

    注意事项

    1. 这是对所涉及的数学的严重简化,但它应该可以帮助您入门。另请阅读机器学习中的 overfitting

    2. 对于了解机器学习理论Cross Validated 会是更好的论坛。

    【讨论】:

      猜你喜欢
      • 2020-02-29
      • 2014-02-03
      • 2012-07-07
      • 2018-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-18
      相关资源
      最近更新 更多