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

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

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

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

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

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

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

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

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

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

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

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

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

Педагоги

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Знать:

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

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

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

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

Уметь:

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

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

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

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

Владеть:

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

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

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

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

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

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