Войти
ПрограммированиеФорумИгровая логика и ИИ

Генетический алгоритм (комментарии)

Страницы: 1 2 3 Следующая »
#0
23:03, 22 июля 2010

Генетический алгоритм (комментарии)

Это сообщение сгенерировано автоматически.


#1
23:03, 22 июля 2010

Я правильно понимаю что нейронная сеть обучалась не методом обратного распостранения а ГА ?
А какой тип сети вы обучали? Можно где то по подробней о том что Вы написали прочесть?

#2
14:01, 23 июля 2010

nen777w
> Я правильно понимаю что нейронная сеть обучалась не методом обратного
> распостранения а ГА ?
> А какой тип сети вы обучали? Можно где то по подробней о том что Вы написали
> прочесть?
Бэкпроп ошибки тут не подошёл бы, так как нейронные сети имели самые разнообразные строения - проще говоря они представляли собой произвольный граф.
В интернете статья по этой моей работе не публиковалась.

#3
15:56, 23 июля 2010

Alexander K в статье Вы писали: количество особей, гены которых будут переданы следующему поколению. Сами эти особи изменению не подвергнутся, дабы не потерять лучшие решения.
Ну, это банальная и давно известная стратегия ;) Элита переходит из поколения в поколение, если остается элитой.

Бэкпроп ошибки тут не подошёл бы, так как нейронные сети имели самые разнообразные строения - проще говоря они представляли собой произвольный граф.
Бэкпроп подойдет везде, где возможно непрерывное дифференцирование целевой функции по адаптивным параметрам нейросети ;) Произвольный граф ничему не мешает.

#4
16:13, 23 июля 2010

Виктор Царегородцев
> Ну, это банальная и давно известная стратегия ;) Элита переходит из поколения в
> поколение, если остается элитой.
А никто не говорил, что там придумано что-то новое.

> Бэкпроп подойдет везде, где возможно непрерывное дифференцирование целевой
> функции по адаптивным параметрам нейросети ;) Произвольный граф ничему не
> мешает.
Забыл сказать, что трассировка сигнала происходит за один шаг не от начала сети до конца, а лишь от нейрона к нейрону, но по всем одновременно (параллельно). Вот поэтому обратное распространение ошибки тут не возможно.

#5
16:13, 24 июля 2010

Alexander K трассировка сигнала происходит за один шаг не от начала сети до конца, а лишь от нейрона к нейрону, но по всем одновременно (параллельно). Вот поэтому обратное распространение ошибки тут не возможно.
Сорри, что залезаю в оффтопик (по сравнению с названием темы) - но почему был взят именно такой (нестандартный) нейросетевой алгоритм? Ведь что по всем нейронам параллельно, что параллельно-последовательно (по слоям - последовательно, в слое - параллельно, в общем, всё как в бэкпропе) - временные затраты на расчеты будут одного порядка. А любой градиентный алгоритм оптимизации на основе бэкпропа (говорю - любой, т.к. не надо принимать в расчет клинические случаи) будет оптимизировать быстрее ген.алгоритма (случайного поиска с минимальной его - поиска - направленностью).
Т.е. обоснование выбора и использования нейросетевого алгоритма - в студию, если не секретно.

#6
22:21, 24 июля 2010

Виктор Царегородцев
> Ведь что по всем нейронам параллельно, что параллельно-последовательно (по
> слоям - последовательно, в слое - параллельно, в общем, всё как в бэкпропе) -
> временные затраты на расчеты будут одного порядка.
Зато мы совсем не зависим от структуры сети: что где соединено - там сигнал и пройдёт. В графе же могут быть циклы.

> А любой градиентный алгоритм оптимизации на основе бэкпропа (говорю - любой,
> т.к. не надо принимать в расчет клинические случаи) будет оптимизировать
> быстрее ген.алгоритма (случайного поиска с минимальной его - поиска -
> направленностью).
Правильное решение нам заранее неизвестно. Известен только результат, а вот как добиться этого результата - это уже дело генетического алгоритма. Градиентные спуски тут не применимы, так как неизвестно к чему стремиться.

#7
13:46, 25 июля 2010

сложновато написано. нет простейшего цикла
selection
crossover
mutation
evaluate

и примера нет. т.е. те кто понимают что такое ГА - этот термин бесполезен, а новичкам всеравно непонятно.

#8
16:57, 25 июля 2010

Alexander K Градиентные спуски тут не применимы, так как неизвестно к чему стремиться.

Опаньки. Для ГА что-то на роль фитнес-функции у Вас нашлось, а для бэкпропа то же самое почему-то вдруг не подошло?

#9
18:24, 25 июля 2010

Виктор Царегородцев
> Опаньки. Для ГА что-то на роль фитнес-функции у Вас нашлось, а для бэкпропа то
> же самое почему-то вдруг не подошло?
Финтесс-функция это расстояние, которое преодолел агент за счёт движений конечностями. Сформулируйте эту задачу для бэкпропа ошибки.

#10
19:26, 26 июля 2010

Вот и не нашлось ответа в копилке знаний современной нейроинформатики. Никто в интернетах не работает в нужном направлении с нейронными сетями.
Всё что есть это боян 20-и летней давности и ничего нового.

#11
16:10, 27 июля 2010

Финтесс-функция это расстояние, которое преодолел агент за счёт движений конечностями. Сформулируйте эту задачу для бэкпропа ошибки.

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

#12
16:20, 27 июля 2010

Виктор Царегородцев
> Сначала входы-выходы у нейросети опишите - что сеть получает и что должна
> выдавать.
На входе углы суставов конечностей агента, на выходе крутящий момент (в процентах от максимального), который будет приложен к соответствующим суставам.

#13
16:48, 28 июля 2010

Ну и поскольку Вы в итоге считаете расстояние, пройденное агентом, почему нельзя сделать это расстояние суммой расстояний по отдельным элементарным шагам?
Нейросеть будет такой. На входах - не только углы суставов, но и крутящие моменты для них. На выходе - прогнозируемое перемещение "тушки" робота за один шаг при данных условиях.
Сначала программно решаем прямую задачу кинематики (определяем, какое "одношаговое" перемещение, возможно, и разворот робота тоже, будет соответствовать для применению тех или иных крутящих моментов к тем или иным углам положений суставов). Решаем нейронной сетью - решаем задачу аппроксимации функции или вектор-функции многих переменных. Исходные данные для обучения генерируем по программной модели движения робота, обучаем бэкпропом.
Далее впихиваем нейросеть, обученную прогнозировать расстояние перемещения на отдельном шаге робота, в робота и на нейросетке начинаем решать обратную задачу кинематики. Требуем на выходе сети значение максимально возможного перемещения и на основе вычисленного обратным распространением градиента начинаем подстраивать ОТДЕЛЬНЫЕ ВХОДЫ нейросети, а именно, значения крутящих моментов. Возможно, потребуется несколько итераций "обучения входов", чтобы выход сети совпал с требуемым или вышел на какой-то застабилизированный уровень. Никакие коэффициенты сети при этом не меняются - только отдельные "фиктивные" входы. Ну а потом подаём спрогнозированные для входов нужные значения на приводы суставов. Т.е. прогнозные данные снимаются не с выхода сети, а с её входа. Да - каждый этап решения обратной задачи начинаем с нулевых моментов на входе сети - чтобы в итоге поворачивать суставы на возможно более меньший угол (чтобы робот шёл быстро, но плавненько, а не скакал кузнечиком)
Ну и при решении обратной задачи кинематики может потребоваться добавить к целевой функции еще какие-то штрафные компоненты (для обхода препятствий, например, как это делается для решения задачи управления многозвенным манипулятором в среде с препятствиями, или для разрешения еще каких-то коллизий, если, например, робот не может стоять меньше чем на каком-то минимальном числе ног и фатально падает носом в землю).

#14
17:35, 28 июля 2010

Виктор Царегородцев
> Ну и поскольку Вы в итоге считаете расстояние, пройденное агентом, почему
> нельзя сделать это расстояние суммой расстояний по отдельным элементарным
> шагам?
Либо в конечном счёте это будет не самое большое расстояние, либо я не так понял (потому что не обязательно в лучшем решении на каждом шаге должно быть положительное расстояние).

> Исходные данные для обучения генерируем по программной модели движения робота,
> обучаем бэкпропом.
Откуда мы берём эту программную модель? Если Вы предлагаете решить прямую задачу кинематики "программно" (без НС), т.е. получить необходимую зависимость, то я не вижу смысла зачем нам вообще ещё дальше что-то решать с помощью нейронных сетей, ведь уже всё готово.

ГА здесь единственный верный вариант на данный момент, ничего лучше ещё не придумано, это я Вам точно говорю. Чтобы моделировать нужную _многокадровую_ деятельность - таких алгоритмов для нейронных сетей нет, более того самих сетей то почти нет, ну там разве что сеть Элмана, которой уже двадцать с лишним лет, и аналоги, которые кроме как ГА ничем и не умеют обучать.

А Ваш метод мне кажется странным, мы нашли решение (ещё не факт что лучшее), а потом пытаемся заставить нейронную сеть выполнять наш сценарий.
Это зачем это?
Может конечно я не так понял. Надеюсь модеры разрешат нам продолжить разговор на эту тему здесь.

Страницы: 1 2 3 Следующая »
ПрограммированиеФорумИгровая логика и ИИ

Тема в архиве.