Как стать автором
Обновить

Комментарии 18

Хорошее, я бы сказал, остроумное решение. Однако, в защиту применения нейросетей, могу сказать, что не всегда такие хорошие решения как ваше, приходят людям в голову. А результат нужен. Вот и приходится временами тянуть нейросети туда, где можно было бы обойтись чем-то более простым. Может в будущем, нейросети смогут генерировать простые алгоритмы, для простых случаев, чтобы обходиться без нейросетей.

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

Уже почти. Пока для поиска гиперпараметров иногда используются более простые алгоритмы, типа Bayesian optimization. Но BOHB вселяет надежду, что скоро и нейросетку запилят для поиска гиперпараметров.

Программа случайным образом генерирует коэффициенты для исследования пространства. Для гонки на скорости я бы запустил несколько тысяч тестов и выбрал оптимальные коэффициенты.

Что-то это мне напоминает

Ровно та же мысль возникла прочитав это умозаключение :)
НЛО прилетело и опубликовало эту надпись здесь
Смотря какая, но обычно в сеть добавляют нелинейную активацию (ReLU например), что позволяет аппроксимировать нелинейность.

По теме статьи — по-видимому, нейросеть с тремя слоями здесь просто была не нужна (что, в принципе, весьма очевидно, если учесть, что на вход подается всего 5 фич). Это не отменяет того, что решение с нейросетью можно легко адаптировать под новые условия, а вот ручное решение нет.
НЛО прилетело и опубликовало эту надпись здесь
Программа случайным образом генерирует коэффициенты для исследования пространства. Для гонки на скорости я бы запустил несколько тысяч тестов и выбрал оптимальные коэффициенты.

Вроде к машинному обучению относятся не только нейросети, но и множество алгоритмов попроще, в частности эволюционные алгоритмы.
Тогда заголовок малость неверен.
Для гонки на скорости я бы запустил несколько тысяч тестов и выбрал оптимальные коэффициенты.

Это и есть машинное обучение, только в ручном режиме (вариант 1).
Чуть практичнее было бы накопить статистику и решить СЛАУ для получения оптимальных коэффициентов (вариант 2). Вместо решения СЛАУ можно применить градиентный спуск (вариант 3), но на таком малом количестве коэффициентов проще решить систему уравнений.
Даже при использовании простого математического аппарата системы линейных уравнений для вычисления коэффициентов можно вводить нелинейности путём добавления вычисленных характеристик (например, x10 = log(x1*x2), x11=x4/x6), это неплохо расширяет класс задач, решаемых линейными методами.
И тот же tensorflow можно применить для вычисления простых формул наподобие тех, которые получил автор.

Соглашусь в автором, что конкретно для этой среды нейронки — жирно.
Поставленная задача является классической для алгоритмов RL, при этом остаётся загадкой почему был выбран генетический алгоритм в качестве оптимизатора…

Вся суть нейронок в универсальности, они могут обучаться на новых данных, если к этой карте добавить пару сократов, разветвлений, тупиков, то со временем нейронки их найдут и начнут действовать более интеллектуально (если размер НС позволит), а вот ваша модель — нет, здесь нужна рука человека, которая добавит новой логики. Более того, задачу можно запросто усложнить до такого, что человек не в силах будет описать модель оптимального взаимодействия с ней, а нейронка — сможет.

Автор видео «Нейросетевые машины и генетические алгоритмы» попросту пока что не усложнил свою среду по той причине, что он только начинает заниматься разработкой системы управления. Кстати, если внезапно заменить авто космическим кораблём, а трассу пространством над луной, то нс вскором времени адаптируется, а человек, возможно даже не узнает об изменениях…
В этом вся прелесть — адаптация без участия человека.
Поставленная задача является классической для алгоритмов RL, при этом остаётся загадкой почему был выбран генетический алгоритм в качестве оптимизатора…
А это, на самом деле, очень популярный жанр роликов на ютубе. И, я заметил, что почти всегда используется генетический алгоритм, просто потому, что написать его очень легко а для такой сети большего и не нужно. В итоге, за пару часов можно написать нейросеть для ролика, который с большой вероятность зайдет. (Мне, кстати, они очень заходят)

Более того, задачу можно запросто усложнить до такого, что человек не в силах будет описать модель оптимального взаимодействия с ней, а нейронка — сможет
Это, конечно, правда, но, опять же, генетическим алгоритмом тоже не просто обучить большую сеть, да и смысл тут не в этом. Автор тут не отрицает пользу нейросетей в RL, а только говорит, что нейросети — это часто overkill в таких простых задачах.

Думаю, что объяснение, зачем нужно машинное обучение в таких задачах — это родительский инстинкт. Всем же интересно написать свою сетку и смотреть, как она растет, как ошибается, но затем учится. Это просто гипермило. Лично я такое обожаю)
Алгоритмы ИИ и сети как раз и нужны там, где сложно или невозможно применить вычислительные методы.
Например, у вас есть облако точек, полученных с сенсора мыши или камеры, которые представляют букву W. Попробуйте составить систему уравнений, чтобы при нужном наборе входных данных получить ответ — буква W.

Модели создавать и обучать тоже не всегда нужно, вместо этого можно применить нейроморфные сети. Обучить такую сеть может, например, оператор технологической линии, который не имеет нужной квалификации, чтобы составлять уравнения или работать с моделями. Он предъявляет сети объекты и соответствующие результаты. И всё.
Эти сети сравнивают с хорошим студентом, который узнает один раз и больше не забудет.
О быстродействии — сеть вычисляет выходное значение, скажем, за 8 микросекунд, и это время не зависит от числа нейронов, так как они работают параллельно, будь их хоть миллион.
Попробуйте решить сложную систему уравнений за это время на обычном процессоре. При этом потребление энергии различается на порядки.
Реализованы они как IP для FPGA, FTGA, ASIC, нейрочипы или встроены в обычные процессоры.

На видео — показываем символы, говорим, кто есть кто, потом эта штука распознаёт:

<придира>


Всю эту навороченную систему легко заменить простым многочленом без потери функциональности

При словосочетании "простой многочлен", первое что приходит на ум — это wiki: Неприводимый_многочлен


В оригинале:


However, the entire scheme can be replaced by a first-degree polynomial without any loss in capability

Думаю, уместнее было бы не изменять семантику и оставить как в оригинале — "полином первой степени/линейная функция"
</придира>

У меня сложилось впечатление, что автор оригинального видео, и автор данной статьи решали разные задачи.
Просмотрев все видосы автора оригинала — я пришел к выводу, что первой задачей он ставил именно прохождение трассы в заданном коридоре, и только после того, как машинки научились самостоятельно поворачивать и не врезаться в края трассы, он начал работать над оптимизацией времени прохождения трассы.
Автор же данной статьи, занялся только скоростью, поставив изначально машины на «рельсы».

Возможно ли обойтись многочленом, для того, чтобы научить условные машинки проходить трассу самостоятельно не по рельсам?
Почему-то вспомнился чемпионат Russian AI Cup далекого 2015-го, где надо было по трассе гонять машинки. На Хабре есть увлекательный пост от победителя того турнира о том, как он решал задачу: habr.com/ru/post/273649. Конечно, тогда задача была куда сложнее, чем описана в данной статье. Тем не менее, что интересно, на упомянутых соревнованиях никто из победителей не использует нейросети, хотя генетические алгоритмы в «историях успеха» упоминались.

Нейросети массово "взлетели" примерно в 2016-2017, по крайней мере хайп был в конце 2017. Только после этого их стали использовать где нужно и где не нужно.

Я имел в виду, что даже после массового взлета на совервнованиях последующих годов нейросети не использовали.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации