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

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

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

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

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

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

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

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

Tech Talks @NSU

October 13, 2015
Tweet

More Decks by Tech Talks @NSU

Other Decks in Education

Transcript

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

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

    [email protected] Дмитрий Анатольевич принял бразды правления И решил он реформировать полицию и суды В этот раз точно должно получится, так как на помощь прийдут глубокие нейронные сети Дал поручение создать киборгов судей-полицейских Из бюджета выделили 100 миллиардов Тендер выиграла компания «НаноИнновацииПлюс» Деньги куда-то исчезли и осталось всего 100 тысяч Ответственным за спасение ситуации назначили программиста самоучку Небоходова…
  3. Периметр работ © 2015 API.AI | Михаил Ермоленко, [email protected]

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

    Ермоленко, [email protected] • Убийство (Критерий 1) • Грабеж (Критерий 2) • Повторное правонарушение (Критерий 3) Свойства правонарушения:
  5. Принятие решений: казнить ли преступника? © 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, то да
  6. Принятие решений: казнить ли преступника? © 2015 API.AI | Михаил

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

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

    Михаил Ермоленко, [email protected] 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
  9. И наступило счастье © 2015 API.AI | Михаил Ермоленко, [email protected]

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

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

    • Малейшее изменение в данных может привести к кардинальному изменению ответа (с 0 на 1 и наоборот) => не предсказуемость • Многие промежуточные характеристики не бинарны и могут иметь промежуточные значения
  12. Целевая функция ошибки © 2015 API.AI | Михаил Ермоленко, [email protected]

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

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

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

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

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

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

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

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

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

    справедливый судья Но выносить приговор это только лишь одна из сотен его обязанностей. И их все нужно натренировать, скучно.. давайте дальше
  22. Распознавание изображений © 2015 API.AI | Михаил Ермоленко, [email protected]

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

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

    Посмотреть в динамике можно здесь: http://cs.stanford.edu/people/karpathy/convnetjs/demo/mnist.html
  25. 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
  26. Transfer learning © 2015 API.AI | Михаил Ермоленко, [email protected]

    Обучаем на больших данных • Выкидываем последний слой • Обучаем на небольшом объёме данных, с хорошей точностью
  27. Распознавание речи © 2015 API.AI | Михаил Ермоленко, [email protected]

    Kaldi (http://kaldi.sourceforge.net/) • Eesen (https://github.com/yajiemiao/eesen)
  28. Библиотеки © 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/) • Плодятся как грибы после дождя:)