Пререквизиты для прохождения курса QML#

Настоящий курс совмещает в себе как теорию для глубинного понимания материала, так и большое количество практики для закрепления навыков и проработки неочевидных ситуаций/проблем. Поэтому предполагается, что некоторые базовые знания у вас уже есть. Проверить себя можно с помощью опционального входного теста, который поможет понять, нужно ли проходить вводные “голубые” лекции –- по Python, математике и машинному обучению (15 вопросов всего, по 5 на блок). Тест довольно простой, так что если вы его прошли без ошибок или почти без ошибок – это мало о чем говорит, все равно дальше может быть сложно. А вот если ошибок много, тогда вам стоит обратиться ко вводным “голубым” блокам.

Python, Poetry и среда разработки#

Для успешного прохождения курса вы должны уметь делать и понимать такие вещи, как:

  • копирование файлов с GitHub;

  • установка Poetry и библиотек Python;

  • как запустить Jupyter Notebook;

  • основные сочетания клавиш в Jupyter Notebook;

  • как запускать код в Jupyter Notebook;

  • какие простые типы данных существуют в Python;

  • как работать со сложными типами-контейнерами (list, dict, tuple), включая самые популярные методы каждого из них;

  • как работает арифметика Python и как переменные разных типов соотносятся друг с другом;

  • что такое условные конструкции и ветвление логики;

  • что такое блок кода в Python и зачем нужны отступы (табуляции);

  • что такое циклы и как их можно использовать применительно к сложным типам данных;

  • как писать функции в Python, что такое аргументы функции и какими они бывают;

  • что такое декоратор и как его использовать;

  • базовый ООП: объявление классов, понятие объекта класса, умение писать методы класса.

Если какая либо из тем вызывает у вас непонимание, то настоятельно рекомендуется освежить знания (или даже их приобрести), пройдя соответствующие уроки в блоке “Основы Python”. Даже если у вас есть опыт работы с ним и написания кода, то предлагается ознакомиться с процессом установки всех необходимых зависимостей и библиотек, а также горячими клавишами и разнообразными функциями в Jupyter Notebook.

Линейная алгебра и Numpy#

Для понимания базовых квантовых алгоритмов и алгоритмов квантового машинного обучения, как и в классическом машинном обучении, не обойтись без линейной алгебры. Если есть время взяться за математику по-серьезному, рекомендуем курс Gilbert Strang или Д.В. Беклемишева, а также задачник А.И. Кострикина. А если Вы это когда-то изучали линейную алгебру, но подзабыли ее, то поможет блок нашего курса. Хочется, чтобы у Вас не было проблем с такими понятиями как:

  • вектор-строка и вектор-столбец;

  • линейная зависимость векторов;

  • системы линейных уравнений;

  • матрицы, определитель и след матрицы;

  • линейный оператор;

  • комплексное и эрмитово сопряжение;

  • скалярное и векторное произведения;

  • гильбертово пространство.

Список явно не исчерпывающий и скорее всего явно так и не перечислишь все то, что может встретиться по мере изучения квантовых алгоритмов.

Машинное обучение#

Наконец, чтобы говорить о квантовом машинном обучении, надо иметь неплохое представление о собственно машинном обучении. Блок этого курса рассказывает о том, что общего у разных задач машинного обучения и как из основных компонентов, подобно пазлу, складываются различные применения моделей машинного обучения. Этот блок, впрочем, не заменяет хорошей книги или курса по машинному обучению (как курс Andrew Ng, специализация Яндекса и МФТИ, mlcourse.ai, курс “Машинное обучение” на ФКН ВШЭ – Соколов Е. А.) или учебник по машинному обучению от ШАД, покрывающего такие темы как:

  • обучение с учителем и без учителя, обучение с подкреплением;

  • метрики качества в задачах обучения с учителем;

  • функции потерь и сведение задач машинного обучения к задачам оптимизации;

  • обработка и построение признаков;

  • оценка качества модели и кросс-валидация;

  • алгоритмы классификации и регрессии: деревья решений, лес, бустинг, логистическая регрессия и др.;

  • алгоритмы ранжирования, метрики качества ранжирования;

  • обучение без учителя: снижение размерности, кластеризация, поиск аномалий;

  • байесовский взгляд на машинное обучение;

  • обучение представлению.

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