Курсы ШАДа
В течение семестра каждый учащийся должен успешно пройти как минимум три курса. Например, если в основной программе их два, то необходимо выбрать какой-нибудь из спецкурсов.
В данном курсе будет дан обзор текущего состояния в области вычислений с учётом иерархической структуры памяти. Мы рассмотрим базовые примитивы и структуры данных, поговорим о некоторых стандартных приёмах и подзадачах. Подробно будут рассмотрены алгоритмы на графах во внешней памяти. Будет затронута тема кеширования и cache-oblivious алгоритмов.
Также мы рассмотрим модель streaming-вычислений, в которой данные на вход поступают итеративно и их количество таково, что сохранить их в оперативной памяти или на диске не представляется возможным.
Программа:
Курс даёт базовые знания в области алгоритмов и структур данных. Они очень важны для понимания работы библиотек, алгоритмов и языков программирования. Курс состоит из трёх частей.
На лекциях студенты получают необходимую теоретическую базу. На семинарских занятиях будут разбираться задачи, которые показывают применения и скрытые возможности пройденных структур данных.
Домашние задания по курсу закрепляют полученные знания и воспитывают хороший стиль написания кода, который позволяет избежать стандартных, но от этого ничуть не менее распространённых даже у опытных разработчиков, ошибок.
Программа:
При разработке высоконагруженных систем невозможно не обращать внимание на то, в каком окружении работает код. В компаниях типа Яндекса это, как правило, многочисленные серверы с несколькими многоядерными x86 процессорами под операционной системой Linux. Знание того, как работает процессор и операционная система, позволяет понять некоторые особенности работы реального кода.
В курсе будет разобрана работа ядра миниатюрной UNIX-подобной операционной системы — xv6. Начнём с того как работает процессор и язык ассемблера, далее разберём управление процессами, памятью, работу в мультипроцессорной среде.
Программа:
Изучение дисциплины «Байесовские методы машинного обучения» нацелено на освоение т.н. байесовского подхода к теории вероятностей как одного из последовательных способов математических рассуждений в условиях неопределённости.
В байесовском подходе вероятность интерпретируется как мера незнания, а не как объективная случайность. Простые правила оперирования с вероятностью, такие как формула полной вероятности и формула Байеса, позволяют проводить рассуждения в условиях неопределённости. В этом смысле байесовский подход к теории вероятностей можно рассматривать как обобщение классической булевой логики.
Программа:
Курс "рассчитан на тех, кто не учился лингвистике, но хочет узнать о разнообразии и устройстве языков мира и о том, что в них доступно для автоматической обработки, а что нет. В рамках курса предусматривается решение различных лингвистических задач (самодостаточных и не только).
Программа:
Классический курс функционального анализа, включающий общую теорию метрических и нормированных пространств и теорию операторов в нормированных пространствах. Будут затронуты аспекты спектральной теории операторов и преобразования Фурье, а также приложения функционального анализа к анализу данных, машинному обучению и т. п. В частности будет показано, что одно из важных понятий в машинном обучении, ядро, естественным образом возникает в теории гильбертовых пространств с воспроизводящим ядром.
Программа:
Оптимизация является одной из основных рабочих лошадок, используемых в машинном обучении. Структура курса сильно отличается как от обычного курса по оптимизации, так и от стандартных курсов по выпуклому анализу.
Программа:
Курс посвящён современным нейросетевым методам в компьютерном зрении и в компьютерной графике.
Программа:
Курс посвящён методам и алгоритмам компьютерного зрения, используемым для извлечения информации из изображений и видео. Рассматриваются следующие темы: основы обработки изображений (шумоподавление, тональная коррекция, выделение краёв), классификация изображений (основные признаки), поиск изображений по содержанию (сжатие дескрипторов, приближенные методы сравнения дескрипторов), распознавание лиц, сегментация изображений, алгоритмы обработки и анализа видео. Для большинства задач применяются современные нейросетевые модели, свёрточные сети и трансформеры.
В курсе уделяется внимание наиболее современным методам, которые используются в настоящее время при решении практических и исследовательских задач. Курс в большей степени является практическим, а не теоретическим. Поэтому все лекции снабжены лабораторными и домашними работами, которые позволяют попробовать на практике большинство из рассматриваемых методов. Работы выполняются на языке Python, с использованием различных библиотек.
Программа:
Адаптационный курс по математике для поступивших по альтернативному треку.
Программа:
Первая часть годового курса. Она посвящена общей методологии машинного обучения, подходам к обработке данных и оценке моделей, а также классическим моделям машинного обучения: линейным, деревьям, ансамблям и различным типам вероятностных моделей.
Программа:
С++ — мощный язык с богатым наследием. Тем, кто только ступил на путь освоения этого языка, очень просто заблудиться в изобилии техник и приёмов, созданных за последние 30 лет.
Курс посвящён современному подмножеству языка — Modern C++ (стандарты 11, 14 и 17). Много внимания уделяется инструментам и библиотекам, которые не являются частью языка, но без которых не получится построить большой и сложный проект.
Программа:
Построение стохастических моделей и их использование на практике невозможно без твёрдых знаний основных математических инструментов, позволяющих работать со случайностью.
Вероятностно-статистический курс стохастики состоит из лекций и семинарских занятий и призван дать изложение основных понятий теории вероятностей и теории случайных процессов, необходимых для последующего курса лекций и семинарских занятий по вероятностно-статистическим методам в теории принятия решений (весенний семестр).
Программа:
В рамках курса рассматривается архитектура распределённых систем: общие принципы и популярные распределённые алгоритмы и то, и как они применяются в реальных промышленных продуктах. Разбираются сложности при разработке таких систем, а также вопросы консистентности, масштабируемости и отказоустойчивости.
Программа:
Курс направлен на овладение навыками работы с данными для машинного обучения. Эти навыки включают в себя дизайн конвейера сбора и обработки данных, его оптимизацию под разнообразные ограничения (бюджет, качество работы модели и проч.), автоматизацию этих процессов, оценку качества работы модели и её улучшение. Всё это — интегральная часть ML/AI-решений и задачи, с которыми инженеры сталкиваются в повседневной работе.
По итогам курса слушатели смогут самостоятельно реализовать полный цикл работы с данными : от сбора обучающего набора данных до проверки и поддержания качества работы модели на меняющихся данных.
Программа:
Rust — это молодой системный язык программирования, спроектированный с учётом богатой истории C и С++. За языком уже сейчас стоят большие игроки ИТ-индустрии: в Rust Foundation входят Google, Amazon, Microsoft, Facebook и Huawei — эти компании спонсируют развитие языка и принимают активное участие в его развитии.
В рамках курса мы рассмотрим все ключевые аспекты языка: ownership, borrow checking, fearless concurrency, процедурные макросы, сетевое программирование, async и unsafe. Будет много практики: 2–4 задания каждую неделю, а также 3 больших проекта (3–4 недели каждый), в которых нужно будет написать работающее приложение на 700–800 строк кода (или даже больше).
Курс рекомендуется всем, кто уже имеет опыт программирования на других языках (желательно — на С++) и хочет познакомиться с Rust.
Программа:
Курс посвящён базовым криптографическим алгоритмам и схемам, которые лежат в основе всех основных прикладных криптопротоколов и систем. Рассматриваются блочные шифры, хэш-функции, режимы шифрования, схемы выработки кодов аутентификации сообщений и другие симметричные криптографические алгоритмы. Курс охватывает основные принципы построения криптографических систем и задачи, которые решаются с их помощью.
Программа курса строится не вокруг как можно большего количества аббревиатур (SHA1, MD5, AES и т.п.), а через изучение фундаментальных криптографических идей, лежащих в основе как самих схем, так и требований, которые к ним предъявляются. Освещаются основные идеи, лежащие в основе современного криптографического анализа, и принципы построения надёжной криптографической инфраструктуры.
Программа:
В математике игрой называется стратегическое взаимодействие сторон: например людей, животных, фирм или стран. Теория игр пытается предсказать исход подобного взаимодействия. Её задача — найти стратегию, которая позволит игроку достичь наилучшего результата, учитывая, что исход игры зависит не только от действий самого игрока, но и от действий его оппонентов. Основной подход к решению игр предложил американский математик Джон Нэш, получивший в 1994 году Нобелевскую премию по экономике.
На курсе вы изучите основные понятия теории игр, поиграете в игры и рассмотрите задачи из разных областей знаний (экономики, биологии, политологии), которые можно решить при помощи теории игр.
Программа:
В науке нет единого подхода к определению понятия информации. В разных областях оно трактуется по-разному: информация по Хартли, энтропия Шеннона, Колмогоровская сложность или коммуникационная сложность. Каждое из понятий отражает некоторую грань интуитивного понятия информации. Курс охватывает все эти грани и то, как разные подходы к информации применяются в решении задач.
Программа:
Курс читают специалисты разных направлений и рассказывают о методах работы с Python через призму своего опыта. Лекции максимально нацелены на практическую пользу и строятся на примерах из рабочих процессов.
Все что мы рассказываем полезно в дальнейшей работе. Мы не рассказываем о том, что знает полтора человека и усложняет жизнь. Мы рассказываем не только на тривиальных примерах, но и на примерах из рабочих процессов.
Программа:
Курс предназначен для будущих аналитиков и разработчиков, которые планируют работают с данными. Из курса вы узнаете, как спроектировать хранение данных, как автоматизировать всю цепочку их преобразований, как сэкономить место и вычислительные ресурсы кластера (а значит, деньги).
Безусловно, за 12 недель невозможно рассмотреть все тонкости и аспекты, поэтому основной акцент будет на универсальных знаниях, которые приносят пользу независимо от конкретных технологий.
Программа:
NLP (Natural Language Processing) — это одно из направлений изучения ИИ, которое занимается компьютерной обработкой сырых данных на естественном языке. Курс охватывает основные задачи в NLP и рассказывает о том, какие статистические подходы получают новую жизнь и новую интерпретацию в нейросетях, а какие постепенно отмирают.
Вы узнаете, что NLP — это не набор пар, а общие идеи, которые проникают в разные задачи и отражают некоторую общую концепцию. Вы также познакомитесь с подходами, применяемым на практике.
Программа:
Курс знакомит с современными методами трёхмерного анализа сцены, включающими в себя работу с обычной камерой и со специализированными сенсорами вроде лидара. Вы научитесь реконструировать трёхмерную структуру сцены по нескольким изображениям разными методами, в том числе современным NERF, и работать с облаками точек.
Программа:
Продолжение курса Алгоритмы и структуры данных. Лекции покрывают стандартные и продвинутые темы: алгоритмы на строках, конечные автоматы, контекстно-свободные грамматики, задачи о максимальном потоке, персистентность, быстрое преобразование Фурье (FFT), многопоточность и сжатие информации.
На семинарских занятиях разбираются задачи, которые показывают применения и скрытые возможности пройденных структур данных. Домашние задания закрепляют полученные знания, воспитывают хороший стиль написания кода и учат избегать распространённых ошибок.
Программа:
Современные веб-приложения строятся поверх СУБД. Они позволяют разработчикам не думать о том, как хранить и искать данные, обеспечить конкурентный доступ большому числу пользователей одновременно и оптимально использовать ресурсы железа. Все эти сложности скрыты за простым интерфейсом языка запросов, как правило, диалекта SQL. Тем не менее при построении высоконагруженных систем необходимо понимать, как работает СУБД и почему выполнение запросов занимает определённое время.
На курсе разбирается устройство СУБД изнутри: хранение данных, выполнение запросов и реализация транзакций. В первую очередь курс рассчитан на тех, кто хочет присоединиться к командам, отвечающим за разработку СУБД, но также будет полезен и тем, кто собирается использовать хранилища данных с доступом в реальном времени в рабочих проектах.
В Яндексе есть несколько команд, занимающихся разработкой СУБД: Postgres, ClickHouse, YDB и YT.
Программа:
Продолжение курса первого семестра, посвящено асимметричной криптографии и криптографическим протоколам. На курсе рассматриваются схемы шифрования с открытым ключом, схемы электронной подписи и протоколы согласования ключей. Большое внимание уделяется протоколам аутентифицированной выработки общего ключа и защиты канала связи, в частности, базовому криптографическому протоколу современного интернета — TLS.
Курс также охватывает проблемы доверия к открытым ключам, инфраструктуру открытых ключей PKI и методы защищённого хранения закрытых ключей. Заключительные лекции посвящены новым направлениям в криптографии, таким как квантовая криптография и блокчейн.
Программа:
Курс охватывает современные архитектуры генеративных моделей и алгоритмы их обучения. На лекциях освещаются и анализируются основные подходы к генеративным моделям, а на семинарах разбираются примеры генерации изображений, текстов и других объектов с помощью вариационных автокодировщиков (VAE), генеративно-состязательных сетей (GAN), авторегрессионных моделей, нормализующих потоков и других подходов.
Курс Высшей школы экономики по генеративным моделям проводит команда преподавателей из лаборатории LAMBDA ФКН НИУ ВШЭ.
Продолжение курса теории игр, охватывающее отдельные ветки теории игр, том числе теорию социального выбора и теорему Эрроу, которая доказывает, что демократия невозможна. Вы изучите игры с сигнализированием на примере образования и узнаете, что сильным студентам нужно вкладываться больше, чтобы подать рынку верный сигнал, а также научитесь применять теоретико-игровой аппарат к анализу конфликтов и сотрудничества. За результаты в этой области Роберт Ауман и Томас Шеллинг в 2005 году получили Нобелевскую премию.
Вторая половина курса посвящена теории аукционов и дизайну механизмов. Разберём самые известные виды аукционов, в том числе обобщённый аукцион второй цены и аукцион Вики, с помощью которого ведущие поисковые сети продают рекламу. Поговорим об эффективном и оптимальном способах продажи товара и решим задачу по поиску оптимального механизма продажи.
Программа:
Курс знакомит с типичными классами и эффективными способами решения задач оптимизации, в которых множество допустимых решений имеет явно выраженную комбинаторную природу. Подобные задачи встречаются в теории графов: паросочетания, пути, упаковки, покрытия и раскраски и т. п.
Курс также охватывает применение теории линейного и целочисленного программирования, включая понятие линейной двойственности и различные свойства целочисленности линейных программ (тотальная унимодулярность и тотальная двойственная целочисленность), а также широкий класс комбинаторных задач, решаемых за полиномиальное время.
Вы познакомитесь с приближёнными методами решения задач, такими как линейные релаксации, которые позволяют эффективно строить приближённые решения с гарантированной погрешностью. Семинары курса посвящены различным методам решения комбинаторных задач (как правило NP-трудных) на практике. Будут рассмотрен метод ветвей и границ, метод локального поиска, а также различные методы решения с использованием солверов для линейных программ.
Для прохождения курса потребуются базовые знания линейной алгебре, знание основных терминов теории графов, а также алгоритмическая подготовка на уровне базового курса по алгоритмам и структурам данных.
Программа:
Продолжение курса знакомит с различными областями и приложениями современного машинного обучения, в том числе с основами глубинного обучения, рекомендательными системами, временными рядами, обучением с подкреплением.
Программа:
Курс посвящён применению байесовских методов в глубинном обучении и охватывает следующие темы: применение вероятностного моделирования для построения порождающих моделей данных, использование состязающихся сетей для приближённого вывода, моделирование неопределённости в параметрах нейронной сети и о некоторых открытых проблемах глубинного обучения.
Программа:
Курс по обучению с подкреплением (RL) посвящён построению алгоритмов, которые изучают систему методом проб и ошибок. В отличие от традиционного машинного обучения методы RL должны сначала определить, какие именно результаты являются «лучшими». Вы изучите основы RL, инженерные «хаки», используемые для решения реальных задач RL, а также промышленные приложения и имеющиеся актуальные исследовательские работы. Курс охватывает самые разные приложения: от игр и робототехники до рекомендательных систем и машинного перевода.
Программа:
С++ — мощный язык с богатым наследием. Тем, кто только ступил на путь освоения этого языка, очень просто заблудиться в изобилии техник и приёмов, созданных за последние 30 лет.
Курс учит «Modern C++» — современному подмножеству языка (стандарты 11, 14 и 17). Много внимания уделяется инструментам и библиотекам — вещам которые не являются частью языка, но без которых не получится построить большой и сложный проект.
Программа:
Курс посвящён топологическим и алгебраическим идеям, на которых основан топологический анализ данных. Он охватывает такие понятия, как симплициальный комплекс, фильтрация комплексов и устойчивые симплициальные гомологии.
Вы изучите теорию, которая позволит вычислять геометрически интерпретируемые характеристики сложных многомерных данных. Подобные характеристики часто используются в естественных науках, а в последнее время становятся популярными и в машинном обучении. На лекциях также будет затронуты темы, связанные с топологией и геометрией случайных данных.
Программа:
В этом курсе разобран ряд методов статистики, которые зачастую не включены в программы стандартных курсов математической статистики. Показано, как идеи из математической статистики могут применяться в современных методах машинного обучения для улучшения существующих процедур анализа и обработки данных.
В рамках данного курса рассматривается методология построения суррогатных моделей и показывается, как изложенные методы её реализуют. Применение методологии проиллюстрировано на примере решения реальных индустриальных задач.
Программа:
Рекомендательные системы используются внутри множества сервисов: интернет-магазинов, видеохостингов, новостных ресурсов, лент в соцсетях и т. п. На курсе вы познакомитесь с классическими алгоритмами рекомендаций, такими как матричные факторизации, и с более современными нейросетевыми подходами. Большое внимание на курсе уделяется практическому применению алгоритмов в продакшене и разбору кейсов использования рекомендательных систем в сервисах Яндекса и других компаний.
До недавнего времени описание мощного искусственного интеллекта, способного решать задачи распознавания и синтеза речи, можно было встретить только в научной фантастике, но сегодня нейросеть умеет распознавать человеческую речь лучше, а речевые технологии используются для множества задач: в голосовых помощниках, для ввода текста и даже для синхронного перевода.
Курс посвящён современным речевым технологиям, их устройству и применению. Вы научитесь работать с сырыми речевыми данными, изменять, распознавать, а также генерировать голос.
Программа
Курс посвящён применению методов анализа данных в решении задач из медицины, биологии и демографии. Вы познакомитесь с широким кругом задач анализа данных — регрессией, классификацией, интерпретацией косвенных экспериментов и анализом нелинейных статистических взаимозависимостей, — а также разбёрете постановки задач в терминах, заложенных в применяемых методах.
В задачах из медицины мы разберём построение полиномиальной регрессии, методы выбора сложности получаемого решения, оценку информационного расстояния между распределениями, использование комбинаторной размерности и радемахеровской сложности, а также метод конформных предикторов. В задаче из биологии нам потребуется непараметрическая оценка взаимной информации в гильбертовом пространстве с воспроизводящим ядром, а в задаче из демографии — решение некорректных задач и регуляризация.
По ходу изложения курса будем останавливаться на вопросах обоснования популярных методов, например, «ядерный трюк», Ridge и LASSO регрессии.
Программа
За последние несколько лет глубинное обучение надёжно закрепилось как инструмент для решения задач, в которых важны быстрое время итерации эксперимента и высокая производительность моделей на этапе применения. В курсе сделан акцент на практические аспекты обучения и применения нейросетей, которые обычно оставляют за рамками образовательных программ.
Программа:
Курс знакомит с основами Go и учит применять язык на практике. На первый взгляд Go похож на C: он небольшой, похож по синтаксису и статически типизирован. Но на этом сходство заканчивается — Go заимствует хорошие идеи из других языков, но избегает усложняющих фичей.
Курс охватывает следующие темы: стандартную библиотеку, инструменты языка (профайлер, race-детектор, пакетный менеджер и т. д.) и concurrency. Основной упор сделан на практическом применении и решении конкретных задач.
Программа:
Курс посвящён конкурентным системам и задачам в самом широком понимании. Он охватывает темы от уровня конкуренции ядер процессора за запись в одну ячейку памяти до распределённых систем, которые хотят отказоустойчиво и согласованно реплицировать своё состояние между несколькими серверами.
Программа:
Курс представляет собой работу над командными исследовательскими проектам в области машинного обучения.
Курс представляет собой проектную работу по разработке ML‑проектов в командах.
Курс посвящён технологии беспилотного транспорта и включает следующие темы: компоненты беспилотного автомобиля, задачи, которые возникают в процессе создания этих компонент и методы их решения.
Программа: