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

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

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

Михаил Ермоленко (api.ai) рассказывает о Deep Learning.

Будущее уже наступило. Каждый день мы видим новости типа «программа за три дня научилась играть в шахматы на уровне гроссмейстера», «компьютер научился рисовать картины в стиле Ван Гога и сочинять музыку в стиле Баха», «на дорогах общего пользования появились беспилотные автомобили» и т.д. Все эти достижения происходят благодаря искусственным нейронным сетям.

В докладе мы расскажем о следующем:

- Что такое искусственные нейронные сети?
- Как и почему они работают?
- Примеры архитектур нейронных сетей для решения конкретных задач (распознавание образов, голоса, перевод текста и т.д.)
- Какие есть сложности с обучением сетей и может ли компьютер обучаться самостоятельно?
- Планирует ли искусственный интеллект «убить всех человеков» (с)?

Подробности на http://techtalks.nsu.ru

E51d363aa46f4d059d54a15e0bcd8e6f?s=128

Tech Talks @NSU

October 13, 2015
Tweet

Transcript

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

  2. Где применяется Deep learning? © 2015 API.AI | Михаил Ермоленко,

    eko@api.ai • Распознавание (текста, образов, голоса, жестов и т.д.) • Машинный перевод • Биометрия (отпечатки пальцев, голос, лицо) • Медицина (экспресс диагностика, борьба с раком, протезы и т.д.) • Классификация документов (спам, поиск и т.д) • Робототехника (ходьба, управление руками и т.д.) • Беспилотные автомобили • И т.д.
  3. Давным-давно, в далёкой-далёкой галактике... © 2015 API.AI | Михаил Ермоленко,

    eko@api.ai Дмитрий Анатольевич принял бразды правления И решил он реформировать полицию и суды В этот раз точно должно получится, так как на помощь прийдут глубокие нейронные сети Дал поручение создать киборгов судей-полицейских Из бюджета выделили 100 миллиардов Тендер выиграла компания «НаноИнновацииПлюс» Деньги куда-то исчезли и осталось всего 100 тысяч Ответственным за спасение ситуации назначили программиста самоучку Небоходова…
  4. Кодовое название проекта: Судья Дредд © 2015 API.AI | Михаил

    Ермоленко, eko@api.ai
  5. Периметр работ © 2015 API.AI | Михаил Ермоленко, eko@api.ai •

    Зрение • Слух • Понимание • Принятие решение • Действия/движения
  6. Принятие решений: казнить ли преступника? © 2015 API.AI | Михаил

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

    Ермоленко, eko@api.ai 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, то да
  8. Принятие решений: казнить ли преступника? © 2015 API.AI | Михаил

    Ермоленко, eko@api.ai • Совершеннолетний или нет (Критерий 4) • Случайное убийство (Критерий 5) • Самооборона (Критерий 6) • Повторное правонарушение (Критерий 7) • и т.д. и т.п. Какие ещё могут быть свойства: И чем больше свойств, тем сложнее и дольше подбирать коэффициенты
  9. Перцептрон (Perceptron) © 2015 API.AI | Михаил Ермоленко, eko@api.ai от

    лат. perceptio — восприятие
  10. Обучение перцептрона © 2015 API.AI | Михаил Ермоленко, eko@api.ai Метод

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

    Михаил Ермоленко, eko@api.ai 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
  12. И наступило счастье © 2015 API.AI | Михаил Ермоленко, eko@api.ai

    • После обучения система работала отлично, точность 99% • Только добавляй примеров на основе судебной практики • Когда стали подаваться результаты новых дел, то часто даётся неверный ответ • Начали разбираться… перцептрон совсем не умеет обещать, но есть идея! На самом деле нет:
  13. Добавим промежуточные классы © 2015 API.AI | Михаил Ермоленко, eko@api.ai

    • Подбирать коэффициенты руками стало ещё сложнее • А обучение никак не сходится. Как быть? Но:
  14. В чем причина? © 2015 API.AI | Михаил Ермоленко, eko@api.ai

    • Малейшее изменение в данных может привести к кардинальному изменению ответа (с 0 на 1 и наоборот) => не предсказуемость • Многие промежуточные характеристики не бинарны и могут иметь промежуточные значения
  15. Сейчас начнётся посложнее.. © 2015 API.AI | Михаил Ермоленко, eko@api.ai

  16. Функции активации © 2015 API.AI | Михаил Ермоленко, eko@api.ai

  17. Целевая функция ошибки © 2015 API.AI | Михаил Ермоленко, eko@api.ai

    • C введением сигмоида значения 0 или 1 можно получить только при +/- бесконечности • У нас много примеров и нужно придумать способ, который бы находил такие веса, что бы всё примеры были максимально близко к желаемому результату • Решение: метод наименьших квадратов:
  18. Градиентный спуск (SGD) © 2015 API.AI | Михаил Ермоленко, eko@api.ai

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

    eko@api.ai
  20. Глубокая нейронная сеть © 2015 API.AI | Михаил Ермоленко, eko@api.ai

    Скрытые слои Входной слой Выход
  21. Стало на много лучше © 2015 API.AI | Михаил Ермоленко,

    eko@api.ai • После обучения система работала отлично, точность 99,8% • На неизвестных примерах точность выросла до 85% • Уж очень долго тренируется, тяжело экспериментировать • Хотелось бы повысить точность Но есть проблемы:
  22. Как мы можем ускорить тренировку? (1/3) © 2015 API.AI |

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

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

    Михаил Ермоленко, eko@api.ai • Использовать улучшенные версии градиентного спуска (Adagrad, RMSprop, Adam) • Уменьшить размер слоев • Попробовать ReLU, как функцию активации (быстрее считается и для ряда задач лучше точность) • Почитать, что пишут умные люди, ещё много тонких моментов
  25. Повышение точности (1/2) © 2015 API.AI | Михаил Ермоленко, eko@api.ai

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

    • Критерий выхода из обучения • Использовать Dropout или Batch normalization Борьба с переобучением:
  27. И наступило счастье © 2015 API.AI | Михаил Ермоленко, eko@api.ai

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

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

    справедливый судья Но выносить приговор это только лишь одна из сотен его обязанностей. И их все нужно натренировать, скучно.. давайте дальше
  30. Распознавание изображений © 2015 API.AI | Михаил Ермоленко, eko@api.ai •

    Начнём с цифр и попробуем использовать архитектуру предидущей сети • На вход подаём значения пикселей (28x28) http://yann.lecun.com/exdb/mnist/
  31. Дополнение (Augmenting) © 2015 API.AI | Михаил Ермоленко, eko@api.ai •

    Сделаем картинки с различным сдвигом, растяжением и поворотом • Добавим случайные шумы • Качество на тестовом наборе увеличится с 97% • Но дальше уже не улучшается
  32. Сверточные нейронные сети © 2015 API.AI | Михаил Ермоленко, eko@api.ai

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

  34. Рекуррентные нейронные сети © 2015 API.AI | Михаил Ермоленко, eko@api.ai

    Аппроксимируют любую последовательность
  35. Рекуррентные нейронные сети © 2015 API.AI | Михаил Ермоленко, eko@api.ai

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

    eko@api.ai
  37. Memory networks © 2015 API.AI | Михаил Ермоленко, eko@api.ai •

    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
  38. Multi-task learning © 2015 API.AI | Михаил Ермоленко, eko@api.ai

  39. Обучение без учителя © 2015 API.AI | Михаил Ермоленко, eko@api.ai

    Auto encoder
  40. Обучение с подкреплением © 2015 API.AI | Михаил Ермоленко, eko@api.ai

    Q-Learning http://arxiv.org/pdf/1312.5602v1.pdf
  41. Transfer learning © 2015 API.AI | Михаил Ермоленко, eko@api.ai •

    Обучаем на больших данных • Выкидываем последний слой • Обучаем на небольшом объёме данных, с хорошей точностью
  42. Распознавание речи © 2015 API.AI | Михаил Ермоленко, eko@api.ai •

    Kaldi (http://kaldi.sourceforge.net/) • Eesen (https://github.com/yajiemiao/eesen)
  43. Беспилотные автомобили © 2015 API.AI | Михаил Ермоленко, eko@api.ai https://www.ted.com/talks/

    chris_urmson_how_a_driverless_car_sees_the_road
  44. Библиотеки © 2015 API.AI | Михаил Ермоленко, eko@api.ai • 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/) • Плодятся как грибы после дождя:)
  45. Заключение: о будущем искусственного интеллекта © 2015 API.AI | Михаил

    Ермоленко, eko@api.ai
  46. Спасибо! © 2015 API.AI | Михаил Ермоленко, eko@api.ai Все вопросы

    можно задать по адресу eko@api.ai