Андрей Фильченков - Погружение в глубокие нейронные...

38
Погружение в глубокие нейронные сети за 20 минут Андрей Фильченков к.ф.-м.н., доц., рук. иссл. гр. МО каф. КТ, МНЛ КТ Hackathon по чатботам и AI 30 июля 2016, СПб

Transcript of Андрей Фильченков - Погружение в глубокие нейронные...

Page 1: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

Погружение в глубокие нейронные сети

за 20 минутАндрей Фильченков

к.ф.-м.н., доц., рук. иссл. гр. МОкаф. КТ, МНЛ КТ

Hackathon по чатботам и AI30 июля 2016, СПб

Page 2: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

2 / 37

Что такое нейронная сеть и какие задачи она решаетКак устроена глубокая нейронная сетьPrisma и другие нашумевшие примененияГлубокие сети для чатботовГде научиться глубоким нейронным сетям

План выступления

Погружение в глубокие нейронные сети за 20 минут

Page 3: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

3 / 37

Что такое нейронная сеть и какие задачи она решаетКак устроена глубокая нейронная сетьPrisma и другие нашумевшие примененияГлубокие сети для чатботовГде научиться глубоким нейронным сетям

План

Погружение в глубокие нейронные сети за 20 минут

Page 4: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

4 / 37

Глубокая нейронная сетьГлубокая сетьГлубинная (нейронная) сетьDeep learningНейронная сетьИскусственная нейронная сеть

Несколько слов о терминологии

Погружение в глубокие нейронные сети за 20 минут

Page 5: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

5 / 37

Глубокая нейронная сеть:Семейство математических алгоритмовСлабо связана с нейробиологиейОчень сильно связана с машинным обучениемПолучила популярность примерно в 2012 годуОт обычных нейронных сетей отличается числом скрытых слоев (больше двух)

Что же такое глубокая нейронная сеть?

Погружение в глубокие нейронные сети за 20 минут

Page 6: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

6 / 37

Источники знаний для интеллектуальной системыЭкспертынужно правильно опросить и правильно занестиДанныенужно правильно обработать: нужны алгоритмы машинного обучения

Откуда берутся знания

Погружение в глубокие нейронные сети за 20 минут

Page 7: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

7 / 37

Алгоритмы, у которых качество решения задачи повышается с опытомНаиболее популярная задача — задача предсказанияАлгоритмам нужны данные и (в предсказании) правильные ответы (метки)При обучении таких алгоритмов минимизируются ошибка / максимизируется степень похожести на правильный ответ

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

Погружение в глубокие нейронные сети за 20 минут

Page 8: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

8 / 37

Все объекты описываются вектором признаков. Объект становится точкой в многомерном пространстве.

Векторное представление объектов

Погружение в глубокие нейронные сети за 20 минут

Page 9: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

9 / 37

Линейная разделяющая поверхность

Погружение в глубокие нейронные сети за 20 минут

Линейная поверхность в виде нейрона

Page 10: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

10 / 37

Однако так бывает не всегда

Погружение в глубокие нейронные сети за 20 минут

Page 11: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

11 / 37

Многослойная нейронная сеть

Погружение в глубокие нейронные сети за 20 минут

Просто постоим композицию нейронов (как функцию)

Page 12: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

12 / 37

Что такое нейронная сеть и какие задачи она решаетКак устроена глубокая нейронная сетьPrisma и другие нашумевшие примененияГлубокие сети для чатботовГде научиться глубоким нейронным сетям

План

Погружение в глубокие нейронные сети за 20 минут

Page 13: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

13 / 37

Огромное множество архитектурАлгоритмы обучения отличаются от обычного обучения нейронной сети (backpropogation), но не радикальноСуществует множество эвристических приемов, техник и методов для построения и обучения глубоких сетей

Современные глубокие сети

Погружение в глубокие нейронные сети за 20 минут

Page 14: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

14 / 37

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

Погружение в глубокие нейронные сети за 20 минут

LeCun, Yann, et al. "Gradient-based learning applied to document recognition." Proceedings of the IEEE 86.11 (1998): 2278-2324.

Szegedy, Christian, et al. "Going deeper with convolutions." arXiv preprint arXiv:1409.4842 (2014).

Page 15: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

15 / 37

Визуализация слоев

Погружение в глубокие нейронные сети за 20 минут

Page 16: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

16 / 37

Автоэнкодеры, кодеры и декодеры

Погружение в глубокие нейронные сети за 20 минут

Элементы архитектуры, в котором в промежуточном слое меньше элементов, чем в соседних

Слева — кодерСправа — декодер

Page 17: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

17 / 37

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

Погружение в глубокие нейронные сети за 20 минут

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

Page 18: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

18 / 37

Long Short-Term Memory (LSTM)

Погружение в глубокие нейронные сети за 20 минут

Специальный подвид RNN, который умеет неплохо представлять сильно разделенные (например, во времени) зависимости

Page 19: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

19 / 37

Что такое нейронная сеть и какие задачи она решаетКак устроена глубокая нейронная сетьPrisma и другие нашумевшие примененияГлубокие сети для чатботовГде научиться глубоким нейронным сетям

План

Погружение в глубокие нейронные сети за 20 минут

Page 20: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

20 / 37

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

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

Погружение в глубокие нейронные сети за 20 минут

Page 21: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

21 / 37

Развернем сеть, и пусть она по меткам предсказывает изображения

Генерация изображений

Погружение в глубокие нейронные сети за 20 минут

Dosovitskiy, A., Tobias Springenberg, J., & Brox, T. (2015). Learning to generate chairs with convolutional neural networks. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (pp. 1538-1546).

Page 22: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

22 / 37

Будем сохранять «внутреннее представление» изображения (матрицы Грэхема на конволюционных слоях)

Затем, инициализировав новую сеть случайным образом, будем обучать ее до похожести ее конволюционных слоя с сохраненными.

Генерация текстур

Погружение в глубокие нейронные сети за 20 минут

Gatys, L., Ecker, A. S., & Bethge, M. (2015). Texture synthesis using convolutional neural networks. In Advances in Neural Information Processing Systems (pp. 262-270).

Page 23: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

23 / 37

Стиль = текстура. Изображение = контент и представлено последним конволюционным слоем. Будем обучать изображение, похожее и на стиль, и на контент.

Стилизация изображений

Погружение в глубокие нейронные сети за 20 минут

Gatys, L. A., Ecker, A. S., & Bethge, M. (2015). A neural algorithm of artistic style. arXiv preprint arXiv:1508.06576.

Page 24: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

24 / 37

В 2015 создан DeetArt: https://deepart.io/Они в явном виде использовали описанный алгоритм

В июне 2016 создана Prisma, они

завернули это в мобильное приложение,

оптимизировали и

вместо подгрузки «стилевых» картинок есть

фильтрыю

DeepArt и Prisma

Погружение в глубокие нейронные сети за 20 минут

Page 25: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

25 / 37

В июне 2016 два сотрудника Яндекса записывают альбом в стиле Летова:https://music.yandex.ru/artist/4445922

“Другая мода А в глазах твоих нет слез

Твоя свобода Ветер дунул и унес”

«Мы будем драться»

Основано на нейропоэте: https://yandex.ru/autopoet

Нейронная оборона

Погружение в глубокие нейронные сети за 20 минут

Page 26: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

26 / 37

Что такое нейронная сеть и какие задачи она решаетКак устроена глубокая нейронная сетьPrisma и другие нашумевшие примененияГлубокие сети для чатботовГде научиться глубоким нейронным сетям

План

Погружение в глубокие нейронные сети за 20 минут

Page 27: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

27 / 37

Строим сеть машинного перевода из запросов в ответы (Ritter et al., 2011)Sequence to sequence model (Cho et al., 2014)

Seq2Seq with attention (Bahdanau et al., 2014)

Основная модель

Погружение в глубокие нейронные сети за 20 минут

Ritter, A., Clark, S., & Etzioni, O. (2011, July). Named entity recognition in tweets: an experimental study. In Proceedings of the Conference on Empirical Methods in Natural Language Processing (pp. 1524-1534). Association for Computational Linguistics.Cho, K., Van Merriënboer, B., Gulcehre, C., Bahdanau, D., Bougares, F., Schwenk, H., & Bengio, Y. (2014). Learning phrase representations using RNN encoder-decoder for statistical machine translation. arXiv preprint arXiv:1406.1078.Bahdanau, D., Cho, K., & Bengio, Y. (2014). Neural machine translation by jointly learning to align and translate. arXiv preprint arXiv:1409.0473.

Page 28: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

28 / 37

Извлечение vs генерацияИзвестны ли заранее ответы?Короткие сессии vs длинные сессииНесколько вопросов или беседаЗакрытые vs открытыеФиксирована ли тема беседы?

Типы моделей

Погружение в глубокие нейронные сети за 20 минут

Page 29: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

29 / 37

Большой успех, хорошо развито, можно написать самомуПример: Google Smart Reply, генерация автоматических ответов на письма

Поисковая закрытая ответная модель

Погружение в глубокие нейронные сети за 20 минут

Kannan, A., Kurach, K., Ravi, S., Kaufmann, T., Tomkins, A., Miklos, B., Corrado, G., Lukács, L., Ganea, M., Young, P. and Ramavajjala, V., 2016. Smart Reply: Automated Response Suggestion for Email}. In Proceedings of the ACM SIGKDD Conference on Knowledge Discovery and Data Mining (KDD)} (Vol. 36, pp. 495-503).

Page 30: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

30 / 37

Невозможно построить соответствующий корпус для систем, основанных на поиске; они могут быть только для генеративных систем, но это почти что сильный искусственный интеллект.

Открытые системы

Погружение в глубокие нейронные сети за 20 минут

Page 31: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

31 / 37

Длинную сессию можно рассмотреть как набор коротких сессий для закрытых систем.В открытых системах поддерживать долгую беседу очень сложно

Длинные сессии

Погружение в глубокие нейронные сети за 20 минут

Serban, I. V., Sordoni, A., Bengio, Y., Courville, A., & Pineau, J. (2016, March). Building end-to-end dialogue systems using generative hierarchical neural network models. In Proceedings of the 30th AAAI Conference on Artificial Intelligence (AAAI-16).

Page 32: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

32 / 37

Проблемы:Отсутствие знанийПроблемы с построением языковой моделиОтсутствие модели себя и интенционности

Генеративные модели

Погружение в глубокие нейронные сети за 20 минут

Page 33: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

33 / 37

Что такое нейронная сеть и какие задачи она решаетКак устроена глубокая нейронная сетьPrisma и другие нашумевшие примененияГлубокие сети для чатботовГде научиться глубоким нейронным сетям

План

Погружение в глубокие нейронные сети за 20 минут

Page 34: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

34 / 37

Курс по глубоким сетям от CS центра (только что закончился):http://compsciclub.ru/courses/deep-learning/2016-summer/Курс по Data mining (с 8 лекции будут нейронные сети) от Mail.ru Group:https://www.youtube.com/playlist?list=PLrCZzMib1e9pXgyJ8Y9Io4AocGy66pj1X

Курсы и лекции (на русском)

Погружение в глубокие нейронные сети за 20 минут

Page 35: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

35 / 37

Курс по глубоким сетям от Google:https://www.udacity.com/course/deep-learning--udКурс по глубоким сетям от Nando de Freitas в Oxford:https://www.youtube.com/watch?v=dV80NAlEins&list=PLE6Wd9FR--EfW8dtjAuPoTuPcqmOV53Fu

Курсы и лекции (на английском)

Погружение в глубокие нейронные сети за 20 минут

Page 36: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

36 / 37

Главный сайт про глубокое обучение:http://deeplearning.net/Паблик в VK по глубокому обучению:https://vk.com/deeplearningКороткая обзорная лекция Жени Путина про глубокие сети:https://www.youtube.com/watch?v=bicXInoeLG4«Поковыряться» в нейронной сети и посмотреть на то, как она обучается:http://playground.tensorflow.org/

Полезные ссылки

Погружение в глубокие нейронные сети за 20 минут

Page 37: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

37 / 37

Для Python:Theano, TensorFlow, Caffe, Pylearn2, DeepnetДля C:TorchДля C++:Caffe, nnForge, CXXNET, Cuda-conventДля Matlab:Caffe, DeepLearningToolbox, Deepmat, Cuda CNN

Библиотеки

Погружение в глубокие нейронные сети за 20 минут

Page 38: Андрей Фильченков - Погружение в глубокие нейронные сети за 20 минут - Muzis Hackathon

Спасибо! Вопросы?

Андрей Фильченков[email protected]

Hackathon по чатботам и AI30 июля 2016, СПб