ДООП «Машинное обучение и нейронные сети»

Курс предназначен для старшеклассников, увлекающихся математикой, программированием, в т.ч. владеющих навыками программирования на С++, Java, Python или ином языке программирования высокого уровня.

В курсе рассматриваются математические (алгоритмические) основы машинного обучения.

В курсе рассматриваются математические основы машинного обучения:

1) дискретная математика:

– элементы теории графов

2) линейная алгебра:

– матрицы и операции над ними

3) методы оптимизации:

– градиентный спуск

– стохастическая оптимизация

Общие принципы машинного обучения рассмотрены на примере одного из классов моделей машинного обучения – искусственных нейронных сетей. В частности, производится обзор обучения с учителем многослойных персептронов.

Упор делается практическую реализацию.

Педагоги

Педагог дополнительного образования Надцалова Ксения Баировна

Содержание программы

Часть 1.
Тема 1. Теория графов. Представление графа. Ввод-вывод. Матрица смежности.

  • Основные определения теории графов
  • Представление в виде матрицы смежности
  • Способы хранения матрицы смежности с примерами реализации на C++ и Python

Тема 2. Теория графов. Представление графа. Направленные ациклические графы.

  • Ориентированные графы
  • Связность в ориентированных графах
  • Ориентированные ациклические графы
  • Способы хранения, альтернативные матрице смежности, с примерами реализации на C++ и Python

Тема 3. Структуры данных. Стек и очередь.

  • Общее представление о контейнерах стек и очередь
  • Методы для работы с контейнерами
  • Задачи, решаемые при помощи стека и очереди
  • Реализация в C++, Python

Тема 4. Теория графов. Обход графов. Поиск в ширину и поиск в глубину.

  • Алгоритмы обхода графов
  • Поиск в ширину и поиск в глубину с использованием стека и очереди

Тема 5. Поиск в ширину и поиск в глубину. Рекурсивная реализация.

  • Рекурсия, примеры (факториал, числа Фибоначчи)
  • Поиск в ширину и поиск в глубину в рекурсивном виде

Тема 6. Теория графов. Топологическая сортировка.

  • Топологическая сортировка
  • Алгоритм
  • Реализация на C++, Python

Тема 7. Линейная алгебра. Умножение матриц.

  • Матрицы
  • Умножение матриц
  • Алгоритм Штрассена
  • Реализация на C++, Python

 

Часть 2.

Тема 1. Обучение моделей по прецедентам, виды обучения (с учителем, без учителя, с подкреплением).

  • Задача обучения по прецедентам
  • Типы задачи и разница между ними – с учителем, без учителя, с подкреплением
  • Бенчмарки, задачи CANCER, DIABETES, MNIST

Тема 2. Многослойный персептрон.

  • Представление многослойного персептрона
  • Функции активации
  • Реализация в виде класса на C++, Python

Тема 3. Обратное распространение ошибки-1.

  • Обучение как задача оптимизации
  • Прямой проход по сети
  • Обратный проход по сети

Тема 4. Обратное распространение ошибки-2.

  • Реализация прямого и обратного прохода в виде метода на C++, Python

Тема 5. Обучающее, валидационное и тестовое множества. Кросс-валидация.

  • Типы кросс-валидации
  • Оценка соответствия модели
  • Применения
  • Вопросы вычислительной производительности
  • Ограничения и неверное использование кросс-валидации

Тема 6. Стохастический и пакетный градиент.

  • Суть попримерного стохастического и пакетного обучения
  • Экспериментальное сравнение методов на задаче CANCER

Тема 7. Эволюционные методы оптимизации.

  • Генетический алгоритм
  • Дифференциальная эволюция
  • Замечания по реализации

Цели программы

Изучение алгоритмических основ машинного обучения, а также изучение нейронных сетей (на примере многослойных персептронов).

Результат программы

Знать:

- избранные алгоритмы теории графов;

- алгоритмы умножения матриц, в том числе алгоритм Штрассена;

- метод обратного распространения ошибки для обучения многослойных персептронов;

- стохастические методы оптимизации.

Уметь:

- осуществлять поиск в ширину и поиск в глубину с использованием стека и очереди;

- реализовывать умножение матриц, в том числе с помощью алгоритма Штрассена

- реализовывать процедуры прямого и обратного прохода метода обратного распространения ошибки многослойного персептрона;

- реализовывать процедуры обучения многослойного персептрона подходами стохастического и пакетного градиента.

Владеть:

- навыками обучения нейронных сетей (на примере многослойного персептрона).

Особые условия проведения

Желательно владение навыками программирования на С++, Java, Python или ином языке программирования высокого уровня.

Необходимо наличие персонального компьютера/ноутбука для выполнения домашних заданий, предполагающих компьютерную (программную) реализацию изучаемых алгоритмов.

Материально-техническая база

Помещение оборудовано компьютерами (ноутбуками) по числу участником – не ниже Intel Core i3 1600MHz 4GB RAM с установленными средами программирования и компиляторами Code::Blocks 16.0 и выше (с MinGW), Python 3.7 и выше, Notepad++ 7.0 и выше; проекционным оборудованием.