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

Post on 27-Jan-2017

51 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

F: X →Y

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

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

Например:

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

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

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

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

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

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

Нейрон

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

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

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

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

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

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

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

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

Свертка

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

AlexNet

Inception

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

4K

£ 100,000 per year

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ivan@neo-ai.com

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

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

Обучение• 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

Ресурсы• 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

Спасибо!

Иван Кавалеров ivan@neo-ai.com

top related