?

Log in

No account? Create an account
Лабораторный журнал -- Day [entries|friends|calendar]
Anatoly Levenchuk

[ website | Лабораторный журнал ]
[ userinfo | livejournal userinfo ]
[ calendar | livejournal calendar ]

Эти разные, разные "нейро" [26 Jul 2015|02:02pm]
Дожили до времён, когда нужно уточнять, о каком именно "нейро" говорим -- человеческом или нежити. Вчера я побывал на ВДНХ сразу на двух тусовках, одна из них была посвящена "нейро" белковому (https://www.facebook.com/events/1416651928657501/), а другая -- софтовому (http://deephack.me). Не хватает пока тусовки для "нейро" кремниевого, но это поправимо и об этом я сейчас и напишу чуть подробней.

В хакспейсе на ВДНХ (станции молодых техников "Сталь" -- http://ailev.livejournal.com/1203397.html) началась программа еженедельных тусовок мейкеров, вчера была тусовка (GEEK Industrial MeetUP) по нейроинтерфейсам. Основная тема -- как снять и расшифровать ЭЭГ (то бишь "как читать мысли", что лишь косвенно означает "узнать как устроен мозг" -- например, обсуждение всяких "детекторов лжи" и "диагностов состояния" обычно мало затрагивает устройство мозга, а больше прикладные аспекты обработки сигналов).

Я предложил реализовать следующую цепочку действий:
-- носимую видеокамеру съемки себя любимого, который может делать видеосъемку с точным timestamps каждого кадра (частота обсуждается, но даже при 120Гц получается уже очень интересно). Главная тут фишка -- этот видеоконтент нужно выдавать на вход нейронной сетке-1, которая должна расставлять во времени метки фазы действия примерно так, как это было сделано на конкурсе по распознаванию действий руки человека на конкурсе Grasp-and-Lift EEG Detection, https://www.kaggle.com/c/grasp-and-lift-eeg-detection. Главное -- это не расставлять эти метки по видео руками, никакого ручного труда, пусть нейронная сетка-1 это делает (как научить нейронную сетку это делать, правда, отдельный вопрос -- трудоёмкость просто сдвигается с одной стадии работы на другую. Но с нейросетками есть хоть какие-то варианты с unsupervising learning, подсказок с уточнениями и т.д.. В случае же чисто ручной работы по разметке -- немасштабируемо, трудоёмко, невозможно).
-- мы также снимаем ЭЭГ, тоже с известным временем. И дальше нейронная сетка-2 должна разобраться, какие участки ЭЭГ отвечают за какое действие, ровно как в помянутом конкурсе Kaggle -- по разметке, которую нам дала нейронная сетка-1.

Зачем нам вдруг такое понадобилось (распознавать по ЭЭГ действия тела), если мы можем распознавать действия тела прямо по видео самого тела, мы не обсуждаем -- просто тупо следуем идее помянутого конкурса Kaggle, чуток (или не чуток) её развивая и извращая. Для меня всё не столько наука, сколько любительские мейкерские идеи, относящиеся к эдакому варианту современного искусства/спорта (типа конкурсов Чайковского или кинофестивалей): мало ли какой перформанс делают эти инженеры! Все эти ардуинные поделки они по большей части бессмысленны в плане как инженерии, так и науки, и должны проходить ровно по этой линии -- домашнего/клубного музицирования, конкурсов танцев, дворового футбола и прочих.

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

А вот идея для нейро (кремниевого) хакатона, объединяющего сообщество мейкеров нейроморфного железа и сообщество хакеров нейроморфного софта (deep learning):
-- берём в спонсоры Intel, которая вот прямо сейчас покупает Altera за $16.7млрд. (у Altera на сегодня 39% рынка FPGA, хотя это и чуть меньше чем у Xilinx с 49% -- но зато давние контакты с Intel). Это не будет очень трудно, у того же хакспейса "Сталь" уже были мероприятия с Intel.
-- понимаем, что FPGA -- это то же Arduino, только уже не для юных техников, а для молодых техников. Станочки и оборудование почти то же, хотя рабочие станции тут нужны будут помощнее. Тем не менее, это явно для рынка самоделок. Altera describes OpenCL in this way: “The Altera SDK for OpenCL allows the user to abstract away the traditional hardware FPGA development flow to bring the inherently parallel and flexible architecture of the FPGA to the software developer with a much faster and higher level software development flow.” -- http://www.designnews.com/author.asp?section_id=1386&doc_id=278089
-- какого масштаба могут быть "самоделки"? Значительного: на современной FPGA-схеме может быть до 14млрд. транзисторов (http://en.wikipedia.org/wiki/Transistor_count). Так что делаем и отлаживаем кремниевый ускоритель для нейронной сетки (какой именно? можно поговорить с сообществом нейро-софта), для этого и нужен хакспейс, ибо домашнего ноутбука тут не хватит, это "железо", тут нужен рабочий стол и кое-какое оборудование.
-- чтобы найти интересующихся таким проектом, связываемся с профильным сообществом FPGA-мейкеров (в Новосибирске, например, http://vk.com/nskfpga. Про остальные можно узнать, например, тут: http://electronix.ru/forum/index.php?showforum=75. Азы предметной области на русском языке уже тоже доступны -- свежепереведённый на русский (http://panchul.livejournal.com/469643.html) учебник Дэвида Харриса и Сары Харрис «Цифровая схемотехника и архитектура компьютера» плюс уже переведённая книжка "Computer Architecture: A Quantitative Approach" Паттерсона и Хеннеси. "Без Х&Х книжка Х-П - это описательное знание, а вот с комбинацией двух книжек студент может что-то реализовать на FPGA" (http://panchul.livejournal.com/469643.html?thread=19173003#t19173003).
-- изучить уже имеющийся опыт реализации deep learning архитектур на FPGA, Гугль вам в помощь. Это сегодня не rocket science! Это работа уровня университетской курсовой по neuromorphic engineering -- см. второе задание в курсе http://www.ece.ucsb.edu/~strukov/ece594BBSpring2015/home.htm, там и литература к курсу. Работ по нейроморфным архитектурам на FPGA много, вот очередная на этой неделе вышла: arxiv.org/abs/1507.05695 -- ширится, растёт движение!

Это всё вполне хакатонно и соревновательно. В http://cadlab.cs.ucla.edu/~cong/slides/fpga2015_chen.pdf есть какие-то ориентиры измерителей для организации "гонки нейрофлопс", хотя можно и упрощённые бенчмарки использовать, типа "As a proof of concept, we combined 128 identical neural cores together to build a handwritten digit recognition system using the MNIST database and achieved a recognition rate of 96.55%. The system is implemented on a state-of-the-art FPGA and can process 5.12 million digits per second" -- это из помянутой уже свеженькой http://arxiv.org/abs/1507.05695. Твори, выдумывай, пробуй! Быстрее, выше, сильнее!

Можно также пойти альтернативным путём и поисследовать процессоры для суперкомпьютеров: тот же Intel Knights Landing Xeon Phi (там более 64 ядер, но это не GPU архитектура, а нормальные процессорные ядра -- и можно поиграться с самыми разнообразными архитектурами там) -- http://www.zdnet.com/article/intels-next-big-thing-knights-landing/. Но это, боюсь, не совсем класса "мейкеров", суперкомпьютер в хакспейсе не сделаешь. Хотя это хорошая "цель на вырост" ;)

А дальше можно выйти на ещё один класс мейкеров: разгонный спорт, там тоже немаленькое мейкерское сообщество. FPGA overclocking отрабатывалось на биткойн-майнинге, так что и тут никакой вспашки целины, все тропинки уже протоптаны (хотя не все ещё заасфальтированы). А если задействовать охлаждение жидким азотом, то и вообще всё становится нервным и зрелищным -- можно в хакспейс на соревнования будет приглашать телевидение. Кто дочитал до этого места, бонус: манга про японских оверклокеров -- http://mangapark.me/manga/87-clockers-ninomiya-tomoko

В любом случае, хотя бы мысленная проработка таких сценариев "на стыке сообществ" по хакингу-мейкингу (deep learning, нейронет, FPGA, overclocking и т.д.) оказывается не самым плохим способом размять мозги (а потом, возможно, и размять руки -- взять, да сделать). Такой разминкой мозгов мы и занимались на нейро(белковой)тусовке в кулуарах. А в официальной части там были вполне серьёзные доклады про нейроинтерфейсы к вполне белковому мозгу.

Перед уходом в хакспейсе обнаружилась самоиграйка CASIO, и я даже поиграл на ней минут десять -- так что поработал в хакспейсе и руками тоже, всё честно (вот пруфвидео: https://www.facebook.com/steel.moscow/videos/508562049306646/).

А дальше пошёл на финал хакатона, из хакспейса туда было пять минут хода пешком по парку. Но об этом отдельный рассказ.
27 comments|post comment

Хакатон deep.hack -- всё получилось! [26 Jul 2015|04:52pm]
В финал хакатона http://deephack.me (новости в https://www.facebook.com/groups/DeepHackGame/) вышло 8 команд, которые 8 раз продемонстрировали обыденность того, что ещё год назад программисты назвали бы чудом (при этом настаивая, что "чудес не бывает").

Посудите сами: команды должны были разработать программу, которая должна научиться играть в аркадные игры на Atari 2600, просто смотря на экран и понимая там происходящее. Какие игры? А все. 39 доступных на данный момент игр. Настроиться на какую-то игру невозможно, проверяется как раз возможность программы научиться играть "вообще". Вот фрагмент правил (http://info.deephack.me/?p=102):
Во время отборочного тура алгоритмы участников тестируются на трех играх, выбранных организаторами.  Игры для тестирования не меняются в отборочном туре. Восемь команд, показавших лучший рейтинг, отбираются в четверть финал утром 24-го июля. После объявления результатов отборочного тура организаторы называют 3 новых игры, по одной игре для четвертьфинала, полуфинала и финала. Команды, прошедшие в финал, должны обучать своих агентов на новых играх без изменения кода обучающихся алгоритмов. Тестирование решений происходит по стандартной схеме.
Нет, вы поняли?! Алгоритмы обучения делаются на одних играх (и поэтому участники тут могут хоть на что-то влиять, "подгонять под результат"), а соревнования происходят на совсем других играх -- но без изменения кода программы! А игры настоящие, не "адаптированные для игры компьютером". И заранее под все игры не подгонишь, игр-то аж 39 -- поди догадайся, какие три из них будут в финале!

Традиционные методы программирования тут бессильны: такое ни за неделю, ни за три года сделать нельзя. И в командах-то по 3-7 человек, это не огромные исследовательские институты!

Нейронные сетки, подготовленные участниками хакатона за прошедшую почти бессонную неделю, вполне справились. Торжество обучающихся нейроморфных архитектур перед ручным программированием. За неделю можно настроить архитектуру нейронной сетки, но уж никак нельзя написать универсальный алгоритм, который может а) научиться играть в аркадные игры за несколько часов, а затем б) сыграть в эти игры, прорвавшись через много уровней -- и часто сыграть даже лучше, чем игроки-люди. При этом у участников хакатона ещё и время на прослушивание лекций уходило, они не только программировали! Ибо "солдат спит, служба идёт": когда программы учатся, программисты отдыхают. А если программы не учатся, то программисты впахивают: почувствуйте разницу в подходе к software engineering!

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

1. Это всё настоящее, нейросетки пришли, чтобы остаться (подробней я говорил в своём двухчасовом докладе на хакатоне -- но поглядите хотя бы ссылки на слайдах: http://ailev.livejournal.com/1204460.html).

Я надеюсь, что останется так же и команда, которая подготовила Deep.hack, и мы увидим от неё мероприятия ещё круче (хотя куда уж круче: вполне международного масштаба мероприятие, больше сотни участников -- от впервые познакомившихся с предметом студентов до нескольких звёзд первой величины).

2. Порог вхождения снизился в разы (доступны книги, учебные курсы, онлайн-тьюториалы, готовые программные библиотеки, какое-то железо "для проб" уже есть на любом игровом компьютере, проходят конференции и хакатоны). Из категории rocket science многие и многие задачи переместились в недельное развлечение, подходящее для студенческого хакатона. Кто б мог подумать от таком повороте ещё год назад!

3. Размер железа имеет значение. 3 часа у вас на обучение или (как у DeepMind в их оригинальной работе) 6 дней, при этом на дохленьком или мощном GPU -- это оказывается важным. Ибо играть быстро, а вот учиться играть -- это медленно, а при отладке нужно учиться много раз. Даже когда обучением и отладкой займутся сами нейронные сетки (идея компилятора жива и тут: код должен не писаться руками, а генерироваться, да ещё и с оптимизацией), вычислительная мощь будет иметь значение. В конце концов, основные принципы нейронных сеток были известны десятилетия назад. Но десятилетия назад нельзя было прогнать 1млн. кадров экрана за три часа, чтобы научить на хакатоне программу играть в Seaquest -- https://www.facebook.com/groups/DeepHackGame/permalink/505250676295368/

Я только что написал, что и работа с железом тоже может быть выведена на хакатонный уровень, с железом сейчас тоже много интересного происходит: http://ailev.livejournal.com/1204705.html

Железо "под ключ" в промышленных количествах для по-настоящему времяёмких задач уже есть, если брать не традиционную сейчас 1 плату GTX Titan X на desctop компьютер, а подрядить рендерную ферму. См., например, https://ru.rebusfarm.net/ru/, http://www.ranchcomputing.com/en/features/supported-softwares, http://www.rayvision.com/en/cloud-rendering.html и т.д., их ой-ой-ой сколько, они с удовольствием помогут новому молодому рынку! Делайте ставки: когда в составе услуг рендерной фермы появится поддержка обучения нейронных сеток?

Про суперкомпьютеры я молчу, пусть военные со своими эмбарго возятся сами. Game industry и industry по производству спецэффектов для кинофильмов вполне удовлетворят все гражданские аппетиты. Самое дешёвое и доступное на сегодня железо придёт оттуда.

4. Новая компьютерная архитектура пришла не по линии фон-неймановской против гарвардской против ещё подобной. Нет, там оказалось совсем другое, на совсем других математических и даже физических (http://ailev.livejournal.com/1197148.html) принципах. Нейроморфные архитектуры потребуют совсем другой 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 мы побеседуем уже очень быстро. И сеток таких будет много. И обыватели чудесности происходящего даже не заметят, ибо это "всего лишь программы", по виду, цвету, запаху они не похожи на скайнет, терминатора и агента смита.

ОК, ЖЖ, публикуй это.

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

Финал проходил в политехническом музее на ВДНХ (павильон 26 -- https://polymus.ru/ru/museum/about/venues/vdnkh/). Почему-то никто не обратил внимания на то, что там был целый стенд, посвящённый истории нейроморфного компьютинга. Вот я сделал в тамошнем музейном полумраке фотографию платы с Ni1000 -- Intel/Nestor Recognition Accelerator (http://www.warthman.com/projects-Intel-Nestor-Ni1000-Recognition-Accelerator-User%27s-Guide.htm):
Ni1000

А после финала была абсолютно аутентичная дискотека под живую 8 бит музыку (https://polymus.ru/ru/events/exhibitions/8bit-futurism-live/), игралось всё на настоящем 8 бит оборудовании (типа GameBoy, например). И я даже немножко потанцевал. Хотя возраст уже не тот, танец тоже получился несколько восьмибитным, но на тамошнем мероприятии это было ОК.

Теперь вот ОКончательно ОК, ЖЖ, публикуй это.
10 comments|post comment

navigation
[ viewing | July 26th, 2015 ]
[ go | previous day|next day ]