Интересно, можете ли вы использовать тип сети NEAT с неконтролируемым обучением, используя структуру Encog. Я хочу воспользоваться их самоорганизацией, так как моя система не имеет характеристик сезонности. Насколько я смог обнаружить, видел только примеры сетей, контролируемых с помощью NEAT.
Как использовать сеть Encog NEAT с неконтролируемым обучением?
Ответы (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.
NeuralDataSet validationSet = new BasicNeuralDataSet(input,null);
, но это не так. Выдает исключение Попытка вызвать метод интерфейса 'double[] org.encog.ml.data.MLData.getData()' для нулевой ссылки на объект - person murt   schedule 13.01.2016