Все уроки

Курс

ИИ 10 класса: глубокое обучение и мультимодальный ИИ

Собирай и обучай нейросети в PyTorch для изображений, текста и звука.

Иди по урокам по порядку. В конце ты умеешь считать выход нейрона, сравнивать активации ReLU, sigmoid и softmax и писать прямой проход маленькой сети на NumPy. Ты умеешь выбрать потери, объяснить градиентный спуск и обратное распространение и написать скрипт с полным циклом обучения и теста в PyTorch. Ты умеешь обучить классификатор изображений на CNN, обучить классификатор тональности отличать положительные отзывы от отрицательных, объяснить, как внимание взвешивает другие токены, и классифицировать короткие звуковые клипы. Ты умеешь уменьшать переобучение, дообучить предобученную модель на новых классах, группировать ошибки и находить их причину и представить умный монитор дикой природы, проверенный на невиденных изображениях.

Как пользоваться этими уроками

  • Начни с урока, где написано Сделай это. Иди дальше, когда сам делаешь строку под названием.
  • Сначала играй: Игры. Потом сделай: Проверка. 8 из 10 верно для зачёта. Листы на бумаге. Ответы внизу.
  • Каждый урок опирается на предыдущий. Записывай каждый запуск обучения: настройки, кривую потерь и балл теста.
  • Уроки с кодом идут на Python и PyTorch в бесплатном онлайн-блокноте с GPU. Хватит маленьких моделей и маленьких наборов данных. Бери только открытые наборы, которые тебе можно использовать. Никогда не обучай на фото людей без их разрешения.

В каждом уроке есть игры, проверка и листы.

0 из 36

Основы нейросетей

  1. 1НейроныСчитай выход нейрона из входов, весов и смещения.
    • Запиши взвешенную сумму плюс смещение.
    • Посчитай её от руки для трёх входов.
    • Посчитай её в коде скалярным произведением.
  2. 2АктивацииСравни активации ReLU, sigmoid и softmax.
    • Построй график каждой активации.
    • Объясни, зачем сети нужна нелинейная активация.
    • Используй softmax, чтобы превратить оценки в вероятности.
  3. 3Слои и сетиСкладывай слои в сеть.
    • Запиши слой как умножение матриц.
    • Следи за формой данных в каждом слое.
    • Посчитай параметры сети.
  4. 4Маленькая сетьНапиши прямой проход маленькой сети на NumPy.
    • Собери сеть из двух слоёв на NumPy.
    • Прогони через неё батч входов.
    • Проверь форму выхода.

Обучение нейросетей

  1. 5ПотериВыбери потери для задачи и посчитай их.
    • Используй среднеквадратичную ошибку для регрессии.
    • Используй перекрёстную энтропию для классификации.
    • Скажи, что значит, когда потери падают.
  2. 6Градиентный спускОбъясни, как градиентный спуск двигает веса вниз.
    • Найди наклон кривой потерь.
    • Делай шаги со скоростью обучения.
    • Посмотри, что будет, если скорость слишком большая или слишком маленькая.
  3. 7Обратное распространениеПроследи обратное распространение ошибки назад по сети.
    • Примени цепное правило к крошечной сети.
    • Посчитай один градиент от руки.
    • Сверь его с автоматическим дифференцированием.
  4. 8Обучи сетьОбучи маленькую сеть и построй график потерь.
    • Обучай мини-батчами.
    • Построй график потерь обучения и валидации.
    • Остановись, когда потери валидации перестают улучшаться.

Фреймворки глубокого обучения

  1. 9ТензорыСоздавай тензоры PyTorch и меняй их форму.
    • Создай тензоры и проверь форму и тип.
    • Меняй форму, складывай и нарезай их.
    • Перенеси тензоры на GPU.
  2. 10МодулиСобери модель модулями torch.nn.
    • Сделай подкласс nn.Module.
    • Используй слои Linear и активации.
    • Выведи модель и число её параметров.
  3. 11ОптимизаторыОбучай оптимизаторами SGD и Adam.
    • Используй zero_grad, backward и step.
    • Сравни SGD и Adam на одной задаче.
    • Используй расписание скорости обучения.
  4. 12Скрипт обученияНапиши скрипт с полным циклом обучения и теста.
    • Загрузи данные через DataLoader.
    • Обучи, проверь на валидации и протестируй.
    • Сохрани лучшую модель.

Компьютерное зрение

  1. 13Изображения как тензорыЗагружай изображения как тензоры и нормализуй их.
    • Загрузи изображение как каналы, высоту и ширину.
    • Измени размер и нормализуй его.
    • Покажи батч сеткой.
  2. 14СвёрткиОбъясни, как фильтр свёртки находит края.
    • Проведи фильтр 3×3 по изображению от руки.
    • Примени фильтры краёв в коде.
    • Объясни stride, padding и pooling.
  3. 15CNNСобери свёрточную нейросеть, CNN.
    • Сложи слои свёртки, активации и pooling.
    • Разверни и добавь голову классификатора.
    • Следи за формами по сети.
  4. 16Классификатор изображенийОбучи классификатор изображений на CNN.
    • Обучи на маленьком наборе изображений.
    • Сообщи точность на тесте.
    • Покажи изображения, которые он классифицировал неверно.

Обработка естественного языка

  1. 17ТокенизацияСделай токенизацию: преврати текст в токены и ID.
    • Сравни токены слов и подслов.
    • Собери словарь.
    • Дополни последовательности до одной длины.
  2. 18ЭмбеддингиОбъясни, как эмбеддинги ставят похожие слова рядом.
    • Используй слой эмбеддингов.
    • Найди ближайшие слова к слову.
    • Построй график эмбеддингов в двух измерениях.
  3. 19Модели текстаСобери модель текста, которая читает последовательность токенов.
    • Усредни эмбеддинги в один вектор.
    • Используй простой рекуррентный слой.
    • Сравни оба способа.
  4. 20Классификатор тональностиОбучи классификатор тональности отличать положительные отзывы от отрицательных.
    • Обучи на наборе отзывов.
    • Сообщи долю верных, точность и полноту.
    • Найди отзывы, которые его обманывают, например сарказм.

Трансформеры

  1. 21ВниманиеОбъясни, как внимание взвешивает другие токены.
    • Объясни запросы, ключи и значения.
    • Посчитай веса внимания для короткого предложения.
    • Скажи, почему внимание помогает смыслу на большом расстоянии.
  2. 22Блоки трансформераНазови части блока трансформера.
    • Назови многоголовое внимание, слой feed-forward и слои нормализации.
    • Объясни остаточные связи.
    • Объясни позиционные кодировки.
  3. 23Предобученные моделиИспользуй предобученную модель-трансформер для задачи.
    • Загрузи предобученную модель и токенизатор.
    • Классифицируй им текст.
    • Сравни его со своей моделью тональности.
  4. 24Карты вниманияЧитай карту внимания.
    • Построй веса внимания как тепловую карту.
    • Найди, на какие слова смотрит токен.
    • Скажи, почему внимание — не полное объяснение.

Звук и мультимодальный ИИ

  1. 25Звук как данныеПревращай звук как данные в волну и спектрограмму.
    • Загрузи звук и построй график волны.
    • Объясни частоту дискретизации.
    • Сделай спектрограмму.
  2. 26Классификатор звукаКлассифицируй короткие звуковые клипы классификатором звука.
    • Смотри на спектрограммы как на изображения.
    • Обучи на них CNN.
    • Проверь с фоновым шумом.
  3. 27Мультимодальные входыОбъясни, как модель соединяет мультимодальные входы: изображения и текст.
    • Объясни отдельные энкодеры для каждого входа.
    • Объясни общее пространство эмбеддингов.
    • Назови три мультимодальных приложения.
  4. 28Изображение и текстСопоставь изображение и текст: свяжи изображения с подписями предобученной моделью.
    • Сделай эмбеддинги изображений и подписей.
    • Ранжируй подписи для каждого изображения.
    • Ищи изображения текстовым запросом.

Улучшение модели

  1. 29РегуляризацияУменьшай переобучение регуляризацией: dropout и затухание весов.
    • Добавь dropout.
    • Добавь затухание весов.
    • Сравни кривые валидации.
  2. 30Аугментация данныхСделай аугментацию данных: добавь отражённые и обрезанные изображения в обучающий набор.
    • Применяй отражения, обрезки и смену цвета.
    • Аугментируй только обучающий набор.
    • Измерь изменение точности на тесте.
  3. 31Перенос обученияПереносом обучения дообучи предобученную модель на новых классах.
    • Заморозь предобученные слои.
    • Замени голову и обучи её.
    • Разморозь и дообучи с маленькой скоростью обучения.
  4. 32Разбор ошибокСделай разбор ошибок: сгруппируй ошибки и найди их причину.
    • Прочитай матрицу ошибок для многих классов.
    • Разложи ошибки по группам.
    • Выбери исправление для самой большой группы.

Проект по глубокому обучению

  1. 33Данные о дикой природеВыбери и раздели открытый набор изображений дикой природы.
    • Выбери открытый набор фотоловушек или дикой природы.
    • Выбери от 5 до 10 видов.
    • Дели по месту, чтобы тест был честным.
  2. 34Дообучи модельДообучи модель-классификатор изображений на классах дикой природы.
    • Дообучи предобученную модель.
    • Следи за точностью на валидации.
    • Сохрани лучший чекпоинт.
  3. 35Демо-интерфейсСобери демо-интерфейс, который показывает предсказания по загруженным изображениям.
    • Прими загруженное изображение.
    • Покажи три лучших вида и их оценки.
    • Покажи «не уверен», когда уверенность низкая.
  4. 36Умный монитор дикой природыПредставь умный монитор дикой природы: точность на невиденных изображениях и главные ошибки.
    • Сообщи точность на невиденных изображениях.
    • Покажи главные ошибки и их причины.
    • Скажи, что изменишь дальше.