Deep Learning. На пути к искусственному интеллекту

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

Transcript of Deep Learning. На пути к искусственному интеллекту

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

Ермоленко Михаил

Директор по разработке

Где применяется Deep learning?

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

• Распознавание (текста, образов, голоса, жестов и т.д.)• Машинный перевод• Биометрия (отпечатки пальцев, голос, лицо)• Медицина (экспресс диагностика, борьба с раком,

протезы и т.д.)• Классификация документов (спам, поиск и т.д)• Робототехника (ходьба, управление руками и т.д.)• Беспилотные автомобили• И т.д.

Давным-давно, в далёкой-далёкой галактике...

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

Дмитрий Анатольевич принял бразды правленияИ решил он реформировать полицию и судыВ этот раз точно должно получится, так как на помощь прийдут глубокие нейронные сетиДал поручение создать киборгов судей-полицейскихИз бюджета выделили 100 миллиардовТендер выиграла компания «НаноИнновацииПлюс»Деньги куда-то исчезли и осталось всего 100 тысячОтветственным за спасение ситуации назначили программиста самоучку Небоходова…

Кодовое название проекта: Судья Дредд

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

Периметр работ

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

• Зрение• Слух• Понимание• Принятие решение• Действия/движения

Принятие решений: казнить ли преступника?

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

• Убийство (Критерий 1)• Грабеж (Критерий 2)• Повторное правонарушение (Критерий 3)

Свойства правонарушения:

Принятие решений: казнить ли преступника?

© 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, то да

Принятие решений: казнить ли преступника?

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

• Совершеннолетний или нет (Критерий 4)• Случайное убийство (Критерий 5)• Самооборона (Критерий 6)• Повторное правонарушение (Критерий 7)• и т.д. и т.п.

Какие ещё могут быть свойства:

И чем больше свойств, тем сложнее и дольше подбирать коэффициенты

Перцептрон (Perceptron)

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

от лат. perceptio — восприятие

Обучение перцептрона

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

Метод коррекции ошибок:• Ставим случайные веса (или обнуляем их вовсе) • Подаем на вход тестовый пример и вычисляем

результат• Если результат не верный, то модифицируем все веса

следующим образом: wn = wn + a*xn*(<expected> - <result>)

• Повторяем для всех примеров, делаем несколько итераций

Обучение перцептрона на 1м примере (a=1)

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

i w0 w1 w2 w3 K1 K2 K3 Resul Exp. Diff1 0 0 0 0 1 1 0 1 1 01 0 0 0 0 1 0 1 1 1 01 0 0 0 0 0 1 1 1 0 -11 -1 0 -1 -1 0 1 0 0 0 02 -1 0 -1 -1 1 1 0 0 1 12 0 1 0 -1 1 0 1 1 1 02 0 1 0 -1 0 1 1 0 0 02 0 1 0 -1 0 1 0 1 0 -13 -1 1 -1 -1 1 1 0 0 1 13 0 2 0 -1 1 0 1 1 1 03 0 2 0 -1 0 1 1 0 0 03 0 2 0 -1 0 1 0 1 0 -14 -1 2 -1 -1 1 1 0 1 1 04 -1 2 -1 -1 1 0 1 1 1 04 -1 2 -1 -1 0 1 1 0 0 04 -1 2 -1 -1 0 1 0 0 0 0

И наступило счастье

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

• После обучения система работала отлично, точность 99%

• Только добавляй примеров на основе судебной практики

• Когда стали подаваться результаты новых дел, то часто даётся неверный ответ

• Начали разбираться… перцептрон совсем не умеет обещать, но есть идея!

На самом деле нет:

Добавим промежуточные классы

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

• Подбирать коэффициенты руками стало ещё сложнее

• А обучение никак не сходится. Как быть?

Но:

В чем причина?

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

• Малейшее изменение в данных может привести к кардинальному изменению ответа (с 0 на 1 и наоборот) => не предсказуемость

• Многие промежуточные характеристики не бинарны и могут иметь промежуточные значения

Сейчас начнётся посложнее..

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

Функции активации

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

Целевая функция ошибки

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

• C введением сигмоида значения 0 или 1 можно получить только при +/- бесконечности

• У нас много примеров и нужно придумать способ, который бы находил такие веса, что бы всё примеры были максимально близко к желаемому результату

• Решение: метод наименьших квадратов:

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

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

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

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

Глубокая нейронная сеть

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

Скрытые слои

Входной слой

Выход

Стало на много лучше

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

• После обучения система работала отлично, точность 99,8%

• На неизвестных примерах точность выросла до 85%

• Уж очень долго тренируется, тяжело экспериментировать

• Хотелось бы повысить точность

Но есть проблемы:

Как мы можем ускорить тренировку? (1/3)

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

• Разбить тренировочные примеры на пакеты (batch) по N штук (на практике от 10 до 500)

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

• Считаем градиент общей функции ошибки• Делаем всего один проход обратного распространения

ошибки вместо N (ускоряем тренировку в несколько раз)

Как мы можем ускорить тренировку? (2/3)

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

• Реализуем тренировку на GPU (видеокарты) До 100 раз быстрее, чем на CPU

• Рекомендуемое железо: Nvidia GeForce GTX TITAN X или GTX 980 Ti

• Реализуем распараллеливание тренировки на несколько видео крат, а возможно даже и серверов

Как мы можем ускорить тренировку? (3/3)

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

• Использовать улучшенные версии градиентного спуска (Adagrad, RMSprop, Adam)

• Уменьшить размер слоев• Попробовать ReLU, как функцию активации (быстрее

считается и для ряда задач лучше точность)• Почитать, что пишут умные люди, ещё много тонких

моментов

Повышение точности (1/2)

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

• Увеличить количество слоев• Увеличить количество нейронов в каждом слое• Увеличить объём тренировочных данных• Бороться с переобучением

Повышение точности (2/2)

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

• Критерий выхода из обучения• Использовать Dropout или Batch normalization

Борьба с переобучением:

И наступило счастье

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

• Теперь вообще замечательно, точность 99,9%• На неизвестных примерах точность выросла до 98,5%

• Сажать в тюрьму (ещё и на разный срок)• Назначать условное наказание• Накладывать штрафы• Делать предупреждения• И ещё что-нибудь:)

Но судья должен не только казнить, но и:

Мультиклассовая классификация

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

• На каждое решение заводим отдельный выход у нейронной сети

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

• Используем Cross entropy функцию как функцию ошибок:

• Softmax как активацию на последнем слое:

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

У нас очень справедливый судья

Но выносить приговор это только лишь одна из сотен его обязанностей.

И их все нужно натренировать, скучно.. давайте дальше

Распознавание изображений

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

• Начнём с цифр и попробуем использовать архитектуру предидущей сети

• На вход подаём значения пикселей (28x28)

http://yann.lecun.com/exdb/mnist/

Дополнение (Augmenting)

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

• Сделаем картинки с различным сдвигом, растяжением и поворотом

• Добавим случайные шумы• Качество на тестовом наборе увеличится с 97%• Но дальше уже не улучшается

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

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

Посмотреть в динамике можно здесь: http://cs.stanford.edu/people/karpathy/convnetjs/demo/mnist.html

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

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

Рекуррентные нейронные сети

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

Аппроксимируют любую последовательность

Рекуррентные нейронные сети

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

LSTM

Двунаправленные реккурентные нейронные сети

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

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

Multi-task learning

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

Обучение без учителя

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

Auto encoder

Обучение с подкреплением

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

Q-Learning

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

Transfer learning

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

• Обучаем на больших данных• Выкидываем последний слой• Обучаем на небольшом объёме

данных, с хорошей точностью

Распознавание речи

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

• Kaldi (http://kaldi.sourceforge.net/)• Eesen (https://github.com/yajiemiao/eesen)

Беспилотные автомобили

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

https://www.ted.com/talks/chris_urmson_how_a_driverless_car_sees_the_road

Библиотеки

© 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/)

• Плодятся как грибы после дождя:)

Заключение: о будущем искусственного

интеллекта

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

Спасибо!

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

Все вопросы можно задать по адресу [email protected]