Показать сообщение отдельно
  #1  
Старый 24.11.2010, 04:20
Новичок

Отправить личное сообщение для Morkonwen Посмотреть профиль Найти все сообщения от Morkonwen
 
Регистрация: 24.11.2010
Сообщений: 3

Генетика + Обратное распространение
Понимаю, что вряд ли мне удастся коротко описать архитектуру и задачу, но все-таки попробую. Хочется услышать критику или просто комментарии+ есть пара вопросов. Спасибо!

Делаю программу - мир в котором живут существа. Мир довольно сложный, но для управления существами каждому из них соответствует своя нейросеть. Существа по ходу жизни могут обучатся, опираясь на улучшение или ухудшение собственных показателей. Кроме того, они могут оставлять потомство. При этом сеть ребенка это случайное смешивание сетей родителей.

Теперь самое главное - архитектура:

Это реккурентная сеть с двумя скрытыми слоями(+ вход + выход итого 4 слоя). Входной слой - зрение существа + контекстные нейроны, на которые идут сигналы обратной связи от всех других слоев, кроме входного.

1)Само наличие обратной связи оставляется на совести эволюции. Между двумя нейронами может возникнуть обратная связь, а может не возникнуть - это случайная мутация.

2)Кроме того количество нейронов в скрытых слоях не фиксировано - это тоже мутация, но если нейрон в скрытом слое появился, то он обязательно связан со всеми нейронами следующего слоя и со всеми предидущего.

3)Обратная связь не может идти только к любому из предшевствующих слоев, но не на входные нейроны,

Обратное распространение реализуется этаким упрощенным "разворачиванием сети" по всем правилам рекурентную сеть надо развернуть на максимальную глубину ходов, просчитать все ошибки на всех шагах и ТОЛЬКО ПОТОМ изменить веса. Я же делаю грубее - просчитываю ошибки для ОДНОГО шага по времени, меняю веса, затем вычисляю ошибки для предидущего шага по времени, используя уже модифицированную сеть. Это позволяет не хранить приращения для всех шагов, что экономит и память и время.

Вопросов два первый, конечно, не сделал ли я где то очень тупой ошибки в концепциях.

А второй: После подачи сигнала на входные и контекстные нейроны, они суммируются и производится нелинейное преобразование, что вроде бы для входных слоев обычно не делают. Это праивльно?