Генетический алгоритм (комментарии)
Это сообщение сгенерировано автоматически.
Я правильно понимаю что нейронная сеть обучалась не методом обратного распостранения а ГА ?
А какой тип сети вы обучали? Можно где то по подробней о том что Вы написали прочесть?
nen777w
> Я правильно понимаю что нейронная сеть обучалась не методом обратного
> распостранения а ГА ?
> А какой тип сети вы обучали? Можно где то по подробней о том что Вы написали
> прочесть?
Бэкпроп ошибки тут не подошёл бы, так как нейронные сети имели самые разнообразные строения - проще говоря они представляли собой произвольный граф.
В интернете статья по этой моей работе не публиковалась.
Alexander K в статье Вы писали: количество особей, гены которых будут переданы следующему поколению. Сами эти особи изменению не подвергнутся, дабы не потерять лучшие решения.
Ну, это банальная и давно известная стратегия ;) Элита переходит из поколения в поколение, если остается элитой.
Бэкпроп ошибки тут не подошёл бы, так как нейронные сети имели самые разнообразные строения - проще говоря они представляли собой произвольный граф.
Бэкпроп подойдет везде, где возможно непрерывное дифференцирование целевой функции по адаптивным параметрам нейросети ;) Произвольный граф ничему не мешает.
Виктор Царегородцев
> Ну, это банальная и давно известная стратегия ;) Элита переходит из поколения в
> поколение, если остается элитой.
А никто не говорил, что там придумано что-то новое.
> Бэкпроп подойдет везде, где возможно непрерывное дифференцирование целевой
> функции по адаптивным параметрам нейросети ;) Произвольный граф ничему не
> мешает.
Забыл сказать, что трассировка сигнала происходит за один шаг не от начала сети до конца, а лишь от нейрона к нейрону, но по всем одновременно (параллельно). Вот поэтому обратное распространение ошибки тут не возможно.
Alexander K трассировка сигнала происходит за один шаг не от начала сети до конца, а лишь от нейрона к нейрону, но по всем одновременно (параллельно). Вот поэтому обратное распространение ошибки тут не возможно.
Сорри, что залезаю в оффтопик (по сравнению с названием темы) - но почему был взят именно такой (нестандартный) нейросетевой алгоритм? Ведь что по всем нейронам параллельно, что параллельно-последовательно (по слоям - последовательно, в слое - параллельно, в общем, всё как в бэкпропе) - временные затраты на расчеты будут одного порядка. А любой градиентный алгоритм оптимизации на основе бэкпропа (говорю - любой, т.к. не надо принимать в расчет клинические случаи) будет оптимизировать быстрее ген.алгоритма (случайного поиска с минимальной его - поиска - направленностью).
Т.е. обоснование выбора и использования нейросетевого алгоритма - в студию, если не секретно.
Виктор Царегородцев
> Ведь что по всем нейронам параллельно, что параллельно-последовательно (по
> слоям - последовательно, в слое - параллельно, в общем, всё как в бэкпропе) -
> временные затраты на расчеты будут одного порядка.
Зато мы совсем не зависим от структуры сети: что где соединено - там сигнал и пройдёт. В графе же могут быть циклы.
> А любой градиентный алгоритм оптимизации на основе бэкпропа (говорю - любой,
> т.к. не надо принимать в расчет клинические случаи) будет оптимизировать
> быстрее ген.алгоритма (случайного поиска с минимальной его - поиска -
> направленностью).
Правильное решение нам заранее неизвестно. Известен только результат, а вот как добиться этого результата - это уже дело генетического алгоритма. Градиентные спуски тут не применимы, так как неизвестно к чему стремиться.
сложновато написано. нет простейшего цикла
selection
crossover
mutation
evaluate
и примера нет. т.е. те кто понимают что такое ГА - этот термин бесполезен, а новичкам всеравно непонятно.
Alexander K Градиентные спуски тут не применимы, так как неизвестно к чему стремиться.
Опаньки. Для ГА что-то на роль фитнес-функции у Вас нашлось, а для бэкпропа то же самое почему-то вдруг не подошло?
Виктор Царегородцев
> Опаньки. Для ГА что-то на роль фитнес-функции у Вас нашлось, а для бэкпропа то
> же самое почему-то вдруг не подошло?
Финтесс-функция это расстояние, которое преодолел агент за счёт движений конечностями. Сформулируйте эту задачу для бэкпропа ошибки.
Вот и не нашлось ответа в копилке знаний современной нейроинформатики. Никто в интернетах не работает в нужном направлении с нейронными сетями.
Всё что есть это боян 20-и летней давности и ничего нового.
Финтесс-функция это расстояние, которое преодолел агент за счёт движений конечностями. Сформулируйте эту задачу для бэкпропа ошибки.
Сначала входы-выходы у нейросети опишите - что сеть получает и что должна выдавать. Главное - что должна выдавать, и какого типа эти данные (номинальные, типа выбора направления движения влево/вперед/вправо/назад, или количественные, например, угол поворота и направление последующего элементарного акта движения в новом направлении)
Виктор Царегородцев
> Сначала входы-выходы у нейросети опишите - что сеть получает и что должна
> выдавать.
На входе углы суставов конечностей агента, на выходе крутящий момент (в процентах от максимального), который будет приложен к соответствующим суставам.
Ну и поскольку Вы в итоге считаете расстояние, пройденное агентом, почему нельзя сделать это расстояние суммой расстояний по отдельным элементарным шагам?
Нейросеть будет такой. На входах - не только углы суставов, но и крутящие моменты для них. На выходе - прогнозируемое перемещение "тушки" робота за один шаг при данных условиях.
Сначала программно решаем прямую задачу кинематики (определяем, какое "одношаговое" перемещение, возможно, и разворот робота тоже, будет соответствовать для применению тех или иных крутящих моментов к тем или иным углам положений суставов). Решаем нейронной сетью - решаем задачу аппроксимации функции или вектор-функции многих переменных. Исходные данные для обучения генерируем по программной модели движения робота, обучаем бэкпропом.
Далее впихиваем нейросеть, обученную прогнозировать расстояние перемещения на отдельном шаге робота, в робота и на нейросетке начинаем решать обратную задачу кинематики. Требуем на выходе сети значение максимально возможного перемещения и на основе вычисленного обратным распространением градиента начинаем подстраивать ОТДЕЛЬНЫЕ ВХОДЫ нейросети, а именно, значения крутящих моментов. Возможно, потребуется несколько итераций "обучения входов", чтобы выход сети совпал с требуемым или вышел на какой-то застабилизированный уровень. Никакие коэффициенты сети при этом не меняются - только отдельные "фиктивные" входы. Ну а потом подаём спрогнозированные для входов нужные значения на приводы суставов. Т.е. прогнозные данные снимаются не с выхода сети, а с её входа. Да - каждый этап решения обратной задачи начинаем с нулевых моментов на входе сети - чтобы в итоге поворачивать суставы на возможно более меньший угол (чтобы робот шёл быстро, но плавненько, а не скакал кузнечиком)
Ну и при решении обратной задачи кинематики может потребоваться добавить к целевой функции еще какие-то штрафные компоненты (для обхода препятствий, например, как это делается для решения задачи управления многозвенным манипулятором в среде с препятствиями, или для разрешения еще каких-то коллизий, если, например, робот не может стоять меньше чем на каком-то минимальном числе ног и фатально падает носом в землю).
Виктор Царегородцев
> Ну и поскольку Вы в итоге считаете расстояние, пройденное агентом, почему
> нельзя сделать это расстояние суммой расстояний по отдельным элементарным
> шагам?
Либо в конечном счёте это будет не самое большое расстояние, либо я не так понял (потому что не обязательно в лучшем решении на каждом шаге должно быть положительное расстояние).
> Исходные данные для обучения генерируем по программной модели движения робота,
> обучаем бэкпропом.
Откуда мы берём эту программную модель? Если Вы предлагаете решить прямую задачу кинематики "программно" (без НС), т.е. получить необходимую зависимость, то я не вижу смысла зачем нам вообще ещё дальше что-то решать с помощью нейронных сетей, ведь уже всё готово.
ГА здесь единственный верный вариант на данный момент, ничего лучше ещё не придумано, это я Вам точно говорю. Чтобы моделировать нужную _многокадровую_ деятельность - таких алгоритмов для нейронных сетей нет, более того самих сетей то почти нет, ну там разве что сеть Элмана, которой уже двадцать с лишним лет, и аналоги, которые кроме как ГА ничем и не умеют обучать.
А Ваш метод мне кажется странным, мы нашли решение (ещё не факт что лучшее), а потом пытаемся заставить нейронную сеть выполнять наш сценарий.
Это зачем это?
Может конечно я не так понял. Надеюсь модеры разрешат нам продолжить разговор на эту тему здесь.
Тема в архиве.