Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Machine Learning for iOS

Machine Learning for iOS

Alex Sosnovshchenko

November 14, 2015
Tweet

Other Decks in Programming

Transcript

  1. Машинное обучение это … • когда непонятно, как написать алгоритм,

    но есть много/достаточно данных. • автоматическое создание программы из данных. • другие формулировки: открытие закона природы, создание мат. модели, оптимизация функции… 2
  2. Где применяется Здоровье Компьютерное зрение Распознавание речи Общение с людьми

    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
  3. Виды машинного обучения 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
  4. Задача 1 По данным гироскопа и акселерометра определить тип физической

    активности пользователя (например: стоит, идет, бежит, трясет телефон, прыгает, поднимается по ступенькам, спускается по ступенькам и т.д.). 9
  5. Данные Сигнал с акселерометра и гироскопа. Фиксированный набор типов активности

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

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

    построенных на случайных подпространствах признаков. • Конечный результат определяется методом усреднения. 15 http://www.rai77.ru/images/smilies/zmeia.jpg https://en.wikipedia.org/wiki/Bootstrap_aggregating
  8. Попытка №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
  9. Задача 2 20 Написать чат-бота для игры в ассоциации. •

    Вход алгоритма: Слово. • Выход алгоритма: Слова близкие по смыслу и степень близости. http://sociation.org/static/img/associations.png
  10. Модель: Word2Vec • Корпус текстов -> векторное пространство. • Вектор

    = слово или понятие • cos = семантическая близость слов (или степень их смысловой непохожести). 21 http://www.programering.com/a/MTNxIzMwATk.html
  11. Интересные свойства языковых векторных пространств • 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
  12. Проблемы 1. Хороший корпус 2. Словоформы русского 3. Омонимы 4.

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

  14. 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
  15. Цикл разработки 1. Подготовительный этап. 2. Создание прототипа. 3. "Полевые

    испытания". 4. Портирование под мобильную платформу. 31
  16. 1. Подготовительный этап 0. Если можете не использовать машинное обучение

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

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

    C/C++ • GPGPU (CUDA, OpenGL ES, Render Script, OpenCL, Metal). 2. Используйте готовые библиотеки с большим сообществом (OpenCV, Shark, … ). 35
  19. Если вы решили освоить машинное обучение • Python, R, Matlab/Octave,

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

    An Algorithmic Perspective. Stephen Marsland • Наглядная статистика. Используем R!