Slide 1

Slide 1 text

Deep Learning Глубокое обучение Ермоленко Михаил Директор по разработке

Slide 2

Slide 2 text

Где применяется Deep learning? © 2015 API.AI | Михаил Ермоленко, [email protected] • Распознавание (текста, образов, голоса, жестов и т.д.) • Машинный перевод • Биометрия (отпечатки пальцев, голос, лицо) • Медицина (экспресс диагностика, борьба с раком, протезы и т.д.) • Классификация документов (спам, поиск и т.д) • Робототехника (ходьба, управление руками и т.д.) • Беспилотные автомобили • И т.д.

Slide 3

Slide 3 text

Давным-давно, в далёкой-далёкой галактике... © 2015 API.AI | Михаил Ермоленко, [email protected] Дмитрий Анатольевич принял бразды правления И решил он реформировать полицию и суды В этот раз точно должно получится, так как на помощь прийдут глубокие нейронные сети Дал поручение создать киборгов судей-полицейских Из бюджета выделили 100 миллиардов Тендер выиграла компания «НаноИнновацииПлюс» Деньги куда-то исчезли и осталось всего 100 тысяч Ответственным за спасение ситуации назначили программиста самоучку Небоходова…

Slide 4

Slide 4 text

Кодовое название проекта: Судья Дредд © 2015 API.AI | Михаил Ермоленко, [email protected]

Slide 5

Slide 5 text

Периметр работ © 2015 API.AI | Михаил Ермоленко, [email protected] • Зрение • Слух • Понимание • Принятие решение • Действия/движения

Slide 6

Slide 6 text

Принятие решений: казнить ли преступника? © 2015 API.AI | Михаил Ермоленко, [email protected] • Убийство (Критерий 1) • Грабеж (Критерий 2) • Повторное правонарушение (Критерий 3) Свойства правонарушения:

Slide 7

Slide 7 text

Принятие решений: казнить ли преступника? © 2015 API.AI | Михаил Ермоленко, [email protected] K1:У K2:Г K3:П Сумма Казнить Вес 3 2 1 от 4 Преступник 1 1 1 0 5 ДА Преступник 2 1 0 1 4 ДА Преступник 3 0 1 1 3 НЕТ Преступник 4 0 1 0 2 НЕТ Сумма = K1*3+K2*2+K3*1 Если сумма больше или равна 4, то да

Slide 8

Slide 8 text

Принятие решений: казнить ли преступника? © 2015 API.AI | Михаил Ермоленко, [email protected] • Совершеннолетний или нет (Критерий 4) • Случайное убийство (Критерий 5) • Самооборона (Критерий 6) • Повторное правонарушение (Критерий 7) • и т.д. и т.п. Какие ещё могут быть свойства: И чем больше свойств, тем сложнее и дольше подбирать коэффициенты

Slide 9

Slide 9 text

Перцептрон (Perceptron) © 2015 API.AI | Михаил Ермоленко, [email protected] от лат. perceptio — восприятие

Slide 10

Slide 10 text

Обучение перцептрона © 2015 API.AI | Михаил Ермоленко, [email protected] Метод коррекции ошибок: • Ставим случайные веса (или обнуляем их вовсе) • Подаем на вход тестовый пример и вычисляем результат • Если результат не верный, то модифицируем все веса следующим образом: wn = wn + a*xn*( - ) • Повторяем для всех примеров, делаем несколько итераций

Slide 11

Slide 11 text

Обучение перцептрона на 1м примере (a=1) © 2015 API.AI | Михаил Ермоленко, [email protected] i w0 w1 w2 w3 K1 K2 K3 Resul Exp. Diff 1 0 0 0 0 1 1 0 1 1 0 1 0 0 0 0 1 0 1 1 1 0 1 0 0 0 0 0 1 1 1 0 -1 1 -1 0 -1 -1 0 1 0 0 0 0 2 -1 0 -1 -1 1 1 0 0 1 1 2 0 1 0 -1 1 0 1 1 1 0 2 0 1 0 -1 0 1 1 0 0 0 2 0 1 0 -1 0 1 0 1 0 -1 3 -1 1 -1 -1 1 1 0 0 1 1 3 0 2 0 -1 1 0 1 1 1 0 3 0 2 0 -1 0 1 1 0 0 0 3 0 2 0 -1 0 1 0 1 0 -1 4 -1 2 -1 -1 1 1 0 1 1 0 4 -1 2 -1 -1 1 0 1 1 1 0 4 -1 2 -1 -1 0 1 1 0 0 0 4 -1 2 -1 -1 0 1 0 0 0 0

Slide 12

Slide 12 text

И наступило счастье © 2015 API.AI | Михаил Ермоленко, [email protected] • После обучения система работала отлично, точность 99% • Только добавляй примеров на основе судебной практики • Когда стали подаваться результаты новых дел, то часто даётся неверный ответ • Начали разбираться… перцептрон совсем не умеет обещать, но есть идея! На самом деле нет:

Slide 13

Slide 13 text

Добавим промежуточные классы © 2015 API.AI | Михаил Ермоленко, [email protected] • Подбирать коэффициенты руками стало ещё сложнее • А обучение никак не сходится. Как быть? Но:

Slide 14

Slide 14 text

В чем причина? © 2015 API.AI | Михаил Ермоленко, [email protected] • Малейшее изменение в данных может привести к кардинальному изменению ответа (с 0 на 1 и наоборот) => не предсказуемость • Многие промежуточные характеристики не бинарны и могут иметь промежуточные значения

Slide 15

Slide 15 text

Сейчас начнётся посложнее.. © 2015 API.AI | Михаил Ермоленко, [email protected]

Slide 16

Slide 16 text

Функции активации © 2015 API.AI | Михаил Ермоленко, [email protected]

Slide 17

Slide 17 text

Целевая функция ошибки © 2015 API.AI | Михаил Ермоленко, [email protected] • C введением сигмоида значения 0 или 1 можно получить только при +/- бесконечности • У нас много примеров и нужно придумать способ, который бы находил такие веса, что бы всё примеры были максимально близко к желаемому результату • Решение: метод наименьших квадратов:

Slide 18

Slide 18 text

Градиентный спуск (SGD) © 2015 API.AI | Михаил Ермоленко, [email protected]

Slide 19

Slide 19 text

Метод обратного распространения ошибки © 2015 API.AI | Михаил Ермоленко, [email protected]

Slide 20

Slide 20 text

Глубокая нейронная сеть © 2015 API.AI | Михаил Ермоленко, [email protected] Скрытые слои Входной слой Выход

Slide 21

Slide 21 text

Стало на много лучше © 2015 API.AI | Михаил Ермоленко, [email protected] • После обучения система работала отлично, точность 99,8% • На неизвестных примерах точность выросла до 85% • Уж очень долго тренируется, тяжело экспериментировать • Хотелось бы повысить точность Но есть проблемы:

Slide 22

Slide 22 text

Как мы можем ускорить тренировку? (1/3) © 2015 API.AI | Михаил Ермоленко, [email protected] • Разбить тренировочные примеры на пакеты (batch) по N штук (на практике от 10 до 500) • Считаем результат работы нейронной сети для всех примеров в рамках одного пакета • Считаем градиент общей функции ошибки • Делаем всего один проход обратного распространения ошибки вместо N (ускоряем тренировку в несколько раз)

Slide 23

Slide 23 text

Как мы можем ускорить тренировку? (2/3) © 2015 API.AI | Михаил Ермоленко, [email protected] • Реализуем тренировку на GPU (видеокарты) До 100 раз быстрее, чем на CPU • Рекомендуемое железо: Nvidia GeForce GTX TITAN X или GTX 980 Ti • Реализуем распараллеливание тренировки на несколько видео крат, а возможно даже и серверов

Slide 24

Slide 24 text

Как мы можем ускорить тренировку? (3/3) © 2015 API.AI | Михаил Ермоленко, [email protected] • Использовать улучшенные версии градиентного спуска (Adagrad, RMSprop, Adam) • Уменьшить размер слоев • Попробовать ReLU, как функцию активации (быстрее считается и для ряда задач лучше точность) • Почитать, что пишут умные люди, ещё много тонких моментов

Slide 25

Slide 25 text

Повышение точности (1/2) © 2015 API.AI | Михаил Ермоленко, [email protected] • Увеличить количество слоев • Увеличить количество нейронов в каждом слое • Увеличить объём тренировочных данных • Бороться с переобучением

Slide 26

Slide 26 text

Повышение точности (2/2) © 2015 API.AI | Михаил Ермоленко, [email protected] • Критерий выхода из обучения • Использовать Dropout или Batch normalization Борьба с переобучением:

Slide 27

Slide 27 text

И наступило счастье © 2015 API.AI | Михаил Ермоленко, [email protected] • Теперь вообще замечательно, точность 99,9% • На неизвестных примерах точность выросла до 98,5% • Сажать в тюрьму (ещё и на разный срок) • Назначать условное наказание • Накладывать штрафы • Делать предупреждения • И ещё что-нибудь:) Но судья должен не только казнить, но и:

Slide 28

Slide 28 text

Мультиклассовая классификация © 2015 API.AI | Михаил Ермоленко, [email protected] • На каждое решение заводим отдельный выход у нейронной сети • Так как сроки и суммы наказания тоже конечные, то для каждого варианта заводим отдельный выход • Используем Cross entropy функцию как функцию ошибок: • Softmax как активацию на последнем слое:

Slide 29

Slide 29 text

© 2015 API.AI | Михаил Ермоленко, [email protected] У нас очень справедливый судья Но выносить приговор это только лишь одна из сотен его обязанностей. И их все нужно натренировать, скучно.. давайте дальше

Slide 30

Slide 30 text

Распознавание изображений © 2015 API.AI | Михаил Ермоленко, [email protected] • Начнём с цифр и попробуем использовать архитектуру предидущей сети • На вход подаём значения пикселей (28x28) http://yann.lecun.com/exdb/mnist/

Slide 31

Slide 31 text

Дополнение (Augmenting) © 2015 API.AI | Михаил Ермоленко, [email protected] • Сделаем картинки с различным сдвигом, растяжением и поворотом • Добавим случайные шумы • Качество на тестовом наборе увеличится с 97% • Но дальше уже не улучшается

Slide 32

Slide 32 text

Сверточные нейронные сети © 2015 API.AI | Михаил Ермоленко, [email protected] Посмотреть в динамике можно здесь: http://cs.stanford.edu/people/karpathy/convnetjs/demo/mnist.html

Slide 33

Slide 33 text

Сверточные нейронные сети © 2015 API.AI | Михаил Ермоленко, [email protected]

Slide 34

Slide 34 text

Рекуррентные нейронные сети © 2015 API.AI | Михаил Ермоленко, [email protected] Аппроксимируют любую последовательность

Slide 35

Slide 35 text

Рекуррентные нейронные сети © 2015 API.AI | Михаил Ермоленко, [email protected] LSTM

Slide 36

Slide 36 text

Двунаправленные реккурентные нейронные сети © 2015 API.AI | Михаил Ермоленко, [email protected]

Slide 37

Slide 37 text

Memory networks © 2015 API.AI | Михаил Ермоленко, [email protected] • Joe went to the kitchen. Fred went to the kitchen. Joe picked up the milk. • Joe travelled to the office. Joe left the milk. Joe went to the bathroom. • Where is the milk now? A: office • Where is Joe? A: bathroom • Where was Joe before the office? A: kitchen

Slide 38

Slide 38 text

Multi-task learning © 2015 API.AI | Михаил Ермоленко, [email protected]

Slide 39

Slide 39 text

Обучение без учителя © 2015 API.AI | Михаил Ермоленко, [email protected] Auto encoder

Slide 40

Slide 40 text

Обучение с подкреплением © 2015 API.AI | Михаил Ермоленко, [email protected] Q-Learning http://arxiv.org/pdf/1312.5602v1.pdf

Slide 41

Slide 41 text

Transfer learning © 2015 API.AI | Михаил Ермоленко, [email protected] • Обучаем на больших данных • Выкидываем последний слой • Обучаем на небольшом объёме данных, с хорошей точностью

Slide 42

Slide 42 text

Распознавание речи © 2015 API.AI | Михаил Ермоленко, [email protected] • Kaldi (http://kaldi.sourceforge.net/) • Eesen (https://github.com/yajiemiao/eesen)

Slide 43

Slide 43 text

Беспилотные автомобили © 2015 API.AI | Михаил Ермоленко, [email protected] https://www.ted.com/talks/ chris_urmson_how_a_driverless_car_sees_the_road

Slide 44

Slide 44 text

Библиотеки © 2015 API.AI | Михаил Ермоленко, [email protected] • Torch (http://torch.ch/) • Caffe (http://caffe.berkeleyvision.org/) • Theano (http://deeplearning.net/software/theano/): • Keras (http://keras.io/) • Lasagne (http://lasagne.readthedocs.org/en/latest/) • Плодятся как грибы после дождя:)

Slide 45

Slide 45 text

Заключение: о будущем искусственного интеллекта © 2015 API.AI | Михаил Ермоленко, [email protected]

Slide 46

Slide 46 text

Спасибо! © 2015 API.AI | Михаил Ермоленко, [email protected] Все вопросы можно задать по адресу [email protected]