Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

271 views

Published on

Основы машинного обучения, базовые понятия (например переобучение и способы его предотвращения), различные архитектуры сетей, и, в частности, сверточные сети. Так же рассмотрены методы оптимизации вычислений в подобных архитектурах: quantization, binary-net и другие.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

  1. 1. Сверточные Нейронные Сети Иван Кавалеров Neo AI
  2. 2. Люди всегда хотели создать думающие машины
  3. 3. Формальное описание правил Пример - система Cyc и язык CycL.
  4. 4. Во многих ситуациях описать все зависимости формально либо невозможно, либо слишком трудозатратно Это сподвигло на создание нового подхода
  5. 5. Машинное обучение Математическая дисциплина, использующая разделы математической статистики, численных методов оптимизации, теории вероятностей, дискретного анализа, и извлекающая знания (зависимости) из данных
  6. 6. Задача машинного обучения На примере классификации: В клинику приходит пациент на обследование. По результатам обследования необходимо дать диагноз - болен пациент раком или нет. У нас так же есть исторические данные о всех пациентах, которые проходили обследование, вместе с историей их болезни.
  7. 7. U множество объектов X(U) признаки объектов Y множество классов Задача машинного обучения
  8. 8. Задача - найти решающую функцию F: X →Y Используя обучающие данные (обучающую выборку)
  9. 9. Минимизировать функцию ошибки Например:
  10. 10. Логистическая регрессия (2 класса)
  11. 11. Проблема - подобные методы очень сильно зависят от представления данных Например, логистическая регрессия не сможет использовать сами изображения полученные в результате прохождения МРТ для диагноза. Очень сложно найти зависимость между каждым отдельным пикселем и результатом
  12. 12. Глубокое обучение Deep Learning Решает проблему представления данных, так как представляет способ представления сложных данных на основе более простых концептов
  13. 13. Задача: распознавание рукописных цифр Набор MNIST
  14. 14. Нейрон
  15. 15. Один слой нейронов
  16. 16. Нелинейность
  17. 17. Многослойный Перцептрон
  18. 18. Многослойный Перцептрон
  19. 19. Сеть подобного плана может достигнуть достаточно большой точности на наборе MNIST (рукописные цифры). Что же насчет более сложных изображений?
  20. 20. LeNet-5 Первая сверточная сеть, была представлена Яном ЛеКуном в 1989 году
  21. 21. Свертка
  22. 22. Как же обучить нейронную сеть?
  23. 23. Градиентный спуск
  24. 24. Метод обратного распространения ошибки a - активации слоя l (исходящие значения) w - матрица весов слоя l z - результат перемножения входящих значений на матрицу весов f - активационная функция (логистическая или ReLU) C - функция ошибки
  25. 25. Метод обратного распространения ошибки 1. Входящие данные x: установить входящие данные как активации первого слоя 2. Обработка данных: для каждого слоя l=2, 3,..,L вычислить и его активации 3. Посчитать ошибку на выходе : 4. Распространить ошибку обратно: для каждого слоя l=L-1, L-2, .., 2 вычислить 5. Обновить все параметры:
  26. 26. Переобучение
  27. 27. Самое главное - правильно подобранная обучающая выборка
  28. 28. Dropout • В процессе обучения случайным образом какая то часть нейронов “отключается” (обычно половина), при этом “вес” оставшихся нейронов соответственно увеличивается. • При использовании модели в работе все нейроны включаются. • В результате вырабатываются избыточные связи и зависимости. • Dropout, по сути, представляет собой ансамбль нескольких моделей которые работают вместе.
  29. 29. Регуляризация • Известно, что когда модель переобучается - веса становятся большими по модулю и разными по знаку. • Если минимизировать эти отклонения - до определенной степени можно побороть переобучение. • L2 и L2 регуляризация - это дополнительное слагаемое в функции ошибки:
  30. 30. AlexNet
  31. 31. Inception
  32. 32. Все очень круто… Но дорого, и долго.
  33. 33. 4K £ 100,000 per year
  34. 34. Уменьшение разрядности параметров и данных • Известно, что нейросетевые модели шумоустойчивы. • Если мы уменьшаем разрядность параметров и/или обрабатываемых данных - мы всего лишь добавляем шум, с которым модель должна хорошо справляться. • Использование 8 разрядов достаточно, что бы сохранить точность модели (для моделей уровня AlexNet). • На данный момент понижение разрядности уже является частью основных пакетов для машинного обучения (например TensorFlow).
  35. 35. BinaryNet и XNOR-Net • Автор - Matthieu Courbariaux, руководитель - Yoshua Bengio (Университет Монреаля) • Уменьшить разрядность до 1 (бинарные значения) как для активаций, так и для параметров модели • Главное арифметическое действие в нейросетевых моделях - сумма произведений. Её можно заменить на XNOR-count: • XNOR - 1 если аргументы равны, 0 в противном случае. • Popcount - количество 1 в аргументе. • Результат: • Ускорение в 7 раз на GPU с использованием специально разработанного вычислительного ядра • Уменьшение размера модели в 32 раза
  36. 36. FPGA • Программи́ руемая по́ льзователем ве́ нтильная ма́ трица (ППВМ, англ. Field- Programmable Gate Array, FPGA) — полупроводниковое устройство, которое может быть сконфигурировано производителем или разработчиком после изготовления. [Wikipedia] • Схема может быть модифицирована пользователем в любой момент. • Схема состоит из логических элементов (вентилей, gates). • Можно программировать схему под конкретную задачу (в нашем случае под конкретную нейтронную сеть) • Это можно совместить с XNOR-Net для не только улучшения производительности, но и энергоэффективности. • Бонус - можно создать архитектуру отличную от стандартной архитектуры фон Неймана
  37. 37. Что дальше? • Виды нейросетей • Recurrent Neural Networks • Q-learning (Reinforcement learning) • Generative Adversarial Networks • … • Различные модели • VGG • Inception • … • Методы улучшения производительности • Pruning • Slicing • …
  38. 38. Домашнее задание Реализовать нейросетевую модель на любом языке программирования без использования специальных пакетов/библиотек. 1. Многослойный перцептрон (Например LeNet-300) 2. Сверточная сеть (LeNet-5) 3. Сверточная сеть с dropout и local response normalization (AlexNet)
  39. 39. ivan@neo-ai.com Мы ускоряем нейросетевые модели. Хочешь работать с нами - реализуй ДЗ на C/C++ и пиши мне на электронную почту.
  40. 40. Обучение • 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
  41. 41. Ресурсы • 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
  42. 42. Спасибо! Иван Кавалеров ivan@neo-ai.com

×