Как нормализовать нейронные сети для генетических алгоритмов? - PullRequest
1 голос
/ 25 февраля 2011

Я пытаюсь обучить простую нейронную сеть с прямой связью, используя генетический алгоритм, однако она оказывается довольно неэффективной, потому что изоморфные нейронные сети выглядят иначе, чем генетический алгоритм.

Возможно иметь несколько нейронных сетей, которые ведут себя одинаково, но их нейроны упорядочены по-разному слева направо и на разных уровнях. Генетическим алгоритмам эти сети будут казаться совершенно разными. Поэтому любая попытка сделать кроссовер не имеет смысла, и GA в итоге оказывается таким же эффективным, как и восхождение на холм.

Можете ли вы порекомендовать способ нормализации сетей, чтобы они выглядели более прозрачными для генетического алгоритма?

1 Ответ

0 голосов
/ 27 февраля 2011

Я бы назвал кроссовер в этом контексте «неэффективным», а не «бессмысленным». Одним из способов устранения дублирования, о котором вы упомянули, может быть сортировка нейронов скрытого слоя в некотором каноническом порядке и использование этого порядка во время кроссовера, что может по крайней мере уменьшить дублирование, встречающееся в скрытом весовом пространстве.

Кроме того, вы можете подобрать веса выходного слоя более прямым методом, чем генетические алгоритмы. Вы не говорите, какая метрика производительности используется, но многие общие показатели имеют довольно простые оптимизации. Так, например, вы можете сгенерировать новый скрытый слой, используя генетические операторы, затем подогнать выходной слой по логистической регрессии и попросите GA оценить всю сеть.

...