Slide 1

Slide 1 text

Машинное обучение для iOS Александр Сосновщенко
 14.11.2015

Slide 2

Slide 2 text

Машинное обучение это … • когда непонятно, как написать алгоритм, но есть много/достаточно данных. • автоматическое создание программы из данных. • другие формулировки: открытие закона природы, создание мат. модели, оптимизация функции… 2

Slide 3

Slide 3 text

Где применяется Здоровье Компьютерное зрение Распознавание речи Общение с людьми http://thenextweb.com/wp-content/blogs.dir/1/files/2015/02/Screen- Shot-2015-02-09-at-2.22.45-PM.png http://www.wiseyak.com/wp-content/uploads/2015/06/internet-of-things-for-health-art.png http://s.appleinsider.ru/2015/04/siri.jpg

Slide 4

Slide 4 text

Виды машинного обучения 4 • С учителем (Supervised Learning): классификация, регрессия • Без учителя (Unsupervised Learning): кластеризация • С подкреплением (Reinforcement Learning): поиск стратегии http://totallydogtraining.com/wp-content/uploads/2013/09/ positive-reinforcement.jpg http:// www.interiorcommunityservices.bc.ca/ clients/25/assets/320/Supervised %20Access.bmp https://cutelypoisoned.files.wordpress.com/2011/08/ bad-kid-fire.jpg

Slide 5

Slide 5 text

Классификация 1. Обучение 2. Классификация ML ML

Slide 6

Slide 6 text

Кластеризация ML

Slide 7

Slide 7 text

Практические примеры 7

Slide 8

Slide 8 text

Новый стартап в сфере wearables ремешки-ошейники для Apple Watch http://www.justawatch.com/these-cats-have-the-apple-watch-even-if-you-dont/ 8

Slide 9

Slide 9 text

Задача 1 По данным гироскопа и акселерометра определить тип физической активности пользователя (например: стоит, идет, бежит, трясет телефон, прыгает, поднимается по ступенькам, спускается по ступенькам и т.д.). 9

Slide 10

Slide 10 text

Данные Сигнал с акселерометра и гироскопа. Фиксированный набор типов активности с привязкой ко времени. Вход алгоритма: Два трехмерных временных ряда фиксированной длинны. Выход алгоритма: Тип активности в каждый из этих отрезков времени. 10

Slide 11

Slide 11 text

Выделение признаков из временного ряда 1. Делим временной ряд на отрезки одинаковой длинны. 2. Для каждого отрезка считаем магнитуду колебаний (3D →1D). 3. Считаем среднее, среднеквадратическое отклонение, максимум, минимум, медиану, спектр Фурье ... 4. На полученных признаках обучаем классификатор. 11 1 2 3 4

Slide 12

Slide 12 text

Дерево решений 12

Slide 13

Slide 13 text

Дерево решений http://habrahabr.ru/post/215453/

Slide 14

Slide 14 text

Дерево решений • Точность ок. 50% 14

Slide 15

Slide 15 text

Random Forest • Случайный лес - это ансамбль деревьев решений, построенных на случайных подпространствах признаков. • Конечный результат определяется методом усреднения. 15 http://www.rai77.ru/images/smilies/zmeia.jpg https://en.wikipedia.org/wiki/Bootstrap_aggregating

Slide 16

Slide 16 text

Случайный лес • Точность ок. 75% 16

Slide 17

Slide 17 text

17 Недо- и переобучение http://www.researchgate.net/post/How_to_Avoid_Overfitting

Slide 18

Slide 18 text

Попытка №2: kNN + DTW • Данные для обучения: Короткие временные ряды и метки типов активностей к ним. • Обучаем kNN, используя DTW как функцию расстояния. • Точность ок. 90% 18 nbviewer.ipython.org/github/markdregan/K-Nearest-Neighbors-with-Dynamic-Time-Warping/blob/master/K_Nearest_Neighbor_Dynamic_Time_Warping.ipynb

Slide 19

Slide 19 text

Метрики точности 19 nbviewer.ipython.org/github/markdregan/K-Nearest-Neighbors-with-Dynamic-Time-Warping/blob/master/K_Nearest_Neighbor_Dynamic_Time_Warping.ipynb

Slide 20

Slide 20 text

Задача 2 20 Написать чат-бота для игры в ассоциации. • Вход алгоритма: Слово. • Выход алгоритма: Слова близкие по смыслу и степень близости. http://sociation.org/static/img/associations.png

Slide 21

Slide 21 text

Модель: Word2Vec • Корпус текстов -> векторное пространство. • Вектор = слово или понятие • cos = семантическая близость слов (или степень их смысловой непохожести). 21 http://www.programering.com/a/MTNxIzMwATk.html

Slide 22

Slide 22 text

Интересные свойства языковых векторных пространств • Iraq - Violence = Jordan • Human - Animal = Ethics • President - Power = Prime Minister • Library - Books = Hall • Rome - Italy = Beijing - China • king - queen = man - woman http://deeplearning4j.org/word2vec.html

Slide 23

Slide 23 text

Word2Vec http://deeplearning4j.org/word2vec.html 23

Slide 24

Slide 24 text

Проблемы 1. Хороший корпус 2. Словоформы русского 3. Омонимы 4. Скорость обучения 5. Память Решения 1. … 2. … 3. Word2Phrase 4. Обучать на компьютере 5. Отсечь редкие слова

Slide 25

Slide 25 text

Будущее здесь: Deep Learning 25

Slide 26

Slide 26 text

[4] Visual-Semantic Embeddings 26

Slide 27

Slide 27 text

[4]

Slide 28

Slide 28 text

Deep Dream

Slide 29

Slide 29 text

https://github.com/jcjohnson/neural-style

Slide 30

Slide 30 text

Deep Learning • Библиотеки, “совместимые” с iOS: • Torch, Caffe, TensorFlow, ConvNetJS • Ускорение на видеокартах Nvidia CUDA. • Big Data. • Model Zoo: • Torch • Caffe 30 http://devblogs.nvidia.com/parallelforall/wp-content/uploads/sites/3/2014/09/nn_example-624x218.png

Slide 31

Slide 31 text

Цикл разработки 1. Подготовительный этап. 2. Создание прототипа. 3. "Полевые испытания". 4. Портирование под мобильную платформу. 31

Slide 32

Slide 32 text

1. Подготовительный этап 0. Если можете не использовать машинное обучение - не используйте его. 1. Поищите готовое решение, работающее на устройстве. 2. Поищите готовое решение, работающее на сервере. 3. Если 0..2 не устраивают, нужно писать свое решение. 4. Обзор публикаций. 5. Поиск или создание обучающего набора данных. 32

Slide 33

Slide 33 text

2. Создание прототипа 0. TDD. 1. Начните с простых классических моделей. Часто простые модели работают лучше сложных. 2. Обучающая, тестовая и проверочная выборки. Переобучение. Data augmentation. Метрики. 4. Прототипирование: R, Python (SciPy, scikit-learn), Matlab. 5. Если точность сразу > 90%, вы точно что-то делаете неправильно. 6. Ансамбли моделей могут работать лучше, чем каждая из моделей по-отдельности. Однако, чем сложнее модель, тем она более ресурсоемка. 33

Slide 34

Slide 34 text

3. "Полевые испытания" 1. Протестируйте работу вашей модели в максимально разнообразных условиях. 2. Бенчмарки. 34

Slide 35

Slide 35 text

4. Портирование прототипа под мобильную платформу 1. Ускорение работы: • C/C++ • GPGPU (CUDA, OpenGL ES, Render Script, OpenCL, Metal). 2. Используйте готовые библиотеки с большим сообществом (OpenCV, Shark, … ). 35

Slide 36

Slide 36 text

Спасибо за внимание. Вопросы?

Slide 37

Slide 37 text

Если вы решили освоить машинное обучение • Python, R, Matlab/Octave, C++, Java/Scala, Lua. • Статистика, теорвер, линейная алгебра, ЦОС. • alexsosn.github.io: Список библиотек и API. • Курсы: ШАД “Машинное обучение”, ВШЭ “Эконометрика”, MIT: The Analytics Edge. 37

Slide 38

Slide 38 text

Книги • Программируем коллективный разум. Тоби Сегаран • Machine Learning: An Algorithmic Perspective. Stephen Marsland • Наглядная статистика. Используем R!