Не только для выпускников мехмата: как ШАД учит разработчиков математике

Рассказывает преподаватель курса «Математика для Data Science».

В 2020 году в ШАДе открылся новый трек поступления, предназначенный для тех, у кого уже есть опыт промышленной разработки или научных исследований в сфере анализа данных. Набор на следующий поток начнётся в апреле. Его участниками могут стать даже те, кому пока не хватает фундаментальной подготовки в области математики: в ШАДе студенты смогут пройти адаптационный курс «Математика для Data Science».

Почему для обучения анализу данных не обязательно быть продвинутым математиком, как можно сжать университетскую программу в несколько раз и зачем разработчику нужна математическая интуиция, рассказывает Дмитрий Трушин – кандидат физико-математических наук, академический руководитель онлайн-бакалавриата «Компьютерные науки и анализ данных», преподаватель в ШАДе и на ФКН НИУ ВШЭ.

Как появилась идея открыть новый поток

Когда только открывался ШАД, его идея была такова: учить математиков и физиков машинному обучению. Предполагалось, что приходят люди с серьёзной математической подготовкой, а им объясняют, как применять эти знания.

Преподаватели оперировали такой математикой, от которой бледнели даже учащиеся мехмата, но именно за этим и приходили студенты.

Это работающий подход, но с ним есть одна проблема: специалисты с хорошим математическим бэкграундом – это довольно узкий круг людей. Яндекс растёт, сегодня он ищет сотню сильных профессионалов, а завтра начнёт искать тысячу. И ШАД призван помогать в таком поиске. К тому же, в ШАДе давно существовала идея обучать более широкую аудиторию. Конечно, эти люди не будут во всех аспектах обладать таким же уровнем навыков и знаний, как те, кто пять лет учил математику в вузе. Но у ШАДа и нет цели вырастить продвинутого математика. Основная задача — научить тому, что имеет конкретные приложения в машинном обучении.

Первый поток курса «Математика для Data Science» уже прошел в ШАДе с сентября по декабрь 2020 года. В основном в нём участвовали студенты Школы, но были и вольнослушатели. Например, сотрудники Яндекса, у которых основное образование не связано ни с программированием, ни с математикой, и которые хотели усилить фундаментальную подготовку.

Как проходит обучение

Классический формат проведения занятий по математике – это лекции и семинары. Для нашего курса это долго и неэффективно: в таком случае теория оторвана от практики, и к началу семинара  её нужно снова повторять. Поэтому я выбрал другой формат: трёхчасовые занятия – гибрид лекций и семинаров. На них рассказываю новый материал, параллельно демонстрируя, как решаются задачи с его использованием.

Выполнение домашних заданий обязательно. В среднем на них уходит 5-6 часов в неделю. Все курсы постоянно сопровождаются онлайн: материалы и задания я выкладываю в LMS, а технические и содержательные вопросы по заданиям мы обсуждаем в чате в Telegram.

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

Как проходил отбор тем для программы потока

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

И ФКН, и ШАД стремятся выбрать из этого айсберга то, что действительно может пригодиться. Есть несколько отдельных математических дисциплин, без которых в машинном обучении никуда:

Математический анализ — основа для формирования математического аппарата;

Линейная алгебра – язык, на котором формулируются понятия машинного обучения;

Теория вероятностей — дисциплина, которая позволяет рассуждать о случайных объектах, алгоритмах, которые работают не во всех случаях, и прочих любопытных явлениях.

Именно эти дисциплины проверяются на вступительных экзаменах в основной поток обучения в ШАДе.

Иногда полезно знать и более «экзотические» разделы математики. Я сам считаю абстрактную математику бессмысленной и беспощадной, но иногда она удивляет меня своими внезапными приложениями в реальном мире.

Например, в Международной лаборатории алгебраической топологии и ее приложений на ФКН, где при помощи топологических методов изучается головной мозг. Её руководитель — Антон Айзенберг, алгебраический тополог. К нему обратились биофизики одной из международных лабораторий по изучению головного мозга, которые попробовали применить в своей работе инструменты по подсчёту гомологий.

В ходе работы они представили мозг человека через геометрические объекты, и с помощью специализированных программ подсчитали размерности гомологий. Это позволяет вычислять для каждого отдельного головного мозга представление в форме последовательности натуральных чисел. В результате сотрудники лаборатории обнаружили закономерности: если мозг здоров, то числа ведут себя одним образом, а если есть какое-то заболевание – то другим.

Однако делать ставку на то, что вам повезёт и подобная «экзотика »пригодится в работе, не стоит. На новом потоке мы даём базу, знания, которые точно пригодятся. Важно освоить зарекомендовавшие себя методы, а не увлекаться сложными теориями, которые могут и вовсе не пригодиться. Зато, если однажды придётся разбираться с чем-то абстрактным, то базовые знания в этом тоже очень помогут.

Почему не охватить больше

В вузе математический анализ и линейную алгебру изучают в течение двух лет — а у нас есть всего полгода. Даже базовую информацию нужно правильно упаковать, подавать в понятном виде и в разумном объёме, который студент сможет воспринять. Поэтому моя главная задача – рассказывать эффективно. Когда преподаёшь математику, часто наблюдаешь такую картину: пока ты пытался быстро дойти до содержательного материала, все уже растерялись, сидят и ничего не могут понять. Это сигнал, что рассказывать что-то дальше бессмысленно: новую информацию уже точно не воспримут.

У меня уже был опыт «сжатия» программ математических курсов. Сначала в рамках подготовки к магистратуре ФКН НИУ ВШЭ нужно было сократить до 10-ти занятий курс линейной алгебры, который занимает 35 пар на очном отделении. Позже у меня были эксперименты по другим предметам в рамках различных подготовительных курсов в ВШЭ. Сложнее всего было организовать курс, в котором основы линейной алгебры, математического анализа и теории вероятностей рассказывались бы за 6 занятий.

Однажды я услышал от своего товарища инженера: «Худшее, что есть в математике - это доказательства». В некотором смысле это правда. Достаточно посмотреть, как устроено классическое обучение высшей математике. Представьте себе учебник «Как пользоваться компьютером», в котором первая глава называется «Как добыть руду», далее объясняется, как протравить дорожки на материнской плате, припаять микросхемы, написать драйверы для клавиатуры и видеокарт… На последней странице вы читаете: «Вы собрали компьютер, нажмите кнопку “Пуск”».

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

Однако доказывать теоремы и применять их – абсолютно разные навыки. Любой разработчик использует компилятор, но далеко не каждый представляет, как компилятор устроен внутри; ему достаточно знаний о том, как применять этот инструмент. Поэтому я сокращал материал ровно до тех знаний, которые нужны для работы: вырезал объяснения о том, как выстроена теория, оставлял информацию об основных объектах и о том, как можно эти знания использовать на практике.

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

Пока я этим занимался, мою программу увидел Стас Федотов. Он рассказал о том, что ШАД собирается набирать людей с нематематическим образованием и предложил вести такие занятия для разработчиков.

Почему изучать математику лучше вживую

Принципиальная позиция ШАДа – это живое общение учащихся и преподавателей. Даже во время карантина мы делали розыгрыш на места в аудитории. Переходить полностью в онлайн-формат мы не планируем.

Конечно, можно самому взяться за освоение высшей математики и корпеть над учебниками. Но есть вещи, которые не прописаны в теории, те, про которые лучше услышать от более опытных людей. Некая философия: как правильно думать про каждую теорию, как применять те или иные понятия.

Например, в линейной алгебре есть теорема про сингулярное разложение или SVD, в которой утверждается, что любую матрицу можно разложить некоторым образом. Возникает справедливый вопрос: и что дальше делать с этим разложением? Оказывается, что в зависимости от того, откуда взялась матрица с данными, возникают разные интерпретации для сингулярного разложения или его компонент. А значит, мы можем вытаскивать скрытые закономерности из данных. Ещё можно придавать разложению геометрический смысл.

Я часто демонстрирую студентам популярное видео о том, как можно быстро симулировать физические процессы в компьютерных играх при помощи SVD. Без применения этой теории процессор выдаёт 3 кадра в секунду. С применением скорость увеличивается до 2500 кадров в секунду на центральном процессоре несмотря на то, что он не рассчитан на такую скорость.  Однако SVD даёт очень хорошее сжатие информации и уменьшает объём «ненужных» вычислений. А для того, чтобы использовать SVD при симуляции физических процессов, нужно понимать, как работают разложения. С этим намного проще разобраться на занятиях с преподавателем.

Есть ещё одна причина учиться вживую: очень важно, чтобы занятиям не мешали страхи и сомнения. В изоляции человек часто ударяется в крайности от «Я вообще ничего не понимаю» до «Всё и так ясно, можно дальше не разбираться». Общение в группах позволяет здраво себя оценивать, получать необходимую поддержку и самому поддерживать других.

Почему важно развивать математическую интуицию

Внутреннее устройство математики – это формальный язык, символы на листе бумаги, которые написаны по заранее заданным правилам. На таком формальном уровне символов с ними могут оперировать компьютеры. Есть языки программирования и специальные инструменты, при помощи которых можно доказывать теоремы или проверять, верны ли их доказательства. Однако компьютер пока не способен рождать новые математические результаты, и в целом все процедуры укладываются в алгоритмы.

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

Мозг профессионального математика автоматически компилирует неформальные идеи в формальные доказательства. Не думаю, что кто-то из математиков размышляет на языке машинного кода, все предпочитают оперировать более наглядными понятиями.

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

Это рассуждение происходит не на математическом языке, а на языке высокоуровневых идей, которые у тебя накопились. Так строится приблизительный план решения самой сложной задачи. Если на этом пути человек встретил пропасть и первым придумал, что применить для её преодоления, то можно сделать открытие. Уже потом, в научной статье формальный язык опишет это открытие, склеит полученные результаты в строгий текст.

Я думаю, что у музыкантов, архитекторов и разработчиков это работает так же. Как можно построить огромное здание, думая только про бетон и кирпичи? Нужно думать о более глобальных вещах, используя свой талант, знания и прошлый практический опыт.

Краткий пересказ от Yandex GPT