Сегодня весь день провёл на Skolkovo Robotics (
https://sk.ru/foundation/itc/robotics/skrobotics2015/), #skrobotics
Панель по инженерному робототехническому образованию традиционно опечалила, как и все предыдущие разговоры на эту тему -- очные или в интернетах. Докладчики единодушно призывали иметь "больше практики", чтобы исключать провалы на международных соревнованиях -- но это как призывать первобытное племя охотников и собирателей больше практиковать то, что они каждый день делают и оставлять удивляться, почему не охотящиеся и не собирающие живут сытнее. Однодневный опыт участия в соревновании студенты повторят потом двадцать раз -- это ведь не даст многодневного опыта, это просто однодневный опыт повторённый двадцать раз!
Почему идут провалы? Потому что никто (ни школа, ни ВУЗ, ни "кружок") не учит думать про жизненный цикл: перевозка является сюрпризом, ремонт на месте является сюрпризом, но самым главным сюрпризом являются испытания, вернее их отсутствие. Испытания ведь отличаются от "включили, вроде всё замигало и не дымит -- значит, работает" и "включили, нашу тестовую трассу дома проехали аж три раза -- всё, победа наша". Для испытаний нужны требования (ибо что испытываем-то?). Про это никто не рассказывает, слову этому никто команды не учит. Для организации коллективной работы нужна системная архитектура, её разрабатывать никто не учит. Инженерная коллективная работа по способу её организации отличается от менеджерской (инженерам нужно думать о требованиях-интерфейсах-испытаниях, менеджерам о ресурсах-графиках) -- и этой разнице мышления инженера и менеджера по отношению к одному и тому же (коллективной деятельности) тоже никто не учит осознанно, отдельно и специально. Из "большого практического опыта" и "участия во множестве проектов" это знание само собой не появится до морковкина заговенья, его нужно проговаривать, а потом тренировать на использование в жизни.
То же самое относится к робототехническому образованию в целом: про его жизненный цикл никто не думает -- поэтому на вопросы ведущего про "какие требования к курсу робототехники" (какие знания даёт курс) ответы были самые разные, а подошедший потом ко мне психолог совешенно серьёзно сказал, что "робототехника даёт социализацию!". И я с ним радостно согласился, у меня отрок занимается автоматикой и Arduino не для "навыков" (они там нулевые -- особенно навыки мышления), а именно для социализации. Даже навыки коллективной инженерной работы -- их вслух не проговаривают, практики не обсуждают, вообще непонятно что это такое (а это, например -- какие практики использовать, чтобы поделить работу на части, какие практики использовать для оценки времени выполнения работы, какие практики использовать при проверке и приёмке общей работы и чем вообще отличается проверка от приёмки и т.д.), всё просто "случается" и потом никак не переносится из проекта в проект, если ребёнок или даже вполне уже взрослый студент не гений.
Отношению к проекту как целому (холизм в пику вездесущей аналитичности, холизм как направленность на целостность, а даже не синтез, который может быть частичным и не покрывать весь проект и вовсе необязательно направлен на удержание целостности) не учат в школе, не учат в бакалавриате, не учат в магистратуре, и даже на производстве этому тоже не учат. Отличить аналитика от холиста легко: аналитик не планирует испытаний и не проводит испытаний -- когда всё им удачно порублено на части и проанализировано, не нужно уже ничего собирать, поэтому и испытывать нечего, его жизнь ограничена определением системы, а не воплощением системы. Холизму, обеспечение целостности, системному подходу в части мышления и системной инженерии в части системного мышления и действия -- им нужно учить специально, а в робототехнических проектах это знание нужно тренировать. Только с этого момента понимания какое знание тренируешь, в высказывании "проектов должно быть много" есть смысл. Если знаешь, что именно ты тренируешь сотней соревнований, то будет толк. Если не знаешь, а просто алчешь множества тренировок чего-нибудь -- на выходе получишь тренированное что-нибудь, причём в ассортименте (например, натренированную социализацию, а не математику. Или натренированный уход от ответственности вместо навыка создания системной архитектуры. Или тренинг менеджерских качеств, а не инженерных: с последующим "неожиданным" техническим провалом "самой дружной и работоспособной команды, с самым сильным командным духом" и последующими обвинениями "недостаточно старались"). Или тренинг инженерных качеств, когда ожидали как раз "командной работы" и добытое тяжёлой работой лучшее инженерное решение оказывается угробленным по ресурсам и срокам, провал в нетренированном вообще менеджменте.
Я ровно так и отличаю образование от "кружков" -- кружки ведь как дискотеки, в них люди хорошо проводят время, социализируются, развлекаются, находят друзей и любимых. Но не учатся. Образование (школы, курсы) обычно на выходе имеет результатом знание какой-то дисциплины, а социальные эффекты тут вторичны. Знания дисциплин (математики, физики, алгоритмики, системной инженерии и т.д.) переносятся затем из проекта в проект, знания технологий (специфичных часто для отдельных проектов) много менее переносимы из проекта в проект, а "опыт" обычно вообще непереносим, разве только речь пойдёт о гениальных будущих главных конструкторах и мы признаем нацеленость нашего племени образователей не на осёдлое земледелие в части возделывания инженерных и менеджерских кадров, а на охоту и собирательство.
А ещё я предложил попробовать быстро-быстро выскочить с операционкой для автомобильных автопилотов, магазином приложений и нацеленностью на рынок DIY. Если сделать набор API (оформленных стандартами протоколов) для DIY автопилота с моторчиками для педали газа, привязанными к этой педали какими-нибудь тесёмочками, как это делают студенты на хакатонах, то можно попробовать поразвлекаться владельцам старых автомобилей (а то и тракторов) -- под лозунгом "убей старое авто, без пилота". Микрорыночки разных адаптеров управления (приводы руля, газа, тормозов), разнообразный сенсорный и вычислительный хардвер и библиотеки автопилотного софта -- и всё это объединяется каким-нибудь допиленным вариантом ROS, аппстором (помним о примере Гугла с андроидом, примере ардуино, где счёт идёт на миллионы проданных плат). Интерес подогревается соревнованиями, как у тех же оверклокеров. Игроки типа
http://www.kb-avrora.ru/ могли бы попытаться войти на новый массовый дешёвый рынок доработки уже существующих автомобилей "снизу", пока сверху этот рынок будут делить автопроизводители и пытающиеся воткнуться к ним Гугль и Эппл. Отрасль ведь можно делать не только производя все операции по созданию автомобиля без водителя в одном месте, на заводе, но и ровно наоборот -- распределив все операции по большому числу других автономных производителей запчастей и софта, и большому числу умелых рук по всей стране (а то и по всему глобусу). Недаром Агамирзян любит приводить пример рынка DIY как вполне уже респектабельного рынка -- а желающих повозиться с автомобилем своими руками (если запчасти и софт можно легко купить) всегда хватит, не все захотят ждать автопилотов "от больших", не все будут ездить на этих автомобилях по федеральным магистралям.
На тусовке по нейрокомпьютингу и роботам было затронуто много самых разных вопросов. Вот только несколько, по которым я выступил:
-- ассоциативная память (
http://en.wikipedia.org/wiki/Content-addressable_memory, часто путается с ассоциативной памятью на нейронной сетке) и традиционный hard computing на базе такой памяти для задач планирования и поиска в духе
http://ailev.livejournal.com/1122876.html -- это святой грааль для программистов AI в 80-х. Попыток сделать ассоциативную память (хардверно, хоть как-нибудь) было множество, все успешно провалены. На заседании было высказано очень правильное предположение: можно ожидать в ближайшие годы каких-то прорывов в этом направлении (как с deep learning) -- хотя я не уверен, не об ассоциативной ли памяти на нейронной сетке было высказано это предположение. Но ежели трактовать его как "люди вернутся на уровне современных технологий к классической постановке вопроса памяти, адресуемой по содержанию", нас вполне может ожидать много интересного, новые классы приложений, новые классы архитектур.
-- representation learning это очень хорошо, но нужно понимать, что синтез сложного решения (тот самый search-oriented подход из предыдущей ссылки) не делается просто хорошо натренированной сеткой, даже при всём понимании эквивалентности кодера-декодера. Криптоалгоритмы тоже кодируют-декодируют, но шифровать просто, а дешифровывать -- нет. Так и тут: распознать небоскрёб или подводную лодку по проекту их строительства просто, а вот синтезировать проекты их строительства -- нет. Распознавание образов только половинка интеллекта, интеллект не только распознаёт (сводит сложный вход к простому выходу), он ещё и синтезирует сложные объекты (сводит простой вход к сложному выходу). И архитектура вычислителя, вполне возможно, будет разная для задач синтеза-поиска и анализа-распознавания. Ассоциативная память и нейроны -- это очень разные парадигмы.
-- не нужно путать акторскую и агентскую архитектуры. Можно каждый нейрон делать агентом и давать ему IP (кстати, IP нейронам уже и сейчас дают -- напомню про моделирование коннектомы нематоды, там как раз робот-тележку двигали,
http://ailev.livejournal.com/1149046.html), но даже выдача индивидуального IP не делает нейрон агентом. Акторская парадигма тут более правильная, и вполне совместима с агентской. Если даже начать с попсы из википедии
http://en.wikipedia.org/wiki/Actor_model, "The key difference is that agent systems (in most definitions) impose extra constraints upon the Actors, typically requiring that they make use of commitments and goals". Дальше можно обсуждать, насколько разные агентские системы реализуют эти самые commitments, goals и прочие черты именно агентского подхода, а насколько они остаются просто акторской моделью программирования, привнесением распределённости в традиционное программирование.
-- обсуждать "нейроробототехнику" невозможно без концепции уровневой архитектуры, специально договариваясь о каждом отдельном уровне нейростека. Так, за время разговора были затронуты уровни: 1. проектных норм и полупроводникового процесса, 2. традиционная или мемристорная элементная база (хорошо, квантовые компьютеры никто не вспомнил, Пенроуза на этих нейронщиков нет), 3. хардверная архитектура: GPU или сразу специализированные аппаратные нейронные сетки, 4. алгормитмы/библиотеки/пакеты нейросеток, 5. прикладные задачи, за которые платят деньги.
Интересный разговор случился после заседания: мне присутствовавшие учёные вежливо объяснили, что с финансированием (например, со стороны фонда Сколково) для всех этих "нейро" очень плохо: финансирование идёт прежде всего на прикладные задачи, что требует уже готовых решений всех предыдущих уровней. Но с каждым более глубоким уровнем растёт специфика "нейро" и потребные на нормальную проработку решений деньги, плюс растёт неспецифичность решения (для чего может пригодиться нейроморфный чип? ответ "для всего" -- и тут же пропадает возможность получения финансирования, ибо выигрыш может быть велик, но и риски запредельны). Поэтому они все пытались в разговоре балансировать на границе между 5 и 4 уровнем, даже не погружаясь глубоко в уровень 4, и даже всплывшие вопросы про нейроны и их моделирование, хардверные нейросетки и разницу между классической ассоциативной памятью и нынешними сетками считают не очень важными, ибо "пришли-то они за деньгами, а денег на это никогда не будет, чего ж тогда говорить, воздух трясти". Но всё-таки говорили, ибо научный интерес есть. Конечно, мне отдельно и персонально уже в метро спели песню про настоящую родину обученных глубоких сеток (пункт 2 в
http://ailev.livejournal.com/1148591.html), ибо на тусовку нейророботики пришёл даже ученик Ивахненко.
Осталось сказать спасибо Альберту Ефимову и его команде за этот праздник, пожелаем им теперь выспаться и начать готовить Skolkovo Robotics следующего года.
Но в следующем году уже потребуется фокусировка, потенциал новизны и общего любопытства отработан. Кому интересен и подводный робот и промышленный дельта-манипулятор? и образовательный конструктор, и автомобиль без пилота? Идея кунст-камеры и зверинца -- это ведь для развлекательных-завлекательных целей! Эти цели за три года достигнуты сполна. Растекание вширь теперь нужно как-то менять на копание вглубь.
Если "все флаги в гости к нам и никому не отказываем", то это верный признак отсутствия стратегии (тест Портера, пункт 2 из
http://ailev.livejournal.com/880588.html). Какие темы могли быть для профилизации (чтобы мероприятие стало заметно и на международном уровне)? Мы тут опять скатываемся к проблеме таксономии роботов и робототехники, тем не менее мои предложения:
-- та же нейророботика (что бы ни понималось под словом "нейро"),
-- интеллектуальная робототехника (чтобы ни понималось под словом "интеллектуальная" -- но всякие 3D принтеры и манипуляторы отметутся сразу),
-- когнитивная робототехника (тут фильтр посильней, чем в "интеллектуальной"),
-- антропоморфные роботы,
-- силовая робототехника (скажем, всё что работает с грузами больше 10 кг),
-- софт для роботики (я вообще считаю, что в России только софт и можно делать конкурентоспособно на мировом уровне -- только то, что можно передавать покупателю по проводам или оптоволокну),
-- модульное роботостроение (что бы это ни значило),
-- образовательная робототехника,
-- медицинская робототехника (и вариант поуже -- для помощи инвалидам).
Часть тем Робоцентр Сколково уже копает вглубь сам, часть тем пока "ничьи". Интересны и перспективны все. С нетерпением жду, что будет на Skolkovo Robotics через год.