Презентация на семинаре Nvidia в ИТМО 16 мая 2017 г.
1. Глубокое обучение,
или как стать Data
Scientist'ом
Семинар компании NVIDIA
Университет ИТМО, 16 мая 2017 г.
Андрей Созыкин, www.asozykin.ru, sozykin@gmail.com
2. План
Кто такие Data Scientist'ы и как стать одним из них
Глубокое обучение – теория и применение
Демонстрация глубокого обучения нейронных
сетей:
• Распознавание объектов на изображениях
(Keras+Theano, MNIST и CIFAR-10)
• Сравнение фотографии паспорта и c Web-камеры
Глубокое обучение, или как стать Data Scientist'ом 2
3. Что такое Data Science?
Глубокое обучение, или как стать Data Scientist'ом 3
4. Data Science Process
Глубокое обучение, или как стать Data Scientist'ом 4
By Farcaster at English Wikipedia, CC BY-SA 3.0,
https://commons.wikimedia.org/w/index.php?curid=40129394
5. Где здесь глубокое обучение?
Глубокое обучение, или как стать Data Scientist'ом 5
Machine Learning
Neural Networks
Deep
Learning
7. Применение глубоких нейронных сетей
Глубокое обучение, или как стать Data Scientist'ом 7
Ода Сбербанку
С улыбкой нежной и всеми наравне,
Когда во мне счастья ликованье,
Скажу, преодолев страх признанья:
Сбербанк — светило на века в стране!
…
8. Применение глубоких нейронных сетей
Глубокое обучение, или как стать Data Scientist'ом 8
Skype Translator
Переводчик Google
9. Применение глубоких нейронных сетей
Глубокое обучение, или как стать Data Scientist'ом 9
Сингапур
Питсбург, США
Лондон
13. Анализ медицинских изображений
Глубокое обучение, или как стать Data Scientist'ом 13
По данные Word Economic Forum для подготовки врачей
необходимой квалификации в нужном количестве в
мире требуется 300 лет.
Health Systems Leapfrogging in Emerging Economies.
14. Что должен знать Data Scientist?
Глубокое обучение, или как стать Data Scientist'ом 14
1. Машинное обучение
2. Статистика
3. Математика
4. Компьютерные науки
5. Визуализация данных
6. Коммуникации
7. Предметная область
Cathy O’Neil and Rachel Schutt. Doing Data Science
Columbia University, Data Science Institute
15. Что необходимо Data Scientist’у?
Глубокое обучение, или как стать Data Scientist'ом 15
1. Теоретические знания
2. Практический опыт
3. Независимое подтверждение своей квалификации
16. Теоретические знания
Глубокое обучение, или как стать Data Scientist'ом 16
На русском языке:
• Курс “Введение в машинное обучение”. Coursera, Высшая
школа экономики, Константин Воронцов
https://www.coursera.org/learn/vvedenie-mashinnoe-obuchenie
• Специализация “Машинное обучение и анализ данных” на
Coursera, 6 курсов, МФТИ и Яндекс
https://www.coursera.org/specializations/machine-learning-data-
analysis
На английском языке:
• Курс “Machine Learning”, Andrew Ng
https://www.coursera.org/learn/machine-learning
• Курс “Neural Networks for Machine Learning”, Geoffrey Hinton
https://www.coursera.org/learn/neural-networks
17. Практический опыт
Глубокое обучение, или как стать Data Scientist'ом 17
Сайт kaggle.com:
• Соревнования по анализу данных
• Открытые наборы данных
• Примеры решений
Практически-ориентированные
курсы от udacity.com:
• Цель обучения – реализация проекта
• Теоретические курсы нацелены
помочь реализовать проект
Российские чемпионаты по анализу данных:
• boosters.pro
• mlbootcamp.ru
• dataring.ru
18. Независимое подтверждение квалификации
Глубокое обучение, или как стать Data Scientist'ом 18
Сайт kaggle.com
Открытые репозитории с программами на GitHub
Публикации на конференциях по анализу данных
Статьи на Хабре и других подобных ресурсах
Novice Contributor Expert Master Grandmaster
19. Школа анализа данных Яндекса
Школа анализа данных Яндекс:
• 2 года очного обучения
Филиалы:
• Санкт-Петербург
• Екатеринбург
• Новосибирск
• Минск
Совместная магистратура Уральского федерального
университета и ШАД:
• Начало обучения 1 сентября 2017 г.
• Два диплома: УрФУ и ШАД
Глубокое обучение, или как стать Data Scientist'ом 19
21. Глубокие нейронные сети и глубокое обучение
Глубокие нейронные сети:
• Один из методов машинного обучения
• Сеть из простых вычислительных элементов –
искусственных нейронов
Традиционное машинное обучение:
• Выбор важных признаков из множества доступных
данных (feature engineering)
Глубокие нейронные сети:
• Автоматическое определение важных признаков в
процессе обучения
• Высокие вычислительные требования
Глубокое обучение, или как стать Data Scientist'ом 21
22. Почему сейчас???
Основные идеи нейронных сетей придумали в
прошлом веке
Рост производительности компьютеров:
• Многоядерные процессоры
• Графические ускорители GPU
Резкое увеличение количества накопленных
данных
Большое количество готовых к использованию
программных систем глубокого обучения
Глубокое обучение, или как стать Data Scientist'ом 22
27. Искусственный нейрон
Глубокое обучение, или как стать Data Scientist'ом 27
𝑎 = 𝜑(
𝑖=1
𝑁
𝑤𝑖 𝑥𝑖)
Маккалок Дж., Питтс У. Логические исчисления идей, относящихся к нервной деятельности //
Автоматы. М.: ИЛ, 1956
28. Функции активации
Глубокое обучение, или как стать Data Scientist'ом 28
• Функция Хевисайда
– 𝜃 𝑥 = ቊ
0, 𝑥 < 0
1, 𝑥 > 0
• Сигмоидальные функции
– 𝜎 𝑥 =
1
1+𝑒−𝑥 (логистическая)
– 𝑡ℎ 𝑥 =
𝑒2𝑥−1
𝑒2𝑥+1
(гиперболический тангенс)
33. Обучение нейронной сети
Глубокое обучение, или как стать Data Scientist'ом 33
Обучение нейронной сети – подбор весов
таким образом, чтобы сеть решала поставленную
задачу
34. Задачи
Глубокое обучение, или как стать Data Scientist'ом 34
Классификация
Регрессия
https://www.kaggle.com/c/dogs-vs-cats
35. Типы обучения
Глубокое обучение, или как стать Data Scientist'ом 35
С учителем
• Данные с правильными ответами
Без учителя
• Данные без информации о правильных ответах
Обучение с подкреплением
• Агент получает сигналы от внешней среды
36. Первые варианты обучения, правила Хэбба
Глубокое обучение, или как стать Data Scientist'ом 36
Биологические предпосылки:
• Если нейроны срабатывают вместе, то их связи
укрепляются
Правила обучения Хэбба, 1949 г.:
• Нейрон выдает сигналы {0, 1}
• Начальные веса назначаются случайным образом
• Если сигнал нейрона неверен и равен нулю, то
необходимо увеличить веса тех входов, на которые
была подана единица
• Если сигнал нейрона неверен и равен единице, то
необходимо уменьшить веса тех входов, на которые
была подана единица
37. Метод обратного распространения ошибки
Глубокое обучение, или как стать Data Scientist'ом 37
Выходной сигнал сети:
• Вещественное число
Мера ошибки:
• Среднеквадратичная
Обучение:
• Минимизация ошибки методом градиентного спуска
38. Линейный нейрон
Глубокое обучение, или как стать Data Scientist'ом 38
Выходное значение:
Среднеквадратичная ошибка:
𝑎 =
𝑖=1
𝑁
𝑤𝑖 𝑥𝑖
𝜀 =
1
2
𝑗=1
𝑀
(𝑎𝑗 − 𝑦𝑗)2
40. Линейный нейрон
Глубокое обучение, или как стать Data Scientist'ом 40
𝑤𝑖 = 𝑤𝑖 − 𝜂
𝑗=1
𝑀
𝑥𝑗
𝑖
(𝑎𝑗 − 𝑦𝑗)
𝜂 – параметр скорости обучения
Изменение весов
(дельта-правило):
41. Варианты реализации
Глубокое обучение, или как стать Data Scientist'ом 41
Полное обучение:
• Изменяем веса после обработки всех элементов
обучающей выборки
Онлайн обучение:
• Изменяем веса после обработки каждого объекта
Мини-выборки:
• Изменяем веса после обработки 10-100 объектов
45. Набор данных MNIST
Глубокое обучение, или как стать Data Scientist'ом 45
Back-Propagation Applied to Handwritten Zip Code Recognition / Y. LeCun,
B. Boser, J. S. Denker et al. 1989
Mixed National Institute of Standards and Technology
database
46. Нейронная сеть для MNIST
Глубокое обучение, или как стать Data Scientist'ом 46
Входные значения сети
• Интенсивность пиксела в изображении
• Количество значений: 784 (28*28 пикселов)
Входной слой
• 800 нейронов
• Patrice Y. Simard; Dave Steinkraus; John C. Platt (2003).
«Best Practices for Convolutional Neural Networks Applied
to Visual Document Analysis»
• https://en.wikipedia.org/wiki/MNIST_database
Выходной слой
• 10 нейронов
• Вероятность того, что на изображении данная цифра
47. One Hot Encoding
Глубокое обучение, или как стать Data Scientist'ом 47
# 0 -> [1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
# 2 -> [0, 0, 1, 0, 0, 0, 0, 0, 0, 0]
# 9 -> [0, 0, 0, 0, 0, 0, 0, 0, 0, 1]
48. Демонстрация MNIST
Глубокое обучение, или как стать Data Scientist'ом 48
Демонстрация распознавания рукописных цифр из
набора данных MNIST в Keras и Theano
49. Функции активации
Глубокое обучение, или как стать Data Scientist'ом 49
Rectified Linear Unit (ReLU)
SoftMax – нормализованная экспоненциальная
функция
• Используется для представления
вероятности
• Сумма всех выходных значений
нейронов равна 1
𝑓 𝑥 = max(0, 𝑥)
𝑓 𝑥 = ln(1 + 𝑒 𝑥)
51. Наборы данных для обучения
Глубокое обучение, или как стать Data Scientist'ом 51
Обучающая выборка (training set) – набор
данных, который используется для обучения сети
Проверочная выборка (validation set) – набор
данных, который используется в процессе
обучения для оценки качества обучения
Тестовая выборка (test set) – набор данных,
который используется для оценки качества работы
сети после завершения обучения
52. Сверточные нейронные сети
Глубокое обучение, или как стать Data Scientist'ом 52
Принципы сверточных нейронных сетей (convolutional
neural networks):
• Локальное восприятие
• Разделяемые веса
• Уменьшение размерности
54. Свертка изображений
Глубокое обучение, или как стать Data Scientist'ом 54
Размытие
1/9 1/9 1/9
1/9 1/9 1/9
1/9 1/9 1/9
Выделение границ
0 -1 0
-1 4 -1
0 -1 0
Повышение четкости
0 -1 0
-1 5 -1
0 -1 0
55. Свертка изображений
Глубокое обучение, или как стать Data Scientist'ом 55
Размытие
1/9 1/9 1/9
1/9 1/9 1/9
1/9 1/9 1/9
Выделение границ
0 -1 0
-1 4 -1
0 -1 0
Повышение четкости
0 -1 0
-1 5 -1
0 -1 0
В нейронных сетях ядра
свертки определяются
автоматически в процессе
обучения
57. Уменьшение размерности
Глубокое обучение, или как стать Data Scientist'ом 57
Распознавание объектов вне зависимости от
масштаба
Факт наличия признака важнее знания места его
точного положения на изображении
Слои подвыборки (subsampling):
• Усреднение
• Выбор максимального значения
59. Сверточная сеть LeNet-5
Глубокое обучение, или как стать Data Scientist'ом 59
Back-Propagation Applied to Handwritten Zip Code Recognition / Y. LeCun,
B. Boser, J. S. Denker et al. 1989
60. Распознавание лиц сверточными сетями
Глубокое обучение, или как стать Data Scientist'ом 60
Honglak Lee, Roger Grosse, Rajesh Ranganath, and Andrew Y. Ng.
Unsupervised Learning of Hierarchical Representations with
Convolutional Deep Belief Networks (2011)
61. Набор данных CIFAR-10
Глубокое обучение, или как стать Data Scientist'ом 61
Самолет
Автомобиль
Птица
Кот
Олень
Собака
Лягушка
Лошадь
Корабль
Грузовик
62. Набор данных CIFAR-10
Глубокое обучение, или как стать Data Scientist'ом 62
Открытый набор данных:
• https://www.cs.toronto.edu/~kriz/cifar.html
• Alex Krizhevsky, Learning Multiple Layers of Features from
Tiny Images, 2009.
Изображения в CIFAR-10:
• Размер 32х32
• Цветные изображения (коды интенсивности RGB)
• Набор данных для обучения – 50 000 (5 000 для каждого
класса)
• Набор данных для тестирования – 10 000
• На каждом изображении только один объект
• Нет пересечений
63. Сверточная сеть для распознавания CIFAR-10
Глубокое обучение, или как стать Data Scientist'ом 63
66. Transfer Learning
Глубокое обучение, или как стать Data Scientist'ом 66
Подход Transfer Learning:
• Использование предварительно обученной сети для
других задач
Соревнования ImageNet:
• Набор данных 14 млн. изображений
• 1000 классов объектов
67. Обученные нейронные сети на ImageNet
Глубокое обучение, или как стать Data Scientist'ом 67
AlexNet (2012):
• Разработчик Алекс Крижевский, 9 слоев
VGG16 (2014):
• Oxford Visual Geometry Group, 16 слоев
Inception (GoogLeNet, 2014):
• Google, 22 слоя
ResNet (2015):
• Microsoft, 152 слоя
68. Keras Applications
Глубокое обучение, или как стать Data Scientist'ом 68
Предварительно обученные модели:
• https://keras.io/applications/
Модели в Keras:
• Xception
• VGG16
• VGG19
• ResNet50
• InceptionV3
69. Архитектура VGG16
Глубокое обучение, или как стать Data Scientist'ом 69
Выделение признаков Классификация
Разные фото одного человека будут иметь похожие признаки
70. Сравнение фотографий
Глубокое обучение, или как стать Data Scientist'ом 70
Загружаем предварительно обученную сеть VGG16
«Отрезаем» последние три уровня
Для каждой фотографии получаем вектор признаков
Оцениваем расстояние между векторами признаков
72. Дополнительная информация
NVIDIA Deep Learning Institute:
• http://www.nvidia.ru/dli
Примеры кода из демонстраций:
• https://github.com/sozykin/dlpython_course
• Курс с видео и упражнениями -
https://www.asozykin.ru/courses/nnpython
Суперкомпьютерная академия МГУ:
• http://academy.hpc-russia.ru/
• Трек Уральского Федерального Университета
(Екатеринбург) по нейронным сетям –
http://youthscience.urfu.ru/scacademy/
Глубокое обучение, или как стать Data Scientist'ом 72