Дожили до времён, когда нужно уточнять, о каком именно "нейро" говорим -- человеческом или нежити. Вчера я побывал на ВДНХ сразу на двух тусовках, одна из них была посвящена "нейро" белковому (
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/).
А дальше пошёл на финал хакатона, из хакспейса туда было пять минут хода пешком по парку. Но об этом отдельный рассказ.