Эссе о разработке игр, мышлении и книгах

ИИ нас всех не(?) заменит

Автопилот [Ийона Тихого](https://ru.wikipedia.org/wiki/%D0%98%D0%B9%D0%BE%D0%BD_%D0%A2%D0%B8%D1%85%D0%B8%D0%B9) готовится делать человеческую работу в 3 лица.
(с) сериал [Ijon Tichy: Space Pilot](https://en.wikipedia.org/wiki/Ijon_Tichy:_Space_Pilot)

Автопилот Ийона Тихого готовится делать человеческую работу в 3 лица.
(с) сериал Ijon Tichy: Space Pilot

GitHub в прошлом месяце выпустил ИИ напарника для программистов, который умеет дописывать код. В догонку OpenAI опубликовали видео с возможностями технологии. Например, демонстрацию разработки игры на JavaScript.

Справедливости ради отмечу, что «игра» откровенно убогая. Но процесс создания впечатляет всё равно.

Одновременно с этим роботы занимаются паркуром, автомобили ездят без водителя, маркетинговые алгоритмы и ленты социальных сетей во всю управляют нашим поведением и даже мыслями.

Время поговорить о замене нас железными мозгами перспективах машинного обучения в его текущем виде.

Для краткости, вместо машинного обучения, нейронных сетей, feature programming и аналогичных вещей далее буду использовать аббревиатуру ИИ — Искусственный Интеллект. Кто знает на какой конкретно технологии всё остановится, но для её пиара гарантировано будут использовать затычку из двух «И».

Эссе включает:

  1. Оценку возможности прогнозирования.
  2. Описание факторов, которые влияют на развитие и внедрение ИИ.
  3. Три классических прогноза: пессимистичный, реалистичный и оптимистичный.

В первой и второй частях я уверен, а вот в прогнозах у меня получается жутковатая картина. В то же время основной проблемой прогнозов я считаю оценку сроков, а не качественных изменений.

Далее

Feature Programming

Эссе по итогам нырка в Deep Learning, но не о DL и даже не совсем о Machine Learning, а о новой парадигме программирования, которая рождается из него.

Собственно, нейронные сети я смотрел не потому, что интересуюсь именно ими, а потому что они сейчас демонстрируют наибольший прогресс и характерные черты этой парадигмы.

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

Оговорка раз: я определённо не эксперт в машинном обучении. Эссе в большей степени отражает мой опыт и картину мира, нежели знания и понимание ML и DL.

Оговорка два: термины «признак», «feature» будут использоваться достаточно вольно.

Далее

Реализация Generative Adversarial Network

В завершение разбирательства с Deep Learning решил посмотреть что-нибудь более интересное и ориентированное на генерацию контента — реализовать GAN.

По правде говоря, большую часть времени с GAN (и Autoencoder) я экспериментировал на спрайтах карты Сказки. Ожидаемо, на таком мизере обучающих данных ничего интересного не получилось. Хотя польза и была. Поэтому для поста я подготовил отдельный notebook с более наглядными результатами — генерацией обуви по набору данных Fashion MNIST.

Ноутбук с реализацией GAN и комментариями.

Про архитектуру GAN лучше почитать в вики, интернетах или моём ноутбуке.

Краткая суть:

  • Тренируются две сети: generator & discriminator.
  • Генератор учится создавать картинки из шума.
  • Дискриминатор учится отличать поддельные картинки от настоящих.
  • Ошибка дискриминатора определяется качеством предсказания фейковости изображения.
  • Ошибка генератора определяется качеством обмана дискриминатора.

Если правильно подобрать топологии сетей и параметры обучения, то в итоге генератор научается создавать картинки неотличимые от оригинальных. ??????. Profit.

Ссылки на курсы по Machine Learning & Deep Learning

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

Публикую, чтобы не пропадал зря.

Только ссылки. Свои комментарии вырезал — в исходном виде они никому кроме меня не помогут :-)

Далее

Kaggle: Digit Recognizer (MNIST) точность 0.99585

Примеры цифр из набора MNIST.

Примеры цифр из набора MNIST.

Продолжаю путешествие по занимательным землям Deep Learning.

В прошлый раз я учился заводить deep learning на локальной машине и делал совсем детскую, искусственную и неспецифическую для DL задачу.

В этот раз решил попробовать что-то более диплёрничное — научиться решать задачи на Kaggle. Есть предположение, что Kaggle — самый простой и интересный способ учить DL.

На этом сервисе есть задачи для новичков, одну такую — Digit Recognizer — я выбрал для тренировки. Соревнование по распознаванию рукописных цифр из набора MNIST. Этот набор должны были встречать даже люди далёкие от ML.

Notebook с решением и комментариями опубликован на github.

На момент отправки решение занимало 467 место из ~7000. На мой взгляд неплохой результат, учитывая, что первые мест 150 занимают читерские решения. MNIST — общедоступный набор данных, их можно скачать вне kaggle и залить в качестве решения готовые ответы, или переобучить сеть на полном наборе.

Далее