Как использовать сеть Encog NEAT с неконтролируемым обучением?

Интересно, можете ли вы использовать тип сети NEAT с неконтролируемым обучением, используя структуру Encog. Я хочу воспользоваться их самоорганизацией, так как моя система не имеет характеристик сезонности. Насколько я смог обнаружить, видел только примеры сетей, контролируемых с помощью NEAT.


person DanOver    schedule 29.09.2015    source источник
comment
Я думал, что решение будет NeuralDataSet validationSet = new BasicNeuralDataSet(input,null);, но это не так. Выдает исключение Попытка вызвать метод интерфейса 'double[] org.encog.ml.data.MLData.getData()' для нулевой ссылки на объект   -  person murt    schedule 13.01.2016


Ответы (1)


Отказ от ответственности: мои знания как ML, так и Encog невелики.

Я считаю, что пример "коробки" на самом деле является демонстрацией неконтролируемого обучения с использованием возможностей Encog NEAT.

Для неконтролируемого обучения реализуйте интерфейс CalculateScore и передайте этот оценщик оценок NEATUtil.constructNEATTrainer(pop, score) при создании сети.

В примере BoxesScore реализует этот интерфейс и вызывает TrialEvaluation для расчета пригодности:

public double calculateFitness() {
    final double threshold = BoxesScore.EDGE_LEN * BoxesScore.SQR_LEN;
    double rmsd = Math.sqrt(this.accDistance / 75.0);
    double fitness;
    if(rmsd > threshold) {
        fitness = 0.0;
    } else {
        fitness = (((threshold-rmsd) * 100.0) / threshold) + (this.accRange / 7.5);
    }

    return fitness
}

Из остальной части кода вы увидите, что результат не является каким-то жестко запрограммированным списком тестовых случаев и ожидаемых результатов.

Таким образом, пока вы можете определить, что означает «пригодность» для вашего решения, вы можете выполнять обучение без учителя с реализацией Encog NEAT.

person Logical Fallacy    schedule 25.05.2016