Я был вдохновлен этим вопросом XOR Neural Network in Java Вкратце, обучается нейронная сеть XOR и число итераций, необходимых для завершения обучения зависит от семи параметров (альфа, gamma3_min_cutoff, gamma3_max_cutoff , gamma4_min_cutoff, gamma4_max_cutoff, gamma4_min_cutoff, gamma4_max_cutoff). Я хотел бы свести к минимуму количество итераций, необходимых для обучения, путем настройки этих параметров.Минимизация количества itererations путем корректировки входных параметров в Java
Итак, я хочу, чтобы переписать программу из
private static double alpha=0.1, g3min=0.2, g3max=0.8;
int iteration= 0;
loop {
do_something;
iteration++;
if (error < threshold){break}
}
System.out.println("iterations: " + iteration)
в
for (double alpha = 0.01; alpha < 10; alpha+=0.01){
for (double g3min = 0.01; g3min < 0.4; g3min += 0.01){
//Add five more loops to optimize other parameters
int iteration = 1;
loop {
do_something;
iteration++;
if (error < threshold){break}
}
System.out.println(inputs);
//number of iterations, alpha, cutoffs,etc
//Close five more loops here
}
}
Но этот метод вынуждает скотина не будет эффективным. Учитывая 7 параметров и сотни итераций для каждого расчета, даже с 10 точками для каждого параметра, переводится в миллиарды операций. Нелинейная подгонка должна выполняться, но для этого обычно требуются частные производные, которых я бы не имел в этом случае.
Есть ли пакет Java для такого рода оптимизации?
Спасибо заранее, Степана
Что касается (1), то вы имеете в виду (а) найти локальный минимум для x1, затем x2, удерживая новый x1, затем x3, удерживая новые x1 и x2, а затем перебираете этот процесс? – Stepan