Top Banner
Transfer Learning Как перестать бояться и начать использовать сверхточные нейронные сети? Талипов Руслан findmeals.com
71

Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Jan 19, 2017

Download

Internet

it-people
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Transfer LearningКак перестать бояться и начать

использовать сверхточные нейронные сети?

Талипов Руслан findmeals.com

Page 2: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

План

• Кто мы и с какой проблемой столкнулись

• Теоретические зарисовки о CNN

• Наше решение

Page 3: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Покупайте продукты для рецептов

Page 4: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Специфика

Покупатель принимает решениеоценивая «по одёжке».

Page 5: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Аренда жилья

Page 6: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Знакомства

Page 7: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Выбор блюд

Page 8: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Рецепт

Page 9: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Векторное представление изображения

• Помогает классифицировать

• Помогает фильтровать контент

Page 10: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

USE DEEP LEARNING!

Page 11: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Deep Learning?

Page 12: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

И как нам его использовать?

Page 13: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Страшная правда

• Deep Learning – BaseWord (Big Data, NoSQL, Growth Hacking)

• Deep Learning = Нейронные сети.

• Deep = Большое количество слоёв.

Page 14: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Тренды

Page 15: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Причины роста интереса

Page 16: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Данные

Page 17: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

GPU

Page 18: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

GPU

Page 19: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Причины роста интереса

Эти модели работают

Page 20: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Машинное обучение

Page 21: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Простой классификатор

БородаУсыПлечиГрудьТалияБёдраРост

М/Ж

Волосы

Page 22: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Признаки сами по себе

Page 23: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Скрытый слойБородаУсыПлечиГрудьТалияБёдраРост

М/Ж

Волосы

Page 24: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

CNN

• Convolutional Neural Network = Свёрточная нейронная сеть

Page 25: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Задачи• Классификация изображений ( Image

Classification, какому классу принадлежит изображение)

• Верификация изображений ( Image verification, изображено ли на картинках одно и тоже? )

• Поиск изображений ( image retrieval, поиск похожих картинок)

• Всё остальное

Page 26: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Проблема при работе с изображениями

Признаки на входе = Пиксели.RGB пиксель – это 3 значения

Page 27: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Линейный классификатор на датасете CIFAR-10

Распускаем RGB картинку 32х32х3 в 1 длинный вектор размерностью 3072.Оцениваем важность каждой координаты для классификации.

Page 28: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Составим из весов изображения

Собака Лягушка Лошадка Корабль Грузовик

Самолёт Автомоб. Птица Котик Олень

http://cs231n.github.io/linear-classify/

Page 29: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Недостатки

• Не учитывает соседство пикселей

• Большая размерность

• Неустойчив к изменениям фона и освещения, перекрытиям, деформациям, изменению угла обзора

Page 30: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Свёртка

Page 31: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Пулинг

Page 32: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

LeNet 1989

Page 33: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

ILSVRC ImageNet

• 1000 классов по 1000 изображений в каждом

• Несколько задач: – выявление объектов (классификация) – локализация объектов (указать где находится объект)

Page 34: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Примеры Top5 error

http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf

Page 35: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Некоторые победители

Page 36: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

AlexNet 2012

2 GTX 580 3GB GPUs 5 - 6 дней обучения16.4% Top5 error

papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf

Page 37: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

VGG 2014

4 GTX Titan Black2 - 3 недели обучения7.3% Top5 error

http://arxiv.org/pdf/1409.1556.pdf

Page 38: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

GoogleNet 2014

Несколько Tesla K80Долго6.6% Top5 errorhttp://www.cs.unc.edu/~wliu/papers/GoogLeNet.pdf

Page 39: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

ResNet 2015

3.6% Top5 error2-3 Недели8 Tesla K80

http://arxiv.org/pdf/1512.03385v1.pdf

Page 40: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

!!!!!!!!!!!!!!!!!• Это КРУТО.

• Но, у меня нет времени

• Но, мои навыки разработки под GPU отстой

• Но, у меня нет достаточного количества размеченных данных

• Вот.

Page 41: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

И ЧО?

• У меня другая задача. Мне не нужно отличать клеща от сухогруза.

Page 42: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Что происходит на сверхточных слоях?

Page 43: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Слой 1

http://arxiv.org/pdf/1311.2901v3.pdf

Page 44: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Слой 2

http://arxiv.org/pdf/1311.2901v3.pdf

Page 45: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Слой 3

http://arxiv.org/pdf/1311.2901v3.pdf

Page 46: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Слои 4 и 5

• >

http://arxiv.org/pdf/1311.2901v3.pdfhttps://habrahabr.ru/company/nordavind/blog/253859/

Page 47: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Наблюдение

• Признаки на первых слоях достаточно общие

• Признаки на глубоких слоях более конкретные, но всё равно активны на различных изображениях

• Классификатор обучается на признаках полученных с последнего сверхточного слоя.

Page 48: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Вопросы в голове…• Зачем обучать сеть с нуля, если в процессе обучения получаются аналогичные визуальные признаки?

• Для разработки приложений мы используем фреймворки с готовыми компонентами…

• Можем ли мы использовать обученные слои в качестве таких компонентов?

Page 49: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Transfer Learning

• Берём обученные слои хорошей модели

• Добавляем их в свою модель

• Обучаем получившегося гибрида (Fine-tune)

• PROFIT

Page 50: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Transfer Learning

Learning visual representations - Andrea Vedaldi, University of Oxford https://events.yandex.ru/lib/talks/2793/

Page 51: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Признаки?

• Для контроля требуется векторное представление изображения

• Используем для этого признаки с глубоких слоёв сети.

Page 52: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Железки

• 8 GB RAM

• 1 TB HDD

• GeForce GTX 960 2GB

Page 53: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Данные

• Набор данных Food-101 https://www.vision.ee.ethz.ch/datasets_extra/food-101/

• 101 класс 1000 изображений в каждом

Page 54: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Архитектура модели

http://www.robots.ox.ac.uk/~vgg/research/very_deep/

База VGG 19 Не обучается

4096

101

Page 55: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Проблемы• Модели для ImageNet проектируются и обучаются для множества классов/примеров

• Сложная модель на простой задаче с недостатком данных приводит к…

Page 56: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

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

• Аугментация данных(кропы 224х224 с отражениями)

• Нормализация (Dropout 0.6 - 0.8)

• L1 и L2

Page 57: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Реализация

• Python3.4, CUDA 7.5 (cuDNN)

• Theano (Базовые классы и функции)

• Lasagne (Слои, Нелинейные функ., Методы оптимизации)

Page 58: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

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

Page 59: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Другие варианты

• Caffe

• TensorFlow

• Torch

• CNTK

Page 60: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Результаты

Page 61: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Классификация

Page 62: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Макаруны vs Макароны

Page 63: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Макаруны vs Макароны

Page 64: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Суши, Пицца, Салат, Оладья.

Page 65: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Суши, Пицца, Салат, Оладья.

Page 66: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Суши, Пицца, Салат, Оладья, Крылышки, Мороженое.

Page 67: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Суши, Пицца, Салат, Оладья, Крылышки, Мороженое.

Page 68: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Применение

Классификация

Фильтрация контента

Page 69: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Выводы

• Свёрточные сети работают и могут повторно использоваться.

• Чтобы не умереть от старости обучая сеть нужно использовать GPU

• В мире Нейронных сетей только появляются инструменты такие как PHP в мире Web

Page 70: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Вакансия

Page 71: Что такое Transfer Learning, или как перестать бояться и начать использовать свёрточные нейронные сети, Руслан

Спасибо

Вопросы? https://vk.com/roosh_roosh

https://telegram.me/roosh_roosh