Сверточные нейронные сети

45
Сверточные Нейронные Сети Иван Кавалеров Neo AI

Upload: ivan-kavalerov

Post on 27-Jan-2017

51 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Сверточные нейронные сети

Сверточные Нейронные Сети

Иван Кавалеров Neo AI

Page 2: Сверточные нейронные сети

Люди всегда хотели создать думающие машины

Page 3: Сверточные нейронные сети

Формальное описание правилПример - система Cyc и язык CycL.

Page 4: Сверточные нейронные сети

Во многих ситуациях описать все зависимости формально либо

невозможно, либо слишком трудозатратноЭто сподвигло на создание нового подхода

Page 5: Сверточные нейронные сети

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

дискретного анализа, и извлекающая знания (зависимости) из данных

Page 6: Сверточные нейронные сети

Задача машинного обученияНа примере классификации:

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

вместе с историей их болезни.

Page 7: Сверточные нейронные сети

U множество объектов

X(U) признаки объектов

Y множество классов

Задача машинного обучения

Page 8: Сверточные нейронные сети

Задача - найти решающую функцию

F: X →Y

Используя обучающие данные (обучающую выборку)

Page 9: Сверточные нейронные сети

Минимизировать функцию ошибки

Например:

Page 10: Сверточные нейронные сети

Логистическая регрессия (2 класса)

Page 11: Сверточные нейронные сети

Проблема - подобные методы очень сильно зависят от представления данных

Например, логистическая регрессия не сможет использовать сами изображения полученные в результате прохождения МРТ для диагноза. Очень сложно найти зависимость между каждым отдельным пикселем и результатом

Page 12: Сверточные нейронные сети

Глубокое обучение Deep Learning

Решает проблему представления данных, так как представляет способ представления сложных данных на основе более простых концептов

Page 13: Сверточные нейронные сети

Задача: распознавание рукописных цифрНабор MNIST

Page 14: Сверточные нейронные сети

Нейрон

Page 15: Сверточные нейронные сети

Один слой нейронов

Page 16: Сверточные нейронные сети

Нелинейность

Page 17: Сверточные нейронные сети

Многослойный Перцептрон

Page 18: Сверточные нейронные сети

Многослойный Перцептрон

Page 19: Сверточные нейронные сети

Сеть подобного плана может достигнуть достаточно большой точности на наборе

MNIST (рукописные цифры).

Что же насчет более сложных изображений?

Page 20: Сверточные нейронные сети

LeNet-5Первая сверточная сеть, была представлена Яном ЛеКуном в 1989 году

Page 21: Сверточные нейронные сети

Свертка

Page 22: Сверточные нейронные сети
Page 23: Сверточные нейронные сети

Как же обучить нейронную сеть?

Page 24: Сверточные нейронные сети

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

Page 25: Сверточные нейронные сети

Метод обратного распространения ошибки

a - активации слоя l (исходящие значения) w - матрица весов слоя l z - результат перемножения входящих значений на матрицу весов f - активационная функция (логистическая или ReLU) C - функция ошибки

Page 26: Сверточные нейронные сети

Метод обратного распространения ошибки

1. Входящие данные x: установить входящие данные как активации первого слоя

2. Обработка данных: для каждого слоя l=2, 3,..,L вычислить и его активации

3. Посчитать ошибку на выходе : 4. Распространить ошибку обратно: для каждого слоя l=L-1, L-2, .., 2

вычислить 5. Обновить все параметры:

Page 27: Сверточные нейронные сети

Переобучение

Page 28: Сверточные нейронные сети

Самое главное - правильно подобранная обучающая выборка

Page 29: Сверточные нейронные сети

Dropout• В процессе обучения случайным образом какая то часть нейронов

“отключается” (обычно половина), при этом “вес” оставшихся нейронов соответственно увеличивается.

• При использовании модели в работе все нейроны включаются. • В результате вырабатываются избыточные связи и зависимости. • Dropout, по сути, представляет собой ансамбль нескольких моделей которые работают вместе.

Page 30: Сверточные нейронные сети

Регуляризация• Известно, что когда модель переобучается - веса становятся большими по модулю и разными по знаку.

• Если минимизировать эти отклонения - до определенной степени можно побороть переобучение.

• L2 и L2 регуляризация - это дополнительное слагаемое в функции ошибки:

Page 31: Сверточные нейронные сети
Page 32: Сверточные нейронные сети

AlexNet

Page 33: Сверточные нейронные сети

Inception

Page 34: Сверточные нейронные сети
Page 35: Сверточные нейронные сети

Все очень круто… Но дорого, и долго.

Page 36: Сверточные нейронные сети

4K

£ 100,000 per year

Page 37: Сверточные нейронные сети

Уменьшение разрядности параметров и данных

• Известно, что нейросетевые модели шумоустойчивы. • Если мы уменьшаем разрядность параметров и/или обрабатываемых данных - мы всего лишь добавляем шум, с которым модель должна хорошо справляться.

• Использование 8 разрядов достаточно, что бы сохранить точность модели (для моделей уровня AlexNet).

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

Page 38: Сверточные нейронные сети

BinaryNet и XNOR-Net• Автор - Matthieu Courbariaux, руководитель - Yoshua Bengio (Университет Монреаля)

• Уменьшить разрядность до 1 (бинарные значения) как для активаций, так и для параметров модели

• Главное арифметическое действие в нейросетевых моделях - сумма произведений. Её можно заменить на XNOR-count: • XNOR - 1 если аргументы равны, 0 в противном случае. • Popcount - количество 1 в аргументе.

• Результат: • Ускорение в 7 раз на GPU с использованием специально разработанного вычислительного ядра

• Уменьшение размера модели в 32 раза

Page 39: Сверточные нейронные сети

FPGA• Программи́руемая по́льзователем ве́нтильная ма́трица (ППВМ, англ. Field-

Programmable Gate Array, FPGA) — полупроводниковое устройство, которое может быть сконфигурировано производителем или разработчиком после изготовления. [Wikipedia]

• Схема может быть модифицирована пользователем в любой момент. • Схема состоит из логических элементов (вентилей, gates). • Можно программировать схему под конкретную задачу (в нашем случае под конкретную нейтронную сеть)

• Это можно совместить с XNOR-Net для не только улучшения производительности, но и энергоэффективности.

• Бонус - можно создать архитектуру отличную от стандартной архитектуры фон Неймана

Page 40: Сверточные нейронные сети

Что дальше?• Виды нейросетей

• Recurrent Neural Networks • Q-learning (Reinforcement learning) • Generative Adversarial Networks • …

• Различные модели • VGG • Inception • …

• Методы улучшения производительности • Pruning • Slicing • …

Page 41: Сверточные нейронные сети

Домашнее заданиеРеализовать нейросетевую модель на любом языке программирования без

использования специальных пакетов/библиотек.

1. Многослойный перцептрон (Например LeNet-300) 2. Сверточная сеть (LeNet-5)

3. Сверточная сеть с dropout и local response normalization (AlexNet)

Page 42: Сверточные нейронные сети

[email protected]

Мы ускоряем нейросетевые модели. Хочешь работать с нами - реализуй ДЗ

на C/C++ и пиши мне на электронную почту.

Page 43: Сверточные нейронные сети

Обучение• Deep Learning Book by Ian Goodfellow • https://yandexdataschool.ru/edu-process/courses/machine-learning • https://www.coursera.org/specializations/machine-learning-data-analysis • http://neuralnetworksanddeeplearning.com/ • https://github.com/songrotek/Deep-Learning-Papers-Reading-Roadmap • Udacity • Coursera • Kaggle • OpenAI Gym • OpenAI Universe

Page 44: Сверточные нейронные сети

Ресурсы• Deep Learning Book by Ian Goodfellow • https://yandexdataschool.ru/edu-process/courses/machine-learning • https://www.coursera.org/specializations/machine-learning-data-analysis • http://neuralnetworksanddeeplearning.com/ • Courbariaux, M., & Bengio, Y. (2016). BinaryNet: Training Deep Neural Networks with Weights and

Activations Constrained to +1 or -1. arXiv, 9. Retrieved from http://arxiv.org/abs/1602.02830 • Rastegari, M., Ordonez, V., Redmon, J., & Farhadi, A. (2016). XNOR-Net: ImageNet Classification Using

Binary Convolutional Neural Networks. arXiv Preprint, 1–17. https://doi.org/10.1007/978-3-319-46493-0 • Courbariaux, M., Bengio, Y., & David, J. (2015). BinaryConnect: Training Deep Neural Networks with binary

weights during propagations. Nips, 1–9. https://doi.org/arXiv: 1412.7024 • Lin, Z., Courbariaux, M., Memisevic, R., & Bengio, Y. (2015). Neural Networks with Few Multiplications. Iclr,

1–8. https://doi.org/10.1017/CBO9781107415324.004 • Li, F., & Liu, B. (2016). Ternary Weight Networks. Computer Vision and Pattern Recognition. Retrieved from

http://arxiv.org/abs/1605.04711 • Goodfellow, I., Pouget-Abadie, J., & Mirza, M. (2014). Generative Adversarial Networks. arXiv Preprint arXiv:

…, 1–9. Retrieved from http://arxiv.org/abs/1406.2661 • Mnih, V., Kavukcuoglu, K., Silver, D., Graves, A., Antonoglou, I., Wierstra, D., & Riedmiller, M. (2013). Playing

Atari with Deep Reinforcement Learning. arXiv Preprint arXiv: …, 1–9. https://doi.org/10.1038/nature14236 • Umuroglu, Y., Fraser, N. J., Gambardella, G., & Blott, M. (2017). FINN : A Framework for Fast , Scalable

Binarized Neural Network Inference. Fpga, (February). https://doi.org/10.1145/1235

Page 45: Сверточные нейронные сети

Спасибо!

Иван Кавалеров [email protected]