2016-03-11 7 views
1

Я был вдохновлен этим вопросом 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 для такого рода оптимизации?

Спасибо заранее, Степана

ответ

0

У вас есть несколько вариантов - в зависимости от уравнений, определяющих параметр error.

  1. Выберите точку в пространстве параметров и используйте итеративный процесс, чтобы идти к минимуму. По существу, добавляйте дельта к каждому параметру и выбирайте в зависимости от того, что уменьшает ошибку самым большим - rince - repeat.
  2. Выберите каждый pareameter и выполните поиск в двоичном порядке между его пределами, чтобы найти его минимум. Будет работать только в том случае, если эффект параметра является линейным.
  3. Решите систему, используя технику Operations-Research для отслеживания минимума.
+0

Что касается (1), то вы имеете в виду (а) найти локальный минимум для x1, затем x2, удерживая новый x1, затем x3, удерживая новые x1 и x2, а затем перебираете этот процесс? – Stepan