- Кто такой разработчик нейронных сетей?
- Что делают разработчики нейронных сетей и чем занимаются?
- Что должен знать и уметь разработчик нейронных сетей?
- Востребованность и зарплаты разработчиков нейронных сетей
- Как стать разработчиком нейронных сетей и где учиться?
- 15+ лучших курсов для обучения разработчика нейронных сетей: подробный обзор
- 1 место. Курс «Обучение нейронным сетям и Deep Learning для разработчиков» — SkillFactory
- 2 место. Курс «Факультет искусственного интеллекта» — GeekBrains
- 3 место.Курс «Deep Learning» — OTUS
- Курс «Data-science и нейронные сети для новичков» — Университет искусственного интеллекта
- Курс «Data Science. Уровень 3: Нейронные сети» — Московский Государственный Технический Университет им. Н.Э. Баумана
- Курс «Нейронные сети на Python» — ООО «УЦ «Коммерсант»
- Курс «Искусственные нейронные сети» — Стандарт IT
- Курс «Нейронные сети. Компьютерное зрение и чтение (NLP)» — Центр компьютерного обучения «Специалист» при МГТУ им.Н.Э.Баумана
- Курс «Нейронные сети» — Открытое образование
- Курс «Нейронные сети и их применение в научных исследованиях» — msu
- Курс «Нейронные сети» — Лаборатория инженерной физики
- Курс «Нейронные сети» — НИУ ВШЭ
- Курс «Нейронные сети для самых маленьких: путь с нуля до первого классикатора» — Академия Высоких Технологий
- Курс «Нейронные сети» — Stepik
- Курс «Нейронные сети и глубокое обучение» — Coursera
- Курс «Программирование нейросетей на Python» — Андрей Созыкин
- Курс «Основы теории нейронных сетей» — НОУ ИНТУИТ
Кто такой разработчик нейронных сетей?
Разработчик нейронных сетей – специалист, который создает искусственные нейронные сети под различные прикладные задачи. Должность может называться по-разному: программист-разработчик нейронных сетей, конструктор нейронных сетей.
Что делают разработчики нейронных сетей и чем занимаются?
Обязанности на примере одной из вакансий:
- Разработка программного обеспечения на основе алгоритмов компьютерного зрения и развитие существующего ПО
- Интеграция алгоритмов в существующую программную платформу системы видеонаблюдения
- Взаимодействие с командами тестирования, аналитики и техподдержки
Что должен знать и уметь разработчик нейронных сетей?
Требования к разработчикам нейронных сетей:
- знание популярных нейросетевых архитектур, применяющихся в области computer vision, и понимание метрик для оценки качества предсказаний сетей
- работа с PyTorch и tensorflow
- хорошее владение Python
- умение пользоваться git, dvc
- владение linux
Востребованность и зарплаты разработчиков нейронных сетей
На сайте поиска работы в данный момент открыто 102 вакансии, с каждым месяцем спрос на разработчиков нейронных сетей растет.
Количество вакансий с указанной зарплатой разработчика нейронных сетей по всей России:
- от 70 000 руб. – 32
- от 125 000 руб. – 22
- от 180 000 руб. – 16
- от 235 000 руб. – 7
- от 290 000 руб. – 5
Вакансий с указанным уровнем дохода по Москве:
- от 115 000 руб. – 9
- от 190 000 руб. – 5
- от 345 000 руб. – 2
- от 420 000 руб. – 1
Вакансий с указанным уровнем дохода по Санкт-Петербургу:
- от 200 000 руб. – 1
Как стать разработчиком нейронных сетей и где учиться?
Варианты обучения для разработчика нейронных сетей с нуля:
- Самостоятельное обучение – всевозможные видео на YouTube, книги, форумы, самоучители и т.д. Плюсы – дешево или очень недорого. Минусы – нет системности, самостоятельное обучение может оказаться неэффективным, полученные навыки могут оказаться невостребованными у работодателя;
- Онлайн-обучение. Пройти курс можно на одной из образовательных платформ. Такие курсы рассчитаны на людей без особой подготовки, поэтому подойдут большинству людей. Обычно упор в онлайн-обучении делается на практику – это позволяет быстро пополнить портфолио и устроиться на работу сразу после обучения.
Ниже сделали обзор 15+ лучших онлайн-курсов.
15+ лучших курсов для обучения разработчика нейронных сетей: подробный обзор
В рамках курса вы пройдете полный путь от аренды GPU-сервера, который подходит для Deep Learning, вплоть до создания полноценной рабочей модели для компьютерного зрения, анализа естественного языка и рекомендательных систем.
Программа курса
- Введение в искусственные нейронные сети
Создаем нейронную сеть для распознавания рукописных цифр на языке Python - Фреймворки для глубокого обучения (TensorFlow, Keras)
Создаем модель распознавания изображений на базе датасета FashionMNIST и фреймворка Keras - Сверточные нейронные сети
Распознаем изображения в датасете CIFAR-10 с помощью сверточной нейронной сети - Оптимизация нейронной сети
Улучшаем скорость и производительность сетей для кейса предыдущего модуля - Transfer learning & Fine-tuning
Дообучение нейронной сети ImageNET для решения задачи классификации изображений - Обработка естественного языка (NLP)
Создаем нейронную сеть для распознавания рукописных цифр на языке Python - Сегментация и Детектирование объектов
Проектируем нейронную сеть для сегментации и обучаем нейросеть решать задачу детекции - Обучение с подкреплением (Reinforcement Learning)
Создаем агента для игры в Pong на основе DQN алгоритма - What’s next? Продвинутые нейронные сети
Знакомимся с другими областями применения нейросетей. Создаем нейросеть GAN для генерации изображений.
Преимущества курса:
- Для обучения deep learning вам понадобится знание Python и базовое понимание машинного обучения. Курс предназначен для людей, которые решили углубить свои знания в области Data Science.
- Обучение на курсе — отработка практических навыков программирования глубоких нейронных сетей. Используйте силу machine learning для решения задач бизнеса!
- Курс даст полное понимание алгоритмов и знание необходимых библиотек при использовании Deep Learning.
После учебы вы сможете работать по специальностям:
- Data Scientist
- Data Analyst
- Machine Learning Engineer
- Computer Vision-специалист
- NLP-специалист.
Программа обучения:
Подготовительные курсы
- Видеокурс: как учиться эффективно
- Основы математики
- Основы программирования
- Основы языка Python
- Базовый курс.
I четверть. Программирование
Научитесь работать в Linux и создавать сервера в облачных сервисах AWS, проводить поиск информации и основные операции с файлами, выполнять мониторинг работы сервера. Научитесь использовать язык запросов SQL, создавать и оптимизировать сложные запросы. Освоите библиотеки языка Python, предназначенные для Data Science: Numpy, Pandas, Matplotlib, SciKit-Learn.
- Встреча декана со студентами
- Основы языка Python
- Рабочая станция
- Основы реляционных баз данных и MySQL
- Библиотеки Python для Data Science: Numpy, Matplotlib, Scikit-learn.
II четверть. Сбор данных и статистическое исследование
Познакомитесь с теорией вероятностей и математической статистикой. Изучите методы проведения корреляционного, дисперсионного и регрессионного анализа. Научитесь работать с RESTful/SOAP-сервисами, форматами XML и JSON в Python, а также познакомитесь с особенностями открытых данных (OpenData).
- Библиотеки Python для Data Science: продолжение
- Методы сбора и обработки данных из сети Интернет
- Введение в математический анализ
- Теория вероятностей и математической статистике.
III четверть. Математика для Data Scientist
Рассмотрите математические аспекты алгоритмов, применяемых в Data Science: линейная и логистическая регрессия, градиентный спуск, метод ближайших соседей, кластеризация, деревья решений, случайный лес, градиентный бустинг. Поймете, как устроены алгоритмы на уровне математики.
- Линейная алгебра
- Алгоритмы анализа данных
IV четверть. Машинное обучение
Освоите Python: от основ программирования до автоматизации, сбора, обработки, анализа и визуализации данных.
- Машинное обучение в бизнесе
- Рекомендательные системы
- Видеокурс от Мегафон + курсовой проект.
V четверть. Нейронные сети
Научитесь решать задачи Machne Learning с данными из соцсетей, геоданными, применением графов, а также познакомитесь с нейронными сетями. На практике познакомитесь с фреймворками для разработки нейронных сетей: Tensorflow, Keras, PyTorch.
- Введение в нейронные сети
- Фреймворк PyTorch для разработки искусственных нейронных сетей.
VI четверть. Задачи искусственного интеллекта
Изучите продвинутые архитектуры сверточных нейронных сетей, обработку естественного языка и компьютерное зрение.
- Введение в обработку естественного языка
- Глубокое обучение в компьютерном зрении
II четверть. Специализация
Изучите фреймворк PyTorch и углубитесь в работу с компьютерным зрением и обработкой естественного языка.
- Введение в компьютерное зрение от Nvidia
- Фреймворк PyTorch для разработки искусственных нейронных сетей
- Введение в обработку естественного языка
Курсы вне четверти. Предметы с индивидуальным выбором даты старта
- Подготовка к поиску работы
- История развития искусственного интеллекта
- Алгоритмы и структуры данных на Python
- Введение в высшую математику
- Спортивный анализ данных. Платформа Kaggle
- Язык R для анализа данных
- Визуализация данных в Tableau
- Сверточные нейронные сети в компьютерном зрении.
Вы получите диплом о профессиональной переподготовке.
Что даст вам этот курс:
- Повторим с вами необходимые области математики: теорию информации, теорию вероятности, линейную алгебру и основы анализа.
- Изучим основные библиотеки и фреймворки для машинного обучения работы с нейронными сетями: от NumPy до TensorFlow.
- Решим классические задачи глубокого обучения по всем основным направлениям: «Компьютерное зрение», «Обработка естественных языков», «Обучение с подкреплением», «Генеративные сети».
После прохождения курса вы:
- Сможете пройти собеседование на должность Junior Deep Learning Engineer;
- Научитесь решать задачи машинного обучения с помощью нейронных сетей, такие как: генерация рукописных цифр, самообучающийся бот для игры в крестики-нолики, классификация изображений и т. д.;
- Будете знать теорию, необходимую для прохождения продвинутых курсов.
Программа обучения
Модуль 1. Пререквизиты
- Тема 1. Обзорное занятие
- Тема 2. Градиентный спуск. Математика
- Тема 3. Градиентный спуск. Вывод
- Тема 4. Numpy
- Тема 5. PyTorch
- Тема 6. TensorFlow
- Тема 7. Распределения и информация
Модуль 2. Нейронные сети
- Тема 8. Взрыв и затухание градиентов
- Тема 9. Логрегрессия на pytorch
- Тема 10. Линейная регрессия на TensorFlow
- Тема 11. Переобучение и регуляризация
- Тема 12. Автокодирование
- Тема 13. Вариационный автокодировщик
- Тема 14. AutoML
Модуль 3. Глубокое обучение
- Тема 15. Сверточные сети. Классифицируем MNIST
- Тема 16. Сверточные сети, fine-tunning
- Тема 17. Методы оптимизации сетей: prunning, mixint, quatization
- Тема 18. Обучение с подкреплением. Q-learning для TicTacToe
- Тема Generative Adversarial Networks (GANs)
- Тема Рекуррентные сети
- Тема 21. Transformers
- Тема 22. Графовые модели
Модуль 4. Проектный модуль
- Тема 23. Выбор темы и организация проектной работы
- Тема 24. Консультация по проектам и домашним заданиям
- Тема 25. Защита проектных работ.
Выпускной проект
В рамках курса предусмотрена защита проекта. Он представляет собой генеративную модель для порождения текста заданного стиля или изображений заданной тематики.
Работа над проектом проходит поэтапно:
- Выбор тематики.
- Сбор и подготовка соответствующих данных.
- Построение и обучение генеративной модели.
Проект выполняется программистом в течение двух недель после прохождения курса. Готовое решение должно включать в себя код модели и ее обучения на Python, описание архитектуры модели, отчет об обучении модели и примеры генерации.
Программа обучения:
Основы Python
- Синтаксис Python
- Numpy
- Часть 1
- Часть 2
- Matplotlib и Seaborn
- Функции и модули
Базовая математика
- Матрицы и функции
- Множества, бинарная логика, комбинаторика
- Теория вероятностей и статистика. Часть 1
- Теория вероятностей и статистика. Часть 2
Нейронные сети
- Введение в нейронные сети
- Полносвязные сети, обучающая и тестовая выборки
- Свёрточные нейронные сети
- Обработка текстов с помощью нейросетей
- Рекуррентные нейронные сети и одномерные свёрточные сети для обработки текстов
- Нейронные сети для решения задачи регрессии
- Полносвязные и рекуррентные нейронные сети для прогнозирования временных рядов
- Прямые и свёрточные нейронные сети для обработки аудио сигналов
- Автокодировщики
- Вариационные автокодировщики, генеративные модели на базе автокодировщиков
- Генеративные состязательные сети
- Введение в генетические алгоритмы
- Генетические алгоритмы для обучения нейронных сетей
- Сегментация изображений
- Алгоритмы кластеризации данных
- Обучение с подкреплением
- Генерация текста
- Cегментация текста
- Object Detection (обнаружение объектов)
- Распознавание речи
Интеграция в Production
- Описание основных источников данных
- Варианты хранения данных (структурированные, неструктурированные, бинарные)
- Типы хранения данных
- Методы получения данных из систем источников
- Web-scrapping
- Вторая и третья нормальные формы
- Key-value структура данных
- Схема данных
- Витрины данных
- Инструменты построения моделей данных.
Вы научитесь:
- Работать с библиотекой Keras
- Работать с полносвязной нейронной сетью
- Решать задачи сверточных нейронных сетей
- Решать задачи классификации, регрессии и построения временных рядов
- Внедрять нейронные сети в продакшн.
Программа курса:
- Введение в библиотеку Keras
- Глубинное обучение.
- Микросервисы глубинного изучения.
- Назначение Keras.
- Основной функционал.
- Установка и настройка.
- Методы написания нейронных сетей.
- Основные разделы библиотеки.
- Два основных типа моделей: последовательная модель Sequential и класс Model.
- Слои в Keras.
- Архитектуры нейронных сетей: Dense слои (полносвязные)
- Понятие нейронная сеть. История развития.
- Решаемые задачи.
- Полносвязные нейронные сети Dense слои (перцептрон).
- Разбор кода, решение задачи с помощью полносвязной нейронной сети.
- Архитектуры нейронных сетей: conv слои (сверточные)
- Свёрточные нейронные сети.
- Задачи распознавания изображений.
- Архитектура свёрточной нейронной сети.
- Разбор кода – решение задач распознавания изображений с помощью свёрточных нейронных сетей.
- Архитектуры нейронных сетей: метрики и функции потерь. Проблема переобучения
- Метрики и функции потерь.
- Проблема переобучения.
- Метрики, используемые в нейронных сетях и функции потерь.
- Оптимизаторы.
- Понятие переобучения и способы решения проблем с переобучением.
- Решение задач с помощью нейронных сетей: классификация
- Классификация.
- Решение задач классификации с использованием нейронных сетей.
- Решение задач с помощью нейронных сетей: регрессия
- Решение задач регрессии с использованием нейронных сетей.
- Решение задач с помощью нейронных сетей: прогнозирование временных рядов
- Прогнозирование временных рядов.
- Проблемы временных рядов, трудности и пути решения.
- Особенности разделения обучающей и тестовой выборки.
- Разбор кода и решение задачи прогнозирования временных рядов с помощью нейронных сетей.
- Решение задач с помощью нейронных сетей: обработка аудио при помощи нейронных сетей
- Особенности работы с аудио.
- Параметризация аудио.
- Архитектуры нейронных сетей.
- Разбор кода и решение задачи классификации аудиофайлов.
- Решение задач с помощью нейронных сетей: классификация изображений
- Задача сегментации изображений.
- Сложности, области применения.
- Метрики качества.
- Разбор кода – сегментация изображений для автопилота.
- Решение задач с помощью нейронных сетей: внедрение в Production
- Особенности внедрения нейронных сетей в продакшн.
- Построение модели нейронной сети и внедрение в Production
- Обучение нейронной сети – классификация изображений.
- Создание веб – приложения.
- Загрузка на heroku.
Курс представляет собой прикладные основы наиболее популярного метода Machine Learning, включая всю необходимую теорию и практику по этой области искусственного интеллекта. В программе рассмотрена математическая база современных нейросетевых алгоритмов.
В курсе приведены базовые задачи, которые могут быть решены с помощью методов нейросетей: классификация изображений и другие прикладные кейсы распознавания образов. Большое внимание уделено практическому решению задач с использованием нейросетевых методов на языке Python. Курсы по нейронным сетям также содержат материалы по применению сверточных нейросетей в production, в т.ч. обучение нейронной сети и ее интеграция с другими программными алгоритмами.
На практике вы самостоятельно создадите собственную нейросеть, решив задачи классификации с помощью этой модели машинного обучения.
В результате освоения программы курса вы овладеете основными навыками создания веб-сервисов на базе нейросетей и сможете выбрать наилучшую архитектуру нейросети для конкретной бизнес-задачи.
Программа курса:
- Простейшие нейронные сети
- Теоретическая часть: основные понятия; классификация задач, решаемых с помощью методов машинного обучения; виды данных, понятие датасета; полносвязные нейронные сети.
- Практическая часть: первичный анализ датасета, предобработка данных, построение полносвязной нейронной сети.
- Математические основы нейронных сетей
- Теоретическая часть: метрики качества работы нейронной сети, градиентный спуск, алгоритм обратного распространения ошибки, эффект переобучения.
- Практическая часть: тонкая настройка нейронной сети на примере задачи классификации изображений.
- Свёрточные нейронные сети
- Теоретическая часть: параметры сверточных нейронных сетей, предобученные нейронные сети.
- Практическая часть: использование предобученных нейронных сетей на примере задачи классификации изображений.
- Решение кейса: “Классификация изображений”
- Теоретическая часть: построение набора данных, фильтрация и предобработка данных.
- Практическая часть: решение кейса.
- Использование нейронных сетей в production
- Теоретическая часть: сериализация/десериализация объектов в Python, фреймворк Flask.
- Практическая часть: создание веб-сервиса на фреймворке Flask.
УЧЕБНЫЕ ПРОГРАММЫ:
- Введение в искусственные нейронные сети
- Современное применение нейронных сетей. Основные задачи.
- Виды нейронных сетей: прямого распространения, сверточные, рекуррентные, генеративные и другие архитектуры
- Обучение нейронных сетей
- Фреймворки для глубокого обучения (Keras.TensorFLOW)
- Введение в фреймворк TensorFlow
- Графы вычислений
- Операции с тензорами
- Цепное правило
- Оптимизация в TensorFlow
- Логирование для TensorBoard
- Работа TensorFlow в Google. Colab
- Практика
- Сверточные нейронные сети
- Введение в сверточные нейронные сети
- Операция свертки
- Простой сверточный слой
- Усложнение сверточного слоя
- Пулинг слой
- Архитектура первой сверточной сети
- Современные архитектуры
- Inception V3
- Практика
- Оптимизация нейронной сети
- Пути оптимизации нейронной сети
- Функции активации
- Инициализация весов
- Влияние learning rate на сходимость
- Batch нормализация
- Dropout регуляризация
- Стохастический градиентный спуск
- Adam: Adaptive Moment Estimation
- Матричные операции
- Практика
- Transfer learning & Fine-tuning
- Transfer learning
- Архитектура сети ImageNET
- Оптимизация сети при помощи back propagation
- Автокодировщики:понятия encoder и decoder
- Архитектура автокодировщика
- Практика
- Обработка естественного языка (NLP)
- Задачи Natural Language Processing (NLP)
- Векторизация текстовых данных
- Сравнение сетей прямого распространения и рекуррентных нейросетей
- Архитектура рекуррентной нейросети. LSTM (Long Short-Term Memory), GRU (Gated Recurrent Unit)
- Обработки последовательностей: Many-to-One, One-to-Many, Many-to-Many
- Many-to-One в классификации текстов, анализе временных рядов и отображении текста в картинку
- One-to-Many в генерации текстов. Языковая модель
- SEQ 2 SEQ: Encoder-Decoder
- Механизм внимания (Attention). Вычисление весов. Отказ от рекуррентов
- Архитектура TRANSFORMER
- Практика
- Сегментация и детектирование объектов
- Практическое применение сегментации
- Классическая сегментация и сегментация на базе нейросетей
- Методы улучшения производительности модели
- Дилатационная свертка
- Введение в детектирование объектов
- Задача локализации
- Регрессия, классификация и локализация в детектировании объектов
- Region R-CNN и FAST R-CNN
- Методы SSD/YOLO
- Сравнение методов детекции
- Практика
- Reinforcement learning (обучение с подкреплением)
- Классы задач: обучение с учителем, без учителя,обучение с подкреплением
- Применение: игровые агенты, self-driving агенты, робототехника
- Состояния, действия, награды
- Понятие оптимальной политики
- Оценка состояния и действий. Оптимальная Q-функция
- Q-Learning. Уравнение Беллмана
- Exploration vs.Exploitation: исследование и эксплуатация оптимальной стратегии
- Deep Q-Learning (DQN)
- Другие методы RL: Policy Gradients, Actor-Critic
- Практика
- What`s next?
- Другие области применения нейронных сетей
- Self-driving и AI
- GAN: Generative Adversarial Networks
- Перспективыразвитияобласти
- Советы по профессиональному развитию
- Практика.
Вы научитесь:
- взаимодействовать с тензорами в Python
- познакомитесь с основами PyTorch
- углубите свои знания по Python
- познакомитесь с обработкой изображений средствами нейронных сетей и Python
- познакомитесь с обработкой речи и текста.
Программа курса:
Модуль 1. Введение в Pytorch и тензоры (4 ак. ч.)
- Введение в курс
- Введение в нейронные сети
- Что такое PyTorch?
- Зачем использовать тензоры?
- Технические требования
- Облачные возможности
- Что такое тензоры
- Операции с тензорами
- Практикум по теме
Модуль 2. Классификация изображений (4 ак. ч.)
- Средства загрузки и обработки данных в PyTorch
- Создание тренировочного набора данных
- Создание проверочного и тестового набора данных
- Нейронная сеть как тензоры
- Активационная функция
- Создание сети
- Функция потерь
- Оптимизация
- Практикум, реализация на GPU
Модуль 3. Cверточные нейронные сети (6 ак. ч.)
- Построение простейшей сверточной нейронной сети в PyTorch
- Объединение слоев в сети (Pooling)
- Регуляризация нейронной сети (Dropout)
- Использование натренированных нейронных сетей
- Исследование структуры нейросети
- Пакетная нормализация (Batchnorm)
- Практикум по теме
Модуль 4. Использование и передача обученных моделей (5 ак. ч.)
- Использование ResNet
- Отбор по скорости обучения
- Градиент скорости обучения
- Расширение данных для переобучения
- Использование преобразователей Torchvision
- Цветовые и лямда преобразователи
- Пользовательские преобразователи
- Ансамбли
- Практикум по теме
Модуль 5. Классификация текста (5 ак. ч.)
- Рекуррентные нейронные сети
- Нейронные сети с памятью
- Библиотека Torchtext.
Курс посвящен изучению математических основ теории нейронных сетей, приводятся краткая история теории нейронных сетей, математические модели нейросетевых архитектур, постановка задачи обучения и методы ее решения, рассматриваются особенности организации процесса обучения и применения нейронных сетей для решения практических задач. Изложение ведется строгим математическим языком, сопровождается множеством формул и математических выкладок.
Цель курса состоит в получении и закреплении теоретических и практических знаний, необходимых для решения прикладных задач обработки данных с использованием нейронных сетей.
Программа курса
Module 1. Introduction.
- Artificial neural networks as biologically inspired models.
- The structure of a neuron.
- Brief history of artificial neural networks.
- AI, ML and ANNs.
- An overview of neural network architectures.
Module 2. Multilayer neural networks.
- Lesson 1. Activation functions.
- Lesson 2. Mathematical model of multilayer neural network. Lesson 3. Loss functions.
- Lesson 4. Backpropagation algorithm.
Module 3. Neural Network Training algorithms.
- Lesson 1. Gradient descent methods.
- Lesson 2. Per-parameter adaptive learning rate methods.
- Lesson 3. Stochastic gradient descent.
- Lesson 4. Second order methods.
- Lesson 5. Weight initialization.
Module 4. Generalization in Neural Networks.
- Lesson 1. Generalization capability.
- Lesson 2. Bias-variance decomposition.
- Lesson 3. Cross-validation techniques.
- Lesson 4. Regularization techniques.
- Lesson 5. Dropout and batch-normalization.
В результате успешного прохождения курса у вас сложится понимание того, что такое искусственные нейронные сети, для решения каких задач и в каких случаях их следует применять, в чем преимущества и особенности нейросетевого подхода. Вы узнаете о том, как выбрать архитектуру нейронной сети, как правильно организовать процесс обучения, как работают основные алгоритмы обучения и что характеризуют их параметры, и сможете осмысленно сконструировать, обучить и оценить качество обученной нейросетевой модели.
Цель курса — предоставить аспирантам разных факультетов МГУ имени М. В. Ломоносова, имеющих базовые знания программирования и математики, возможность использовать методы искусственных нейронных сетей для анализа больших данных в их научных исследованиях.
Курс будет полезен для начинающих ученых и технических, и гуманитарных факультетов: физиков и филологов, химиков и медиков, математиков и социологов.
Итогом учебы будет подготовленный аспирант, который написал программу и получил качественный результат, успешно примененный в его диссертации, и подготовил научную публикацию об этом.
Цель курса — преодолеть порог входа в отрасль, предоставить практический опыт и две опоры для дальнейшего самостоятельного исследования нейронных сетей: инструменты и терминология. Второй семестр выделен для выполнения курсовой работы, что позволяет подробно разобраться в одном из направлений нейронных сетей. Таким образом достигается баланс между поверхностным широким охватом материала и изучением вопроса в глубину с высокой долей самостоятельности.
Программа курса (осенний семестр):
- Занятие 1 – Введение
Постановка задач обучения по прецедентам. Объекты и признаки с примерами. Устройство нейронной сети. Слои, функция активации. Метод градиентного спуска. Метод стохастического градиента. Шаг оптимизатора, тип оптимизатора, функция потерь. Переобучение. Обучающая и тестовая выборка. Типы нейронных сетей (линейные, DNN, бинарные, сверточные, GAN, рекуррентные). - Занятие 2 — Системы контроля версий
Зачем нужно контролировать версии. Понятие коммита, ветви в version control system (VCS). Проблема коллективной разработки без VCS. Синхронизация с центральным сервером. Понятие затягивания и проталкивания изменений. Слияние ветвей. Разрешение конфликтов. Ресурсы для VCS. Проблема бинарных файлов. Примеры VCS: git, mercurial, subversion, CVS. Github, клонирование репозиториев и пул-реквесты. Readme.md и формат markdown. - Занятие 3 — Многослойный персептрон
Готовые обучающие выборки и их важность (MNIST, ImageNet, CIFAR-10, CIFAR-100, FashionMNIST, COCO, …). Tensorflow и Python. Способы ускорения вычисления нейронных сетей. Примеры применения нейронных сетей в науке.
Многослойная сеть. Алгоритм обратного распространения ошибки и его ограничения. Глубинное обучение. Выбор функции активации: сигмоида, ReLU, гиперболический тангенс, функция Хевисайда. Преимущества ReLU. Проблема исчезающего градиента и паралич сети. Проблема инициализации сети. Нормировка выборки.
Измерение качества обучения. Кроссвалидация. Бинарная кроссэнтропия как функция потерь. Понятия эпох, итераций, бэтча в обучении нейронной сети. Методы борьбы с переобучением: прореживание выходов, стохастические выборки, искусственные выборки. Выбросы в обучающей выборке. Причины появления выбросов. Фильтрация выбросов. Метод регулировки весов обучающей выборки. - Занятие 4 — Сверточные сети
Анализ изображений. Как животные видят. Трансляционная инвариантность свёрточных нейронных сетей. Определение свёртки. Строительные блоки для сверточных сетей: свёртка, активация, субдискретизация. Maxpooling, padding. Какие параметры подбираются при обучении сверточных сетей. Как работает свёртка с набором изображений на выходе предыдущего свёрточного слоя. Визуализация выходов скрытых слоёв в tensorflow. Автоэнкодеры. Две фазы обучения сверточных сетей. - Занятие 5 — Генеративно-соревновательные сети GAN
Принцип работы соревновательных генеративных сетей. Структурная схема. Генератор и дискриминатор. Латентное пространство. Виды GAN: cвёрточный DCGAN, условный CGAN, цикличный CycleGAN, парные CoGAN, ProGAN устойчивого роста, Вассерштейновские WGAN. Повышение качества распознования за счет дообучения. - Занятие 6 — Условные генеративно-соревновательные сети CGAN
Использование gan для генерации изображений. Зачем нужен условный GAN. Сложности обучения GAN, проблемы сходимости, проблемы устойчивости, проблемы коллапса распределения. Эмпирические трюки, позволяющие бороться с этими проблемами: использование leakyReLU; downsampling и upsampling с использованием strided convolution; нормализация данных (и преобразование пикселей исходных картинок к диапазону [-1,1]), использование момента в градиентном спуске. - Занятие 7 — Использование обученных сетей
Вычислительная сложность обучения против вычислительной сложности использования. Типы готовых сетей: классификаторы, поиск объектов, распознавание лиц, семантическая сегментация, семантическое описание. Готовые нейронные сети: YOLO, VGG16, R-CNN, (Mask R-CNN, Fast R-CNN, Faster R-CNN), AlexNet, Resnet50/101/152/200…, DenseNet121/169/201, MobileNet25/50/… Связь ResNet с решением системы линейных дифференциальных уравнений. Библиотека tensornets. - Занятие 8 — Рекуррентные сети
Устройство и область применения рекуррентных сетей. Сети Элмана и Джордана. Расчет количества параметров слоя. Долгая краткосрочная память (LSTM) и принцип её работы. Экспоненциальное сглаживание в блоке памяти LSTM. Функции активации LSTM. Управляемый рекуррентный блок (GRU). Машинный перевод, как частный случай задачи Seq2Seq. Архитектура Transformer и Universal transformer. - Занятие 9 – Автоэнкодеры
Структура и обучение автоэнкодера. Очищение изображения от шумов. Регуляризация: лассо-регрессия и гребневая регрессия. Вариативность в латентном пространстве. Плавная интерполяция. Сжатие данных. - Занятие 10 — Обучение с подкреплением
Обучение с подкреплением (RL). OpenAI и gym. Обучение без учителя. Агент, функция награды, состояние среды. Типовые среды: Atari, шахматы, Go, gym. Классификация алгоритмов RL. Q-learning. Reward shaping. Типовые ошибки при обучении с подкреплением и их причины. Важность отсутствия априорных знаний при обучении. Experience replay. Double DQN. Эпсилон-жадный алгоритм. Выборки случайных фрагментов записей для обучения.Занятие 12 — Перенос обучения - Занятие 11 — Перенос обучения
Зачем нужен перенос обучения. Примеры переноса обучения: изображения, работа с естественным языком. Тонкая настройка. - Занятие 12 — Отбор и генерация признаков
Зачем нужен отбор признаков. Методы отбора признаков: фильтрация, построение семейств, регуляризация. Хэширование признаков для больших таблиц. Почему можно генерировать признаки. Аугментация. Примеры неинформативных признаков. Работа с событиями во времени. Библиотека featuretools для генерации признаков.
Весенний семестр:
Выполняется курсовая работа. Она может быть совмещена с обязательной курсовой работой по физике, выполняемой в лаборатории физического факультета МГУ на втором курсе. Примерные темы работ представлены ниже. Жирным отмечены работы, совмещенные с курсовой по физике:
- Машинное обучение антропоморфных робототехнических систем на примере модели роботизированной руки с тактильной обратной связью
- Предсказание сейсмической активности на основе сейсмических журналов и нейронных сетей
- Генерация изображений шельфовых доломитов с помощью генеративно-состязательных сетей
- Методы применения нейронных сетей к анализу данных современных коллайдеров
- Автоматический подсчёт эритроцитов на микрофотографии крови
- Поиск и распознавание компонентов на печатной плате
- Создание торгового бота на основе нейронных сетей
- Предсказание отказов блоков питания РЛС дальнего обнаружения по температурным измерениям
- Бинаризация нейронных сети для переноса их в интегральную схему
- Определение параметров эквивалентной электрической цепи по вольамперной характеристике
- Предсказание пульсаров на основе датасета HTRU2
- Восстановление цвета в чернобелых фильмах и фотографиях
- Генерация сверхразрешения в изображениях на основе нейронных сетей
- Перенос стиля изображения с использованием нейронных сетей
- Атака вредоносного примера на нейронные сети и защита от него
- Поиск раковых метастаз по гистологическим микроснимкам
- Поиск новой физики (распад таурона на 3 мюона) в экспериментальных данных с большого адронного коллайдера (LHC)
- Дообучение нейронных сетей на одном объекте.
Цель освоения дисциплины:
- Освоение математического аппарата и программного обеспечения, предназначенного для создания интеллектуальных систем на базе нейронных сетей;
- Приобретение навыков нейросетевого математического моделирования бизнес-процессов и экономических явлений.
Планируемые результаты обучения:
- Знание возможностей интеллектуальных систем на базе нейронных сетей, технологии их создания.
- Умение выделять входные (управляющие) и выходные (управляемые) параметры нейросетевой интеллектуальной системы.
- Умение формализовать предметную область программного продукта.
- Умение применять полученные знания при решении практических задач.
- Обладание навыками нейросетевого моделирования.
Содержание учебной дисциплины:
Раздел 1. Теоретическая часть
- Тема 1. Персептрон и его развитие Биологический и математический нейрон. Персептрон, распознающий цифры и буквы. Правила Хебба, дельта-правило, обобщенное дельта-правило. Проблема «исключающего ИЛИ», многослойный персептрон и алгоритм обратного распространения ошибки. Алгоритмы обучения второго порядка, эвристические алгоритмы, обучение с помощью генетического алгоритма. Проблема переобучения и теорема Арнльда-Колмогорова-Хехт-Нильсена. Обобщенная блок-схема создания нейросетевой интеллектуальной системы.
- Тема 2. Неклассические нейронные сети. Радиально-базисные сети, рекуррентные сети, самообучающиеся сети, сверточные сети.
Раздел 2. Практическая часть
- Тема 3. Выполнение индивидуальных заданий. Применение нейронных сетей для решения задач распознавания образов, извлечения знаний, оптимизации, прогнозирования, управления, поддержки принятия решений.
Уроки:
- Нейронные сети для самых маленьких, разбираемся в основах
Мы разберёмся что такое искусственные нейронные сети и какие задачи они призваны решать. В чём причина их популярности? В чём их принципиальное отличие от обычных программ и алгоритмов. Разберёмся с математическими принципами их обучения и использования: прямым и обратным распространением ошибки. - Как обучается нейронная сеть?
Разберём задачу линейной регрессии, принцип обратного распространения ошибки и поговорим про градиентный спуск.
Вы узнаете, каким образом нейронная сеть подбирает весовые коэффициенты в процессе обучения, и поймёте, как влияют некоторые гиперпараметры на скорость обучения. - Google Colab и первая нейронная сеть. 1 часть
Соберём небольшую нейронную сеть с помощью Google Colab и обучим её.
Вы научитесь пользоваться интернет-сервисомGoogle Colab, который даёт доступ к GPU и позволяет обучать нейронные сети. Получите первые практические навыки в обучении нейронных сетей на Python. - Google Colab и первая нейронная сеть. 2 часть
Обучим классифкатор, посмотрим какие параметры обученя влияют на результат. И рассмотрим возможности, предоставляемые keras. - Свёрточная нейронная сеть
Мы добавим в нашу нейронную сеть свёрточные слои. Разберёмся что это такое и как они работают. Получим свёрточную нейронную сеть гораздо точнее решающую задачу. - Свёрточная нейронная сеть и датасеты из интернета
Пришло время применить свёрточную нейронную сеть для классификации нескольких классов и воспользоваться набором данных из интернета, а не собственноручно собранным. - Нейронная сеть и работа с камерой в реальном времени
Применяем наши сети к видеопотоку с камеры. Разбираем полезные инструменты для кодирования меток на изображениях и повышаем универсальность сети, чтобы в неё можно было добавлять дополнительные классы. - От классификации к детектированию
Разбор видов детекторов и принципов их работы. Собираем и обучаем собственный детектор. Посмотрим, как детектор будет работать с видеопотоком с камеры. Анализируем возможность применения детекторов в школьных проектах - Пишем SSD
Задаём архитектуру нашей сети: послойно собираем детектор, разбираясь какой слой для чего нужен. - Пишем SSD: Single Shot MultiBox Detector. (Часть 2)
Пишем алгоритмы вокруг сети. Генерация априорных ограничивающих рамок, отсев лишних, задание функции потерь и шага обучения сети.
В данном курсе мы детально разберём процесс создания и применения нейронных сетей. В первую очередь, мы ставим перед собой цель объяснить основополагающие теоретические идеи и практические приёмы, использующиеся при обучении самых разных нейросетевых моделей. Первая часть курса фокусируется на алгоритмах, лежащих в основе обучения нейронных сетей, вторая больше ориентирована на практическое применение полученных знаний.
Программа курса
- Основы линейной алгебры
- Общая информация о курсе
- Введение
- Надо ли вам смотреть эту неделю? (урок с задачами)
- Ликбез по линейной алгебре: векторы
- Ликбез по линейной алгебре: матрицы
- NumPy: основы
- Линейная алгебра в деле
- Перцептрон и градиентный спуск
- Нейроны: настоящие и искусственные
- Перцептрон
- Перцептрон: обучение
- Больше искусственных нейронов!
- Градиентный спуск
- Больше градиентного спуска!
- Однослойные модели
- Алгоритм обратного распространения ошибки
- Многослойный перцептрон
- Алгоритм обратного распространения ошибки
- Алгоритм обратного распространения ошибки: продолжение
- Целевые функции
- Мониторинг состояния сети
- Мониторинг состояния сети
- Визуализация
- Тест
- Практика
- Сюрприз и заключение
- Сюрприз!
- Заключение.
Сертификат — Институт биоинформатики.
Программа курса:
- Introduction to Deep Learning
- Neural Networks Basics
- Shallow Neural Networks
- Deep Neural Networks
Курс посвящен именно практическому применению нейронных сетей с использованием готовых библиотек Keras и TensorFlow. Вы научитесь применять эти библиотеки для решения задач анализа изображений и текстов.
Курс рассчитан на программистов, для понимания не требуются глубокие знания математики. Все примеры в курсе на Python, однако никаких специфических особенностей Python не используется. Если вы умеете программировать на любом языке, то легко поймете примеры кода.
Основы обучения глубоких нейросетей
- Введение.
- Лекция «Искусственные нейронные сети».
- Лекция «Обучение нейронных сетей».
- Лекция «Библиотеки для глубокого обучения».
- Лекция «Распознавание предметов одежды».
- Лекция «Анализ качества обучения нейронной сети».
- Практическая работа «Распознавание предметов одежды на Keras» (ноутбук в Colaboratory).
- Лекция «Бесплатная облачная платформа для обучения нейросетей Google Colab» (ноутбук в Colaboratory).
- Лекция «Сохранение обученной нейронной сети».
- Лекция «Используем обученную нейросеть для распознавания изображений» (ноутбук в Colaboratory).
- Лекция «Решение задачи регрессии» (ноутбук в Colaboratory).
- Лекция «Автоматическая оптимизация гиперпараметров нейросети с Keras Tuner» (ноутбук в Colaboratory)
Нейросети для компьютерного зрения
- Лекция «Сверточные нейронные сети».
- Лекция «Распознавание объектов на изображениях».
- Практическая работа «Распознавание объектов на изображениях с помощью Keras» (ноутбук в Colaboratory).
- Лекция «Анализируем изображения с помощью нейронных сетей».
- Лекция «Предварительно обученные нейронные сети в Keras».
- Лекция «Как подготовить собственный набор изображений для обучения нейронной сети в Keras».
- Лекция «Перенос обучения (Transfer Learning)».
- Практика «Распознавание собак и кошек на изображениях».
- Лекция «Тонкая настройка нейронной сети (Fine Tuning)».
- Лекция «Анализ признаков, извлеченных нейросетью».
- Лекция «Дополнение данных (Data Augmentation)».
- Лекция «Визуализация сверточной нейронной сети».
- Проект «Распознавание человека по лицу на фотографии».
- Проект «Поиск объектов на изображениях».
Нейросети для анализа текстов
- Введение в курс «Нейросети для анализа текстов» (презентация).
- Лекция «Представление текста в цифровом виде для обработки нейронной сетью» (презентация).
- Лекция «Анализ тональности отзывов на фильмы из базы IMDB» (ноутбук в Colaboratory).
- Лекция «Представление текста в формате one hot encoding» (ноутбук в Colaboratory).
- Лекция «Представление текста плотными векторами (embeddings)» (ноутбук в Colaboratory).
- Лекция «Рекуррентные нейронные сети» (презентация).
- Лекция «Анализ тональности текста рекуррентной нейросетью» (ноутбук в Colaboratory).
- Лекция «Сети LSTM и GRU» (презентация).
- Лекция «Сети LSTM и GRU для определение тональности отзывов IMDB» (ноутбуки в Colaboratory: сеть LSTM, сеть GRU).
- Лекция «Анализ тональности отзывов YELP сетью LSTM». Рассматривается подготовка текстового набора данных к обработке нейронной сетью (ноутбук в Colaboratory).
- Лекция «Одномерные сверточные нейросети» (презентация, нотбук в Colaboratory).
- Лекция «Анализируем тональность отзывов YELP одномерной сверточнной нейросетью» (ноутбук в Colaboratory).
- Лекция «Классификация текстов нейросетями» (ноутбук в Collaboratory).
- Лекция «Многозначная классификация текстов» (презентация, ноутбук в Collaboratory).
Работа с платформой Google Colaboratory
- Основы работы с Google Colaboratory.
- Использование команд Linux в Colab.
- Использование бесплатных тензорных процессоров TPU в Colab.
- Участвуем в соревнованиях на Kaggle с помощью Colab.
План занятий:
- Основы искусственных нейронных сетей
В лекции рассматриваются общие положения теории искусственных нейронных сетей. Описана структура однослойных и многослойных нейронных сетей, введено понятие обучения нейронной сети и дана классификация алгоритмов обучения. - Персептроны. Представимость и разделимость
В лекции дается определение персептрона, рассматривается его архитектура. Описывается класс задач, решаемых с помощью персептрона, доказывается, какие задачи невозможно решить с его помощью. - Персептроны. Обучение персептрона
В лекции рассматриваются алгоритм обучения персептрона, вопросы сходимости алгоритма обучения и подбора количественных характеристик весовых коэффициентов. Исследуются многослойные персептроны и возможности их обучения. - Процедура обратного распространения (описание алгоритма)
В лекции рассматривается архитектура многослойного обобщенного персептрона, описывается процедура обратного распространения — алгоритм обучения многослойного персептрона с учителем. - Процедура обратного распространения (анализ алгоритма)
В лекции анализируются слабые места алгоритма обратного распространения и предлагаются методы решения некоторых связанных с этим проблем. - Сети встречного распространения
В лекции изложены архитектура, функционирование и методы обучения сетей встречного распространения. В качестве примера использования данной сети рассматриваются методы сжатия данных. - Стохастические методы обучения нейронных сетей
В лекции дается обзор основных стохастических методов, используемых для обучения нейронных сетей: метод отжига металла, больцмановское обучение, обучение Коши, метод искусственной теплоемкости. - Нейронные сети Хопфилда и Хэмминга
В лекции рассматривается архитектура сети Хопфилда и ее модификация — сеть Хэмминга, затрагиваются вопросы устойчивости сети Хопфилда. В заключении лекции рассматриваются понятие ассоциативности памяти и задача распознавания образов. - Обобщения и применения модели Хопфилда
В лекции рассматриваются вероятностные обобщения модели Хопфилда и статистическая машина. Описывается аналого-цифровой преобразователь — как модель сети с обратным распределением. В качестве примера приводится представление информации в сети Хопфилда, решающей задачу коммивояжера. - Двунаправленная ассоциативная память
В лекции рассматриваются архитектура и принципы работы нейронной сети ДАП. Затронуты вопросы емкости данной сети. Дается обзор некоторых модификаций этой сети. - Адаптивная резонансная теория. Архитектура
В лекции рассматривается проблема стабильности—пластичности при распознавании образов. Изучаются нейросетевые архитектуры AРT. - Теория адаптивного резонанса. Реализация
В лекции рассматривается процесс функционирования АРТ. Приводится пример обучения сети АРТ. Обсуждаются основные характеристики АРТ. Дается обзор модификаций сети АРТ. - Когнитрон
В лекции рассматривается архитектура, процедура обучения и функционирование когнитрона. Описан пример функционирования четырехслойного когнитрона распознавания образов. - Неокогнитрон
В лекции рассматривается архитектура, процедура обучения и функционирования неокогнитрона. Отмечается его сходство и отличие от когнитрона. - Алгоритмы обучения
В данной лекции рассматриваются различные методы обучения нейронных сетей. Некоторые из этих методов частично приводились на предыдущих лекциях, но отмечены снова для создания у слушателей целостного представления об изучаемой области. - Экзамен.