Разбирался с PyChrono, опенсорсной средой для моделирования механических явлений. И случайно наткнулся на пару интересных видео, посвященных обучению нейросетей.
Смысл происходящего следующий. Есть "физическое пространство", за описание которого отвечает среда программирования (PyChrono или аналог). В среде создаются некоторые объекты. Например - какая-нибудь тележка - робот. Или что-то более сложное. К этому объекту "извне" (для "физической среды") подключают нейросеть, которая становится его "мозгами". Мозги могут управлять объектом - в пределах заданных ограничений. И в этой программной "физической среде" происходит обучение нейросети на выполнение некой задачи. Например - учат ходить робота-собаку Boston Dynamics.
Преимущества понятны. Быстро, дешево. Плюс, поскольку на Западе массово внедряются всякие "информационные двойники" реальных изделий, такой подход реально может ускорить создание новой техники.
Заинтересовал меня процесс обучения нейросетей. Ничем подобным я не занимаюсь, так что все что ниже - взгляд человека со стороны, который может в чем-то сильно ошибаться.
Наиболее интересными мне показались два видео. Первое - где нейросети обучали боксу - https://www.youtube.com/watch?v=SsJ_AusntiU
В "физической среде" создается "человечек", состоящий из палочек, грузиков и шарнирных соединений. Человечку даются какие-то мышцы. "Нервная система" передается под управление нейросети. Дальше нейросети дают очки за какой-то результат. Условно, удар в корпус - 10 очков. Удар в голову - 100. Нокдаун - 1000.
Дальше начинается обучение нейросети. Натаскивается ИИ на максимизацию очков.
"Квант" обучения - одна прогонка модели, один бой. Как быстро учатся нейросети?
Где-то на стомиллионной прогонке нейросеть научилась стоять и не падать (какое-то время, потом - падала).
250 миллионов боев - нейросеть научилась драться в стиле "пьяный мастер" - вялые нецеленаправленные толчки с очень плохой координацией.
420 миллионов боев - похоже на драку трех- четырехлетних детей.
Миллиард итераций - что-то похожее на поединок боксеров.
Недавно мы обсуждали заявления мастодонтов ИИ-отрасли о том, что нейросети умнее людей - https://dzen.ru/media/id/610d2c9893806a369a61c690/v-presse-raskruchivaetsia-informacionnaia-kampaniia-iakoby-napravlennaia-protiv-645af99d499561420503bed4
В частности, вбрасывался тезис о том, что нейросети учатся быстрее людей. Глядя на это видео - сложно согласиться с таким заявлением.
Давайте сравним. Человек воспринимает реальность дискретно с "квантом" восприятия порядка 0,1 с. В год умещается около 300 млн таких "квантов".
Одна прогонка расчетов - это, условно, одна попытка что-то сделать. Допустим, она у человека занимает 30 секунд - 300 "квантов" восприятия.
В год дети начинают ходить. Как следует из выкладок выше - год это 300 млн "квантов" восприятия и уж никак не более миллиона "прогонок". Причем за этот миллион "прогонок нейросети" ребенок учится не только ходьбе.
Ну а миллиард прогонок боксерских поединков, за которые ИИ чему-то учится - это тысяча лет непрерывных тренировок. Так что говорить что-то про то, что ИИ учатся быстрее человека - нехорошо.
Другое интересное видео - "игра в прятки" - https://www.youtube.com/watch?v=Lu56xVlZ40M
На понимание того, что нужно прятаться ИИ тратит сотни миллионов итераций. И, если не ошибаюсь, миллиард прогонок на понимание того, что клин можно перетаскивать и на него можно залезть.
Дальше - давайте обсудим нашумевшую историю о том, как некий американский беспилотник собрался уничтожить своего оператора.
Есть комментарий минобороны США по этому поводу. В котором поясняют, что дело происходило в симуляции, в компьютерной игре. И уничтожить беспилотник пытался не оператора, а вышку управления, которая передавала ему сигнал запрета атаки. Потому что этот сигнал мешал ему набирать очки, а цель алгоритма - набрать максимум очков.
Но такая постановка задачи у меня лично вызывает вопросы не к тому, что беспилотник с ИИ пытался уничтожить вышку связи. А к тому, почему он очень долго ее не уничтожал. Почему этот ИИ настолько глуп?
P.S. Яндекс-браузер умеет переводить ютуб-видео.