Хакатон deep.hack -- всё получилось!

В финал хакатона вышло 8 команд, которые 8 раз продемонстрировали обыденность того, что ещё год назад программисты назвали бы чудом (при этом настаивая, что "чудес не бывает"). 27 Июль 2015, 14:21
Посудите сами: команды должны были разработать программу, которая должна научиться играть в аркадные игры на Atari 2600, просто смотря на экран и понимая там происходящее.
Играй с интеллектом!
А все. 39 доступных на данный момент игр. Настроиться на какую-то игру невозможно, проверяется как раз возможность программы научиться играть "вообще". Вот фрагмент правил :
Во время отборочного тура алгоритмы участников тестируются на трех играх, выбранных организаторами. Игры для тестирования не меняются в отборочном туре. Восемь команд, показавших лучший рейтинг, отбираются в четверть финал утром 24-го июля. После объявления результатов отборочного тура организаторы называют 3 новых игры, по одной игре для четвертьфинала, полуфинала и финала. Команды, прошедшие в финал, должны обучать своих агентов на новых играх без изменения кода обучающихся алгоритмов. Тестирование решений происходит по стандартной схеме.
Нет, вы поняли?! Алгоритмы обучения делаются на одних играх (и поэтому участники тут могут хоть на что-то влиять, "подгонять под результат"), а соревнования происходят на совсем других играх -- но без изменения кода программы! А игры настоящие, не "адаптированные для игры компьютером". И заранее под все игры не подгонишь, игр-то аж 39 -- поди догадайся, какие три из них будут в финале!
Традиционные методы программирования тут бессильны: такое ни за неделю, ни за три года сделать нельзя. И в командах-то по 3-7 человек, это не огромные исследовательские институты!
Нейронные сетки, подготовленные участниками хакатона за прошедшую почти бессонную неделю, вполне справились. Торжество обучающихся нейроморфных архитектур перед ручным программированием. За неделю можно настроить архитектуру нейронной сетки, но уж никак нельзя написать универсальный алгоритм, который может а) научиться играть в аркадные игры за несколько часов, а затем б) сыграть в эти игры, прорвавшись через много уровней -- и часто сыграть даже лучше, чем игроки-люди. При этом у участников хакатона ещё и время на прослушивание лекций уходило, они не только программировали! Ибо "солдат спит, служба идёт": когда программы учатся, программисты отдыхают. А если программы не учатся, то программисты впахивают: почувствуйте разницу в подходе к software engineering!

Некоторые выводы по итогам хакатона:

1. Это всё настоящее, нейросетки пришли, чтобы остаться (подробней я говорил в своём двухчасовом докладе на хакатоне -- но поглядите хотя бы ссылки на слайдах
Доклад А.Левенчука на хакатоне Deep.hack, МФТИ, Долгопрудный, 24 июля 2015
Я надеюсь, что останется так же и команда, которая подготовила Deep.hack, и мы увидим от неё мероприятия ещё круче (хотя куда уж круче: вполне международного масштаба мероприятие, больше сотни участников -- от впервые познакомившихся с предметом студентов до нескольких звёзд первой величины).
2. Порог вхождения снизился в разы (доступны книги, учебные курсы, онлайн-тьюториалы, готовые программные библиотеки, какое-то железо "для проб" уже есть на любом игровом компьютере, проходят конференции и хакатоны). Из категории rocket science многие и многие задачи переместились в недельное развлечение, подходящее для студенческого хакатона. Кто б мог подумать от таком повороте ещё год назад!
3. Размер железа имеет значение. 3 часа у вас на обучение или (как у DeepMind в их оригинальной работе) 6 дней, при этом на дохленьком или мощном GPU -- это оказывается важным. Ибо играть быстро, а вот учиться играть -- это медленно, а при отладке нужно учиться много раз. Даже когда обучением и отладкой займутся сами нейронные сетки (идея компилятора жива и тут: код должен не писаться руками, а генерироваться, да ещё и с оптимизацией), вычислительная мощь будет иметь значение. В конце концов, основные принципы нейронных сеток были известны десятилетия назад. Но десятилетия назад нельзя было прогнать 1млн. кадров экрана за три часа, чтобы научить на хакатоне программу играть в Seaquest .
Я только что написал, что и работа с железом тоже может быть выведена на хакатонный уровень, с железом сейчас тоже много интересного происходит:
Железо "под ключ" в промышленных количествах для по-настоящему времяёмких задач уже есть, если брать не традиционную сейчас 1 плату GTX Titan X на desctop компьютер, а подрядить рендерную ферму. См., например, ru.rebusfarm.net/ru/ranchcomputing.com , rayvision.com и т.д., их ой-ой-ой сколько, они с удовольствием помогут новому молодому рынку! Делайте ставки: когда в составе услуг тендерной фермы появится поддержка обучения нейронных сеток?
Про суперкомпьютеры я молчу, пусть военные со своими эмбарго возятся сами. Game industry и industry по производству спецэффектов для кинофильмов вполне удовлетворят все гражданские аппетиты. Самое дешёвое и доступное на сегодня железо придёт оттуда. 
4. Новая компьютерная архитектура пришла не по линии фон-неймановской против гарвардской против ещё подобной. Нет, там оказалось совсем другое, на совсем других математических и даже физических принципах. Нейроморфные архитектуры потребуют совсем другой computer science, совсем другой software engineering. Тут ещё не ступала нога человека. Deep learning engineering, deep learning process (по аналогии с software process) -- ах, сколько всего мы услышим на эту тему в ближайшие годы!
5. Convolution NN -- это статика, видеокадры. Recurrent NN -- это ритм, время, синтаксис развёртки текста, конструктивизм. Но reinforcement learning (дрессировка, обучение с подкреплением) -- это деятельность, планирование, достижение целей. Только reinforcement learning может выучить (отмоделировать), что для попадания во Владивосток из Москвы нужно выйти сначала из квартиры в прямо противоположном направлении, потом долго разными видами транспорта добираться до аэропорта, и только потом уже направиться во Владивосток. Вот reinforcement learning и нужно продолжать заниматься, всё остальное будет управляться им. Именно reinforcement learning даст целенаправленность, даст диалог.
Мы обсуждали, что если добавить аппаратуры и результаты RNN по генерации текста поставить под контроль reinforcement learning, то можно получить агента-спорщика (и функция вознаграждения/подкрепления тут -- выигрыш в споре путём логических аргументов и вскрытия логических ошибок соперника). А почему бы и нет?! Главное, метлой гнать всех журналистов, желающих что-то эдакое написать про искусственный интеллект и бесчеловечность компьютерных споров (бесчеловечность калькуляторных расчётов и бесптичность полёта самолёта их уже не волнует), гнать философов, рассуждающих про "истину, рождающуюся в дискурсе" и т.д.. Ничего личного, решение простых когнитивных задач, это просто такое программирование-в-профиль, бывшие программисты-физики-математики вполне тут могут попробовать свои силы. Когда программирование только-только появилось, в него довольно много людей самых разных профессий шло с естественнонаучным и инженерным образованием -- но не философов и журналистов. Так же будет и сейчас.

6. Можно даже поглядывать на то, как устроен мозг: нынешних знаний для "поглядывания" уже хватает. "Поглядывать" нужно так же, как авиастроители поглядывают на птичек: у самолёта и птички есть крылья, но вот уже ног у самолёта нет, а есть только шасси. Насчёт клюва не знаю, на разных языках наверняка по-разному. Вот и с нейронными сетками так же должно быть: нейроны есть везде, но бионейрон с синапсами отличается от нейрона в GPU так же, как птичкино крылышко с пёрышками и костями внутри отличается от самолётного крыла с топливом внутри и подвешенными гондолами двигателей. Вот так и будем "конструировать вприглядку", не буквально. 

Нейрофизиологов, которые лезут с буквальным повторением мозга посылаем туда же, куда журналистов и философов: нам нужно поговорить с программой, а не искусственным интеллектом, настоящим аналогом живого мозга или ещё какой-то химерой. С программой, типа Siri или Cortana, ничего сверхъестественного. 

Хотя да, мечтать о таком и понимать, что такая "беседа с программой" может оказаться доступной в ближайшие годы -- это волнительно. Такая программа не может идти ни в какое сравнение с ботами, проходящими сейчас тест Тьюринга. Такая программа вполне сможет учиться, учиться и учиться. Такая программа вполне может сказать что-то оригинальное, чего и представить не могли её разработчики. Сама возможность говорить о такой программе -- это настоящее чудо, типа разговора в 1961 году о программе Apollo. А в 1969 году человек впервые прошёлся по Луне. Так что с нейронной сеткой, которая в разы и разы умней нынешних Cortana и Siri мы побеседуем уже очень быстро. И сеток таких будет много. И обыватели чудесность происходящего даже не заметят, ибо это "всего лишь программы", по виду, цвету, запаху они не похожи на скайнет, терминатора и агента смита.

Ещё научпоп и светская хроника.

Финал проходил в политехническом музее на ВДНХ.  Почему-то никто не обратил внимания на то, что там был целый стенд, посвящённый истории нейроморфного компьютинга. Вот я сделал в тамошнем музейном полумраке фотографию платы с Ni1000 -- Intel/Nestor Recognition Accelerator .
А после финала была абсолютно аутентичная дискотека под живую 8 бит музыку , игралось всё на настоящем 8 бит оборудовании (типа GameBoy, например). И я даже немножко потанцевал. Хотя возраст уже не тот, танец тоже получился несколько восьмибитным, но на тамошнем мероприятии это было ОК.