Anatoly Levenchuk (ailev) wrote,
Anatoly Levenchuk
ailev

Образовательные ступеньки к деланию роботов

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

Исходное состояние: физматшкольник после сдачи всех ОГЭ
Чему его уже научили? Скажем, ЗФТШ МФТИ, которую он проходил в девятом классе, самое передовое что у нас есть для школьников. Его учили заполнять от руки полную тетрадку в каждой отсылке. Никаких компьютеров, только от руки! LaTeX, если уж речь идёт о текстах по физике и математике? В ЗФТШ МФТИ такого не слышали. В самом МФТИ уж не знаю, может быть и там студентов продолжают учить работать с ручкой и бумажкой до сих пор. Программистов я помню, как учили работать с карандашом и бумажкой в семидесятых, большие дискуссии на эти темы бушевали! Всё, нет дискуссий. В ЗФТШ МФТИ этих дискуссий нет, потому что некому там дискутировать. Так что ЗФТШ МФТИ вычёркиваем из списка мест, которые помогут вьюношу чего-то добиться в жизни. Раньше это работало, сейчас прокисло.

Так что нужно опять брать всё в свои руки. По факту у вьюноша по профильным предметам образование где-то на уровне уже ЕГЭ: в последних двух-трёх классах уровня физматшкол все программы перепутаны -- где-то материал учится в девятом классе, где-то в одиннадцатом, но поскольку вьюнош учился по нескольким программам, то в среднем там закрыто уже всё. На саму школу плюём, как на необходимый для административных целей налог, задача в школе -- минимизировать время, чтобы не мешали учиться.

Что нужно знать, чтобы делать роботов сегодня?
Ровно год назад я писал "Обучение робототехнике: для какого системного уровня?", https://ailev.livejournal.com/1351873.html и давал там холархию:
-- вселенная (все роботы в конечном итоге её истинные части)
-- ...
-- производственные или бытовые экосистемы
-- производственные или бытовые киберфизические системы (где несколько роботов)
-- робот (что бы это ни было)
-- основные части робота (манипулятор, тележка)
-- механика части робота, управляющая плата контроллера части робота
-- материаловедение для механики, программирование контроллера, режимы работы дискретки на плате
--...
-- молекулы и атомы, базовые алгоритмы и парадигмы программирования

Жизнь за год существенно повернулась. Вот несколько ссылок, которые для меня важны при обсуждении сегодняшнего дня:
-- месячной буквально давности текст "Роботы появляются, а робототехники исчезают", https://ailev.livejournal.com/1427635.html -- я вот тут и обсуждаю жизненный цикл создания современных роботов. Но дальше за последние буквально пару недель уже тоже набежало интересного:
-- выпуск NVIDIA платформы для роботов на основе Jetson Xavier: https://nvidianews.nvidia.com/news/nvidia-isaac-launches-new-era-of-autonomous-machines, https://www.nvidia.com/en-us/deep-learning-ai/industries/robotics/. А ещё подарочек от IBM, где говорится, что для нейросеток есть запасец в x100 при переходе на другую архитектуру чипов (и это не спайковые сети, а просто аналоговые нейроны, с точностью вычислений той же, что и цифровые): https://www.ibm.com/blogs/research/2018/06/future-ai-better-compute/
-- а поскольку современные беспилотники это те же роботы, то внимательно читаем https://www.slideshare.net/NVIDIAJapan/gtc-2018 (это майские 2018 года заметки, много нового и интересного про то, что там вокруг Xavier)
-- и заявления Karpathy (он директор AI в Tesla) про Software 2.0 (помним, что сегодняшняя Tesla как машина, это тот же робот) -- https://www.figure-eight.com/building-the-software-2-0-stack-by-andrej-karpathy-from-tesla/ (и там сразу можете смотреть слайды, чтобы не тратить полчаса времени на прослушивание видео, идеи-то понятны: https://www.figure-eight.com/wp-content/uploads/2018/06/TRAIN_AI_2018_Andrej_Karpathy_Tesla.pdf).
-- победа AI над человеком в последних "непобеждаемых" играх на платформе Atari https://habr.com/post/413071/. Просто машина училась играть не с нуля, а понаблюдала за человеком. И в Pitfall! максимальный результат машины был 57 очков при обучении методом проб и ошибок, а у человека 6464. Но вот после того, как машине показали, как играет человек, она сказала "Ага!" и заработала 60258 очков. И восстановление сцены по картинке тоже ничего себе: https://deepmind.com/blog/neural-scene-representation-and-rendering/. Обучение роботов больше не будет прежним, мимо этого опыта не пройдут.
-- нейроалгоритмика пойдёт в микроконтроллеры: https://petewarden.com/2018/06/11/why-the-future-of-machine-learning-is-tiny/ и можно ещё пообсуждать, распределённые или централизованные архитектуры роботов будут в моде и будет ли собственный двигательный разум у какой-нибудь руки (или как эта конечность там будет называться, и из чего состоять). Чай, не биологическая эволюция, многое можно попробовать.

Там всё такое бодрое и новое сейчас, в этой новой робототехнике (которую очень не хочется называть старым словом). И это я ещё не иду по линии понимания естественного языка, это хоть и интерфейс к роботам и мозг робота, но всё-таки пока не воспринимается как самое-самое роботическое (и тут тоже ведь всё бежит со скоростью два прорыва в неделю). Можно помянуть тут "робота-юриста" из последних забавностей, который был (https://broadcast.comdi.com/watch/ro0p0ne2lhmppa111sz1):
-- сделан "Мегафоном" (самая профильная, как понимаете, компания в робототехнике)
-- проиграл знаменитому юристу со счётом 178 против 243 из 300. А если бы это был не знаменитый, а типовой юрист среднего звена, то ещё непонятно, кто выиграл бы!
-- честно учился у людей, ибо в одном из ответов просто выругался матом.

Это всё я пока не отношу к классическому "я хочу делать роботов". С классическими роботами же пока реализуется программа Шмитхубера 2015 года про обезьянку-капуцина (робот видит банан на дереве, строит маршрут, карабкается на дерево, достаёт банан -- http://deeplearning.net/2015/07/13/a-brief-summary-of-the-panel-discussion-at-dl-workshop-icml-2015/), которую он предлагал решить лет за десять. Ну, и эту программу успешно реализуют, полным ходом. Через пять лет робототехника опять станет другой, но это будут уже проблемы самого вьюноша: через пять лет он должен будет каким-то уровнем понимания в этой предметной области владеть и переучиваться.

Вывод: чтобы вьюнош реализовал хотелку "делать роботов", его нужно научить:
1. Всему фундаментальному (онтологика, системное мышление): у меня на эту тему огромный набор текстов по фундаментальному образованию: https://ailev.livejournal.com/1427073.html. Тут всё плохо, но пара курсов (системное мышление и онтологика) уже есть, вот им и будем учить. А дальше и стейкхолдерское мастерство, и много чего ещё подтянется.
2. Системная инженерия, чтобы понимал хоть что-то про жизненный цикл киберфизической системы. Тут готового курса пока нет, но процесс идёт: концептуальная дисциплина обсуждается в https://ailev.livejournal.com/1432101.html, развёрнуто я её буду обсуждать 21 июня 2018 на семинаре Школы в https://www.facebook.com/events/618851998468072/. Когда вьюнош освоит системное мышление хоть как-то, и онтологику хоть как-то, как раз и системная инженерия хоть на каком-нибудь уровне подоспеет. В качестве инженерных поделок минимальный у него опыт планируется на следующий год: они там FPGA-проект в кружке у себя будут делать, чтобы было понятно, что вычисления в процессоре не растут, как булки, на деревьях.
3. Программирование. Тут ничего не изменилось за ровно два года с момента написания текста "образование по computer science для начинающих", https://ailev.livejournal.com/1274596.html. Тут вьюнош в состоянии жизненного пути из этого текста примерно начиная со слов "-- дальше можно пытаться рассказать о собственно computer science". То есть хорошо бы SICP или cs50, для этого всё готово. Беда только, что некому учить, и нет автомагических проверок заданий и достаточного количества задач. А дальше -- выруливать в направлении текста https://julialang.org/blog/2017/12/ml&pl, "On Machine Learning and Programming Languages"
3. Собственно учить стеку Software 2.0, который непонятно какой на сегодняшний момент -- deep learning и всему с этим связанному. Вот тут пока полный ноль, ибо задача распадается на две:
-- математические пререквизиты (фундаментальная часть)
-- собственно машинное обучение, назови его хоть data science, хоть deep learning, хоть когнитивным компьютингом, -- прикладная часть. Тут можно ориентироваться на "https://habr.com/company/everydaytools/blog/413941/ "Чему я научился, пройдя множество собеседований в компаниях и стартапах из сферы ИИ" -- но там написано что-то совсем уж странное (что, нужно знать всего несколько глав из разных книжек?!), так что оставим прикладную часть на когда-нибудь и сосредоточимся на пререквизитах, необходимых для попадания в это самое машинное обучение.

Но нужно ещё добавить, что где-то тут ещё болтается физика. Моё мнение такое, что физики за девятый класс физматшколы на общем уровне должно хватить, а потом сразу спецкурсы по мере возникновения необходимости. Ничего специального "пререквизитного" фундаментального. Физику давно нужно перестать считать "общей наукой", сорта физиков друг от друга отличаются больше, чем сорта программистов. Разделение труда, оно и тут произошло -- без государственных программ развития науки. Государственные программы по старинке продолжают удерживать всё вместе, разве что натурфилософией не называют, как ещё чуть раньше. Так что физику ставим на холд, если это электроника или не физика запуска каких-нибудь бесщёточных двигателей, где нужно учитывать "противоЭДС", чтобы тиристоры не горели в этих схемах по "загадочным причинам".

Нецарские пути в обучение машинному обучению
Мы только что довольно подробно пообсуждали в сообществе вычислительных программистов на Julia образование по математике, которое нужно иметь, чтобы из школы попасть куда-нибудь на входной уровень а хоть той же ШАД (https://yandexdataschool.ru/). Это в чате https://t.me/JuliaLanguage, смотреть с реплики https://t.me/JuliaLanguage/3488 -- "У меня сын закончил только что 9 класс. И вот понятия не имею, как его в эти численные методы засунуть", и там дальше где-то сотня реплик обсуждния. Вывод дискуссии неутешительный:

1. Ничего готового нет. Знания распределены самые разные по самым разным книжкам, задачникам, языкам программирования и т.д. Никакого современного курса, "краткого маршрута" не существует, но есть много обрывков -- и никакого путеводителя. Да, тысяча человек немедленно каждый посоветуют одну какую-то любимую книжку двадцатилетней давности в эту программу, но никто не даст ровно наоборот: минимум, который а) будет связный в какое-то целое, б) не академически избыточен, а практически достаточен, в) поддержан задачами с автоматической проверкой решений.

2. В минимальный набор входят, конечно, линейная алгебра, оптимизация и матан, а ещё теорвер (с дискуссией о том, насколько там всё должно быть байесовское). И это, конечно, из коробки должно быть поддержано задачами на программирование всех этих методов. Например, на Julia. Который к этому моменту было бы неплохо уже знать, но это уже сверх программы -- и этого тоже нет, а есть только олимпиадное программирование на Паскале и курсы по книжкам и изредка видеолекциям (неважно, по-русски, или по-английски) с самостоятельным решением задач, для особо одарённых. Увы, мой вьюнош не особо одарённый. Команду "решить 100 задач" он сможет выполнить, а команду "изучить тему" -- нет, ему эта тема неинтересна, он лучше сэкономленное от её изучения время погоняет какие-то игры, и даже эти игры попроще. Ибо ни в одной из этих тем роботами как таковыми не пахнет, длинна цепочка от фундаментального образования к сугубо прикладным знаниям, невидима девятиклассникам (которые, повторю, не особо одарённые. С особо одарёнными-то всё понятно! Они тем и отличаются, что сами всё найдут и ночью с фонариком под одеялом читать эти бумажные учебники 1970х годов издания будут, бережно перелистывая пожелтевшие страницы!).

3. Нет ни понимания объёма образования по предыдущим пунктам (чтобы дальше уж спокойно идти в курсы машинного обучения -- но чтобы не было ни недолёта, ни особого перелёта в частные разделы академической математики), ни понимания последовательности связанных задач в достаточном количестве, да ещё с автоматической проверкой (ибо мы ж не королей учим! всё должно быть дёшево!). Хотя материалов на эту тему жуть сколько. Но есть любопытные факты, вплоть до репетиторства студентов-экономистов ВШЭ, которые в какой-то момент понимают, что им математику не додают, но не понимают, насколько и какую. Это общее явление. Так, это уже общеизвестный факт, что знаний вступительной программы ШАД (это не для школьников, а для студентов!) для поступления в ШАД не хватит. Вот эта программа -- https://download.cdn.yandex.net/shad/shad_program_v3.pdf (опять же помним, что сам ШАД нам не очень нужен, потому как после ШАД есть ощущение, что будешь препарировать графы социальных сетей, а нужно-то моделировать в real time физические миры с обезьянками-капуцинами. И вместо ШАД тоже нужно будет что-то придумывать).

В чате Julia признали, что проблема есть, и что её нужно как-то решать. Традиционно помянули, что "вот государство доложно в лице какого-нибудь правительства Москвы заняться". Ага, щас, займутся, догонят, и опять возьмутся. Но мне кажется, что что-то придумать можно будет.

Тут отдельный вопрос, почему я так напираю на Julia как язык обучения математике-информатике?
-- Паскаль пусть останется в школе! Вычислительной математики на нём не нужно! Впрочем, как и на Си.
-- мне нравится (аргумент немаленький!). С инженерным моделированием там всё ОК (https://ailev.livejournal.com/1366789.html).
-- потому как Julia быстрая и хорошо приспособлена к вычислительной математике. Но не начального уровня. Так это и не пятый класс, а по факту "после школы".
-- Питон медленный, хотя и сугубо учебный, и с хорошей инфраструктурой. Но для роботов -- медленный.
-- из быстрых языков для роботов там Си, а ещё ассемблер, и даже машинные коды. Нет, спасибо, хотелось бы более приспособленного для вычислительных задач языка. Быстрого языка для математиков, а это как раз Julia.

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

UPDATE: эх, не все понимают, о чём я. Вот достану из личной переписки:
Есть зазор между вузом и работой, но есть зазор и между школой и вузом. Вот я его затыкаю по факту в этом тексте (и говорю, что затычки нет). Ибо вузом сейчас не прокладка типа МФТИ служит, а какой-нибудь ШАД. А как туда попасть -- ну, штатных путей нет, только задор и энтузиазм. Вот я эту задачу решаю, вместо охоты и собирательства талантов штатный проход в дамки. Только не в ШАД, а в другое место, которого тоже пока нет. Но будем решать проблемы по мере их поступления.

UPDATE: Продолжение: три дня спустя -- https://ailev.livejournal.com/1433113.html

Обсуждения в интернете: https://www.facebook.com/ailevenchuk/posts/10213144535622056, https://vk.com/wall2449939_1737
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 13 comments