Задать вопрос
@ehevnlem
Программирую с 1975, в интернете с 1993.

Используют ли при обучении нейронных сетей генетические алгоритмы?

Здравствуйте! Обучение нейронной сети это задача поиска экстремума функции многих переменных. Сейчас наиболее примениемые это генетические алгоритмы. Они не самые эффективные, но хорошо обходят овраги и локальные экстремумы. Но я больше слышу о градиентных методах при обучении.
Используют ли генетические алгоритмы?
  • Вопрос задан
  • 252 просмотра
Подписаться 2 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 4
mayton2019
@mayton2019
Bigdata Engineer
Я думаю да. Более того. Если нас попросят перечислить конкретные алгоритмы генетики - то
оказывается что мы ничего назвать не можем. ГА - это даже не алгоритм а это просто подход
к селекции чего либо. Например когда вы выбираете в магазине железа себе материнку и
проц и видяшку - вы решаете ГА. Вы выбираете. Делаете кроссовер (из двух удачных конфигураций
берете части) и делаете мутации (берете и что-то меняете). И в конце выбираете по цене
и по индексу бенчмарка что-то себе приятное. Лучшая хромосома.

Тоже самое при обучении. Какую топологию сети взять? Сверточные. Больцманы. Хопфилда.
Сколько скрытых слоёв? Какую функцию активации? Это все селекция и кросс и мутация.
Тоесть вы будете как Мичурин среди яблонь ходить и выбирать лучшие образчики конфигураций
чтоб совокупить их и родить новую сеть-мутанта.
Ответ написан
freeExec
@freeExec
Участник OpenStreetMap
Использовать то можно, но он не так эффективен, особенно если параметров больше десятка.
Ответ написан
@AlexSku
не буду отвечать из-за модератора
Не используются, т.к. все функции дифференцируемые, поэтому всегда можно подсчитать градиент и использовать метод обратного распространения ошибки.
Ответ написан
@imageman
Даже для маленькой (по нынешним меркам) нейросети обучение градиентными методами будет быстрее на несколько порядков по сравнению с ГА (я подозреваю, что как минимум на 2-3 десятичных порядка быстрее). Когда же речь зайдет о больших нейросетях..... Там процесс обучения итак медленный, а замедлять его при помощи ГА не стоит. Тут в комментариях начинают спорить про дифференцируемость и про оптимизацию. Все нынешние нейросети делаются (проектируются) из расчета на градиентное обучение (метод обратного распространения ошибки), т.к. это сейчас самый быстрый способ. Оптимизация это, видимо, подбор гиперпамаретров? Да, он может делаться через ГА, но не делается. Для ГА характерно слишком большое число итераций, намного больше 100, а каждая итерация может занимать сутки. Слишком долго. По моим наблюдениям для подбора оптимальных параметров сильно нелинейной функции от 50 переменных ГА нужно более миллиона итераций. Для 18 переменных - 50 тысяч, для 23 - 200 тысяч. lit999.narod.ru/soft/ga/index.html - страница с моими старыми экспериментами (сравнение ГА с алгоритмом роя пчел) и https://imageman72.livejournal.com/5373.html.

Но если нам нужно сделать какую-то совсем нестандартную нейросеть, при этом очень крохотную - может и пригодится ГА (было у меня и такое решение, но я не сравнивал его с градиентным спуском).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы