Suslik
> разумеется, чтобы реакция на подобные воздействия была адекватной, ему нужно
> по-нормальному на ходу дообучаться
Вот.
LiveBaster
> Вот.
что "вот"-то? то, что ты называешь мышлением, у них называется дообучением. в чём разница-то? или ты хочешь сказать, что твоё поделие не занимается никакими вычслениями после запуска? оно не занимается дообучением?
Suslik
> в чём разница-то? или ты хочешь сказать, что твоё поделие не занимается
> никакими вычслениями после запуска?
Разница в том, что "их дообучение" требует образцов движений, которым надо обучать - там вроде требуется около 1000 итераций в видео, чтобы существо шагало и не падало.
Вот я даже не знаю, как при помощи их метода сделать аналог крайнего видео, где Страус с качелей улетает и падает совершенно в случайную позу, а потом успешно встаёт на ноги в заданное положение.
Я уже молчу про всякие разные препятствия, которые могут встретиться на пути. Как под ещё неизвестное будущее их метод дообучит их существ?
LiveBaster
> Разница в том, что "их дообучение" требует образцов движений, которым надо обучать
может, хватит свои фантазии за действительное выдавать? ты даже не читал, как оно работает, зато уже 80+ страниц пытаешься проталкивать своё "ноу-хау". нет там никаких образцов движений, алгоритм оптимизации итеративный и в видео показывают, к какому решению он приходит на каждой итерации.
> Вот я даже не знаю, как при помощи их метода сделать аналог крайнего видео, где Страус с качелей улетает и падает совершенно в случайную позу, а потом успешно встаёт на ноги в заданное положение.
кучу раз уже было сказано, что дообучение реализуется тривиально, если сам алгоритм обучения сходится быстро. я уже выкладывал видео 4 миллиона раз, как сам реализовал подобную схему, но это было до публикации их пейпера, поэтому я многое в нём сделал не оптимально и можно было то же самое сделать гораздо эффективнее. вот тут он управляется кнопками, которые меняют целевой функционал, чтобы он на ходу учился стоять, ходить влево и вправо:
на сегодняшнем железе то же самое запросто бы работало в 3д в реалтайме, даже учитывая кучу очевидных оптимизаций, о которых я тогда не знал.
если он падает во время ходьбы, то это вообще никак в коде отдельно не обрабатывается, просто оптимизирующий алгоритм по ходу дообучения (которое происходит постоянно) вынужден поднять робота, чтобы максимизировать его скорость передвижения:
Suslik
> вынужден поднять робота
Чтобы поднять робота в 3D, необходимо сначала найти траектории движения его конечностей, в конечном итоге, приводящие к правильному конечному положению тела - недостаточно "максимизировать его скорость передвижения".
LiveBaster
> Чтобы поднять робота в 3D, необходимо сначала найти траектории движения его
> конечностей, в конечном итоге, приводящие к правильному конечному положению
> тела - недостаточно "максимизировать его скорость передвижения".
в том-то и дело, что нет, потому что чтобы максимизировать скорость, он просто как следствие обязан найти способ подняться, потому что в лежачем положении он передвигаться не сможет достаточно эффективно. никакой отдельной команды на "сначала встань, потом иди" нету, ему говоришь "иди" и для этого он сам приходит к выводу, что единственный способ это сделать — это сначала научиться вставать. именно таким образом работают оптимизирующие алгоритмы. чем более сильный оптимизирующий алгоритм используется, тем более продвинутые цепочки действий он может таким образом находить.
при этом в словосочетании "приходит к выводу" здесь нет никакого волшебства, здесь поиск осуществляется в пространстве возможных решений, это алгоритмы сродни поиску пути, где можно сначала найти какой-то неоптимальный путь, а потом, использовав больше итераций, оптимизировать его и делать всё короче. так же и люди когда учатся плавать, например, сначала учатся плыть хоть как-то, а потом по ходу ищут оптимальный способ.
Suslik
> просто как следствие обязан найти способ подняться
А для этого ему надо "найти траектории движения его конечностей, в конечном итоге, приводящие к правильному конечному положению тела".
Иначе, не поднимется.
Suslik
> где можно сначала найти какой-то неоптимальный путь
См. мои слова выше:
"Давайте сначала определим разницу между типами задач:
1. оптимизация
2. поиск решения
Чтобы оптимизировать решение, сначала необходимо получить это самое решение.
Например, имея образец ходьбы, можно его оптимизировать под разные типы тел.
См. пример на видео от Suslik - это обычная задача оптимизации.
В этой ветке речь идёт о другом типе задач - поиске решений.
Разум/интеллект - это в первую очередь поиск решений, а только затем оптимизация найденных решений.
Например, любой спортсмен ежедневно решает задачу по оптимизации ранее найденных решений - тренер ему показывает, как правильно, а спортсмен оптимизирует готовое решение под своё тело."
Основная проблема Разума - найти этот первый "неоптимальный путь". В общем-то, это и есть Разум.
Основная задача LiveBaster - это искать этот самый первый, пусть даже неоптимальный путь.
Дальше всё просто - обычный метод оптимизации, которых великое множество.
LiveBaster
> А для этого ему надо "найти траектории движения его конечностей, в конечном итоге, приводящие к правильному конечному положению тела". Иначе, не поднимется.
я уже говорил, что он это делает автоматически в ходе работы алгоритма оптимизации. этот алгоритм сам должен найти зависимость между управляющими сигналами и параметрами датчиков, чтобы сгенерировать эффективное решение. при этом алгоритм работает с соврешенно абстрактными параметрами, которые он оптимизирует, он не знает, что на самом деле он ищет способ роботу правильно дрыгать ногами или что он пытается его поднять на ноги — он только ищет способ достичь максимум в целевой функции (скорость передвижения). всё остальное — лишь путь, по которому он этот максимум достигает.
это основы теории управления, а не какие-то прорывные технологии. так работают алгоритмы глобальной оптимизации ещё с 90-х годов, когда они начали первые появляться более-менее эффективные. в этом нет никакого волшебства, это чистая математика.
LiveBaster
> Чтобы оптимизировать решение, сначала необходимо получить это самое решение.
в качестве изначального решения выбирается случайный шум. нет никакого "образца", с которого всё начинается, на первой итерации алгоритма робот совершает совершенно рандомные действия.
> Например, имея образец ходьбы, можно его оптимизировать под разные типы тел.
брехня. никто так не делает, ты это сам придумал. все алгоритмы оптимизации по ссылкам выше начинают со случайного решения, либо с нулевого инпута (разницы в конечном итоге нет).
> Разум/интеллект - это в первую очередь поиск решений, а только затем оптимизация найденных решений.
лол ты серьёзно думаешь, что кто-то тебе даёт решение, которое ты "оптимизируешь"? да чёрта с два, никто тебе его не даст. оптимизация на каждом шаге стартует с того, на чём закончили на предыдущем. а первый шаг генерится совершенно случайно, просто рандомное дрыганье как у тебя. поиск решения — это оптимизация его на разных масштабах: ты сначала оптимизируешь случайный шум, чтобы получить общий очень грубый вид, а потом оптимизируешь всё точнее и точнее, избавляясь от ненужных движений.
flint2
> ТС льёт воду общими фразами, а сути нет.
Все эти объяснения ТСа похожи на разводилово для инвесторов.
upd
ой, нет.. просто алгоритм гамно, а афтар отчаянно не хочет это признавать
а вобще ветку хорошо читать перед сном, от таких "объяснений" сразу в сон клонить начинает
Исследовательская часть проекта завершена.
Далее ПО LiveBaster буду развивать в направлении использования в практических задачах.
Если у кого-то есть проекты, в которых может быть использована библиотека LiveBaster, то пишите - обсудим варианты сотрудничества.
Что сейчас умеет LiveBaster:
1. один модуль может управлять одним объектом "по целям".
Например, можно управлять кондиционером, с целью поддержания заданной температуры в помещении.
2. множество модулей могут объединяться в одну систему управления, с целью достижения общей цели.
3. каждый отдельный модуль самостоятельно синтезирует микропрограммы и сохраняет их в своей Базе Данных (БД) для дальнейшего использования.
4. микропрограммы непрерывно самостоятельно улучшаются, под воздействием окружающей среды.
Встроенные алгоритмы оптимизации отсутствуют.
5. микропрограммы платформонезависимы и модули могут обмениваться ими между собой.
6. общая программа управления выглядит как множество независимых микропрограмм, которые взаимосодействуют в достижении общей цели.
Теоретически, уже сейчас можно создавать простых роботов, которые могут самостоятельно приспосабливаться к окружающей среде и выживать в ней - достаточно задать базовые потребности, в виде списка целей. Только пока не понятно, кому такие роботы могут потребоваться.
LiveBaster
Ух ты, а я уже соскучился, а что, кина с новыми достижениями не будет?
LiveBaster
> Только пока не понятно, кому такие роботы могут потребоваться.
Это да.
LiveBaster
Хотелось бы увидеть какие-нибудь достижения на практике.
Например, вот: https://gamedev.ru/projects/forum/?id=246996
Условия там простые и понятные, можешь "натравить" свой ИИ на конкурсное задание? Было бы интересно посмотреть результат и сразу видно эффективность.
Mikle
> Хотелось бы увидеть какие-нибудь достижения на практике.
> Например, вот: https://gamedev.ru/projects/forum/?id=246996
> Условия там простые и понятные, можешь "натравить" свой ИИ на конкурсное
> задание? Было бы интересно посмотреть результат и сразу видно эффективность.
Автопилоты для автомобилей мне были интересны в 2003 году:
Эта машинка со стерео зрением и довольно резво каталась, пришлось даже замедлять, чтобы компьютер успевал 2 картинки с видеокамер анализировать и решения принимать.
В Вашем конкурсе не увидел постановки цели. Предполагается, что ИИ должен суметь компенсировать помехи от физмодели автомобиля, чтобы доехать до финиша? Вроде как простые алгоритмы давно с этим справляются. Или всё-таки не справляются (я давно не смотрел, что там происходит, т.к. Tesla, Yandex и прочие уже по улицам ездят)?
Тема в архиве.