1. Deep Learning and Convolutional Networks
Dr. Artem Nikonorov
SSAU
IPSI RAS
2. 2/39
Потребность в новых подходах и алгоритмах
Принципиально новые проблемы HPC –
1. Отсутствие общего подхода к формальному описанию, алгебры
недостаточно
2. Нужны новые алгоритмы – более долгие, но более точные
Решения:
1. Попытки создания общего подхода к описанию
Теория взаимодействующих процессов, Хоар, 1986
TLA - temporal logic of action, Lamport, 2006, Microsoft Research
2. Анализ существующих алгоритмов и их проблем
- Математика 18 века рассчитана на ручные вычисления, вычисляется мгновенно
- Нужны алгоритмы точность которых зависит от времени вычислений
Примеры проблем:
Минимизация Аппроксимация (регрессия)
f(x)->min * arg min ( , )f a x a y
3. Новые алгоритмы – генетический алгоритм
Очевидное решение – Полный перебор
Очень долго!
Монте-Карло - лучше
Желательна комбинация стохастики и регулярности
Минимизация
f(x)->min
Генетический алгоритм:
Бинаризация x –
Генетический код особи
4. RANSAC
RANdom SAmples Consensus
Другие методы:
Conditional Random Fields
MCMC – Markov Chain Monte-Carlo – Алгоритм Метрополиса-Гастингса
Bayesian Evidence
Цель - подобрать параметры
модельной функции так, чтобы
число выбросов (аутлаеров) было
минимально
5. MACHINE LEARNING – Data Driven Approach
Обучение – нахождение зависимостей в данных,
Цель - построение прогноза по имеющимся данным
Варианты:
Unsupervised, Semi-supervised
Y – вещественное – регрессия
натуральное – классификация
0,1 – двухклассовая классификация
Классификация, или распознавание
основано на признаках (features)
Обучающая выборка( ) , 1..i i if i N x y
1 1) ?(N Nf x Прогноз
Supervised Learning / Обучение с учителем
7. Метод опорных векторов
Support Vector Machine, Вапник
Линейная разделимость
Отсутствие разделимости
Ядерное сглаживание
Kernel regression
SVM основан на скалярном
произведении (x,y)
С учетом ядра –
(X,Y) ~ (xKy)
15. Сверточные сети
Сверточные сети – Convolutional Neural Nets, CNN
Первые публикации – 1989
Популярность – AlexNet, 2012
Yann LeCun
16. Сверточные сети
Иллюстрация сверточного слоя
Выделение признаков + классификация Решаемые проблемы
- Переобучение
- Привыкание к данным
- Выделение признаков перестало
быть искусством
17. Сверточные сети – Базовые слои
Convolution – Свёрточный слой
RELU – Линейный с насыщением
POOL – Pooling, DropOut
FC – Полносвязный слой
LRN – Нормировка данных
Примеры конфигураций:
INPUT -> FC
INPUT -> CONV -> RELU -> FC
INPUT -> [CONV -> RELU -> POOL]*2 -> FC -> RELU -> FC
INPUT -> [CONV -> RELU -> CONV -> RELU -> POOL]*3 -> [FC -> RELU]*2 -> FC
19. Сверточные сети. Ресурсы. Фреймворки. Caffe
Лучший курс. Стэнфорд. Анрей Карпатный
http://cs231n.github.io/
Фреймворки
Python
Theano
Torch (LUA)
C++
MS CNTK
Caffe - http://caffe.berkeleyvision.org/
Примеры.
Сегментация
http://www.robots.ox.ac.uk/~szheng/crfasrnndemo
+ Bag of Words
= Neural Talk
Еще -
Восстановление изображений
Автопилот
Сегментация медицинских данных
And so on…
20. Caffe
Работа построена на конфигурационных файлах.
1. Конфигурация сети
2. Солвер – конфигурация обучения
3. Бинарный файл обученной сети
4. Model Zoo