You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

179 lines
10 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Курс "Нейронные сети и глубокое обучение" Самарского университета
Лектор Артем Владимирович Никоноров, д.т.н., artniko@gmail.com
Ассистент Виктория Витальевна Евдокимова, аспирант Самарского университета, data.science.sbj@gmail.com
Курс основывается на предыдущих более обзорных лекциях и туториалах по глубокому обучению и его приложениях, в частности, вот [небольшая обзорная лекция](https://youtu.be/Gpq1PFUee88) в Кавказском Математическом Центре. Также во многом этот курс является адаптацией известнейшего курса http://cs231n.stanford.edu/
## 6235 - Зачет и экзамен (январь 2021).
Зачет по лабораторным 25.12.20 с 11.30, подробности в чате в личном кабинете.
Консультация в 10-00 25 января 2021 в zoom, ссылка будет позднее.
Экзамен 26 января 2021.
[Вопросы.](https://github.com/da0c/DL_Course_SamU/blob/master/Exams_2021/DL_Exam.pdf)
[Примеры задач.](https://github.com/da0c/DL_Course_SamU/blob/master/Exams_2021/MidTerm.pdf)
## График проведения курса 2020-2021.
**Лекционный курс закончен, видеозаписи 2020-21 годов приведены ниже.**
Телеграмм группа курса:
https://t.me/DL_SamU_2020
Лекции раз в две недели по понедельникам.
Продолжительность лекции два астрономических часа.
[Видеозапись первой лекции](https://www.youtube.com/watch?v=BKG1wEATYOU)
## Лекционный план 2020-2021
**Лекция 1. Классификация, основанная на данных**
[Видеозапись лекции 14.09.2020](https://www.youtube.com/watch?v=BKG1wEATYOU)
Введение в курс.
Задача классификации изображений.
Подходы основанные на данных.
Линейная классификация и knn-классификатор.
[Презентация к лекции 1](https://github.com/da0c/DL_Course_SamU/blob/master/lections/Lection_1_ImClass.pdf)
**Лекция 2. Функции потерь и оптимизация.**
[Видеозапись лекции 28.09.2020](https://www.youtube.com/watch?v=3uOIqTNclPA)
Мультиклассовый SVM и его функция потерь.
Софтмакс и мультимодальная логистическая регрессия.
Оптимизация функции потерь.
Стохастический градиентный спуск (SGD).
[Презентация к лекции 2](https://github.com/da0c/DL_Course_SamU/blob/master/lections/Lection_1_SGD.pdf)
**Лекция 3. Нейронные сети и обратное распространение ошибки.**
[Видеозапись лекции 28.09.2020](https://www.youtube.com/watch?v=3uOIqTNclPA)
Классификация с точки зрения нейронной сети.
Многослойный перцептрон.
Представление сети в виде вычислительного графа.
Алгоритм обратного распространения ошибки на вычислительном графе.
[Презентация к лекции 3](https://github.com/da0c/DL_Course_SamU/blob/master/lections/Lection_1_BP.pdf)
**Лекция 4. Сверточные сети (СНС).**
История.
Основные операции СНС.
Применение СНС вне задач машинного зрения.
[Презентация к лекции 4](https://github.com/da0c/DL_Course_SamU/blob/master/lections/Lecture_4_CNN1.pdf)
**Лекция 5. Инструментарий глубокого обучения.**
[Видеозапись лекции 30.10.2020](https://www.youtube.com/watch?v=E0F11tV92sU&feature=youtu.be)
CPU vs GPU vs TPU.
Пакеты глубокого обучения, Tensorflow, Keras и другие.
Вычислительные графы СНС.
[Презентация к лекции 5](https://github.com/da0c/DL_Course_SamU/blob/master/lections/lecture_5_Tools.pdf)
**Лекция 6. Обучение СНС, часть 1.**
[Видеозапись лекции 09.11.2020](https://youtu.be/0pHAWXmDnIM)
Активационные функции, обработка данных сетью.
Пакетная нормализация и другие трюки.
Transfer learning.
[Презентация к лекции 6](https://github.com/da0c/DL_Course_SamU/blob/master/lections/lecture_6_Training1.pdf)
**Лекция 7. Обучение СНС, часть 2.**
[Видеозапись лекции 23.11.2020](https://youtu.be/1ypE6fz5zXo)
Политики обновления гиперпараметров.
Тюнинг процесса обучения.
Аугментация данных.
[Презентация к лекции 7](https://github.com/da0c/DL_Course_SamU/blob/master/lections/lecture_7_Training2.pdf)
**Лекция 8. Архитектуры СНС**
[Видеозапись лекции 07.12.2020](https://youtu.be/07AcZgtoipc)
Базовые архитектуры - AlexNet, VGG, GoogleNet, ResNet, UNET и другие.
[Презентация к лекции 8](https://github.com/da0c/DL_Course_SamU/blob/master/lections/lecture_8_Arch.pdf)
**Лекция 9. Генеративные и рекуррентные модели**
[Видеозапись лекции 23.12.2020](https://youtu.be/XWd6XYPVYdM)
1. RNN/LSTM.
Механизм attention.
Обработка естественного языка.
[Презентация к лекции 9.1](https://github.com/da0c/DL_Course_SamU/blob/master/lections/lecture_9_1.pdf)
2. GAN сети.
[Презентация к лекции 9.2](https://github.com/da0c/DL_Course_SamU/blob/master/lections/lecture_9_2.pdf)
3. Детектирование и сегментация.
[Презентация к лекции 9.3](https://github.com/da0c/DL_Course_SamU/blob/master/lections/lecture_9_3.pdf)
**Лекция 10. Нейростевые модели и искусственный интеллект**
[Видеозапись лекции 10, 18.01.2021](https://youtu.be/409okL3L6CY)
## План лабораторных работ.
План может меняться в процессе курса.
**Л.Р. 1**
kNN, многоклассовый SVM, SoftMax.
[Материалы к лабораторной](https://github.com/da0c/DL_Course_SamU/blob/master/lab_1-2/assignment1.ipynb).
**Л.Р. 2**
Двухслойная сеть.
[Материалы к лабораторной](https://github.com/da0c/DL_Course_SamU/blob/master/lab_1-2/assignment2.ipynb).
**Л.Р. 3**
Многослойный перцептрон, обратное распространение ошибки, сверточные сети.
[Материалы к лабораторной](https://github.com/da0c/DL_Course_SamU/blob/master/lab_3/assignment3.ipynb).
**Л.Р. 4**
Использование библиотеки Tensorflow для обучения СНС.
[Материалы к лабораторной](https://github.com/da0c/DL_Course_SamU/blob/master/lab_4/assignment4.ipynb).
**Л.Р. 5**
Решение прикладной задачи с применением СНС.
Задание на Л.Р. 5:
1) Определите задачу.
2) Предложите ее решение на основе СНС.
3) Реализуйте предложенное решение с использованием библиотеки глубокого обучения (например, Tensorflow).
4) Опишите результаты работы в виде статьи по шаблону конференции [ИТНТ](http://itnt-conf.org/index.php/materialy/shablony).
Интересные задачи можно найти в сборниках следующих конференций:
[CVPR: IEEE Conference on Computer Vision and Pattern Recognition](https://openaccess.thecvf.com/CVPR2019)
[ICCV: International Conference on Computer Vision](https://openaccess.thecvf.com/ICCV2019)
[ECCV: European Conference on Computer Vision](https://openaccess.thecvf.com/ECCV2018)
или на сайте [Kaggle](https://www.kaggle.com/) .
## Литература и дополнительные источники
1. Отличная книга на русском по глубокому обучению -
[С. И. Николенко, А. Кадурин, Е. В. Архангельская, Глубокое обучение. Погружение в мир нейронных сетей. 2018](https://www.ozon.ru/context/detail/id/154415719/)
2. Отличная книга по техническим аспектам реализации на Python -
[Шолле Франсуа, Глубокое обучение на Python](https://www.ozon.ru/context/detail/id/145615583/)
3. [Лекционный курс К.В. Воронцова по машинному обучению](http://www.machinelearning.ru/wiki/index.php?title=%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%28%D0%BA%D1%83%D1%80%D1%81_%D0%BB%D0%B5%D0%BA%D1%86%D0%B8%D0%B9%2C_%D0%9A.%D0%92.%D0%92%D0%BE%D1%80%D0%BE%D0%BD%D1%86%D0%BE%D0%B2%29).
4. [Видеолекция академика Ю.И. Журавлева](https://www.youtube.com/watch?v=R3CMqrrIWOk) об истоках машинного обучения в СССР и о сочетании эвристики и науки в распознавании образов.
5. Видеолекции С.И. Николенко по GAN сетям [1](https://www.youtube.com/watch?v=SlJgPIOlpiI), [2](https://www.youtube.com/watch?v=w38m5mTrG_M&t=1147s).
Хорошая проверка ваших знаний, на выходе из настоящего курса вы должны полностью понимать то, что говорится в этих лекциях по GAN.