Сверточные нейронные сети
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)
Мы ускоряем нейросетевые модели. Хочешь работать с нами - реализуй ДЗ
на 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
Спасибо!
Иван Кавалеров [email protected]