Введение в глубинное обучение

Из статьи вы узнаете, что такое глубинное обучение. Также статья содержит множество ресурсов, которые вы сможете использовать для освоения этой области.

Введение в глубинное обучение

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

Одним из самых впечатляющих достижений этого года был AlphaGo, обыгравший лучшего в мире игрока в го. Кроме как в го, машины обошли людей и в других играх: шашки, шахматы, реверси, и джеопарди.

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

Очевидно, глубинное обучение еще далеко от совершенства, но оно уже близко к тому, чтобы приносить коммерческую пользу. Например, эти самоуправляемые машины. Известные компании вроде Google, Tesla и Uber уже пробуют внедрить автономные автомобили на улицы города.

Введение в глубинное обучение

Ford предсказывает значительное увеличение доли беспилотных транспортных средств уже к 2021 году. Правительство США также успело разработать для них свод правил безопасности.

Что такое глубинное обучение?

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

Введение в глубинное обучение

Внешний круг – это искусственный интеллект в целом (например, компьютеры). Чуть дальше – машинное обучение, а совсем в центре – глубинное обучение и искусственные нейросети.

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

Создатели первой нейросети вдохновлялись структурой коры головного мозга. Базовый уровень сети, перцептрон, является по сути математическим аналогом биологического нейрона. И, как и в головном мозге, в нейросети могут появляться пересечённые друг с другом перцептроны.

Первый слой нейросети называется входным. Каждый узел этого слоя получает на вход какую-либо информацию и передает ее на последующие узлы в других слоях. Чаще всего между узлами одного слоя нет связей, а последний узел цепочки выводит результат работы нейросети.

Узлы посередине называются скрытыми, поскольку не имеют соединений с внешним миром, как узлы вывода и ввода. Они вызываются только в случае активации предыдущих слоев.

Введение в глубинное обучение

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

Если рассматривать машинное обучение как ответвление или вариант работы искусственного интеллекта, то глубинное обучение – это специализированный тип такого ответвления.

Машинное обучение использует компьютерный интеллект, который не дает ответа сразу. Вместо этого код будет запускаться на тестовых данных и, исходя из правильности их результатов, корректировать свой ход. Для успешности этого процесса обычно используются разнообразные техники, специальное программное обеспечение и информатика, описывающая статические методы и линейную алгебру.

Методы глубинного обучения

Методы глубинного обучения делятся на два основных типа:

  • Обучение с учителем
  • Обучение без учителя

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

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

Второй же способ не подразумевает заранее заготовленных ответов и алгоритмов работы. Он направлен на выявление в данных скрытых шаблонов. Обычно его используют для кластеризации и ассоциативных задач, например для группировки клиентов по поведению. «С этим также выбирают» на Amazon – вариант ассоциативной задачи.

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

Важность глубинного обучения

Введение в глубинное обучение

Компьютеры уже давно используют технологии распознавания определенных черт на изображении. Однако результаты были далеки от успеха. Компьютерное зрение оказало на глубинное обучение невероятное влияние. Именно эти две техники в данный момент решают все задачи на распознавание.

В частности, в распознавании лиц на фотографиях с помощью глубинного обучения преуспел Facebook. Это не простое улучшение технологии, а поворотный момент, изменяющий все более ранние представления: «Человек может с вероятностью в 97.53% определить, один ли человек представлен на двух разных фотографиях. Программа, разработанная командой Facebook, может делать это с вероятностью в 97.25% вне зависимости от освещения или того, смотрит ли человек прямо в камеру или повернут к ней боком».

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

Что особенно занимательно – написание общей нейросети для двух абсолютно разных языков не потребовало особенного труда: «Так исторически сложилось, что люди видели Китайский и Английский, как два совершенно разных языка, поэтому и подход к каждому из них требовался различный», - говорит начальник исследовательского центра Baidu, Andrew Ng. «Алгоритмы обучения сейчас настолько обобщены, что вы можете просто обучаться».

Google использует глубинное обучение для управления энергией в дата-центрах компании. Они смогли сократить затраты ресурсов для охлаждения на 40%. Это около 15% повышения эффективности энергопотребления и миллионы долларов экономии.

Микросервисы глубинного изучения

Вот краткий обзор сервисов, связанных с глубинным обучением.

Illustration Tagger. Дополненный Illustration2Vec, этот сервис позволяет отмечать изображения с рейтингом «защищенный», «сомнительный», «опасный», «копирайт» или «общий» для того, чтобы заранее понять содержание картинки.

Классификатор возраста использует технологии анализа фотографии для определения возраста человека. Places 365 Classifier использует заранее натренированную нейросеть в сочетании с базой данных за 2016 год для определения местоположение человека по фотографии (например, деревня, аптека, номер гостиной, горы и так далее). Не стоит забывать и о InceptionNet – прямом наследнике InceptionNet от Google. Эта нейросеть на основе анализа фотографии машины выдает пять лучших моделей, соответствующих этому автомобилю.

Open Source фреймворки о глубинном обучении

Введение в глубинное обучение

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

DeepLearning4j(DL4J):

  • Основана на JVM
  • Свободное распространение
  • Интегрируется с Hadoop и Spark

Theano:

  • Популярна на Academia
  • Сказочно простая
  • Редактируется на Python и Numpy

Torch:

  • Основана на Lua
  • Домашняя версия используется компаниями Facebook и Twitter
  • Содержит заранее натренированные модели

TensowFlow:

  • Дополнение для Theano от Google
  • Редактируется на Python и Numpy
  • Зачастую применяется для решения определенного спектра проблем

Caffe:

  • Не общего назначения. Основной упор на машинное зрение
  • Редактируется на C++
  • Есть интерфейс на Python

Онлайн-курсы по глубинному обучению

Google и Udacity объединились для создания бесплатного курса по глубинному обучению, части Курса Машинного Обучения Udacity. Эту программу ведут опытные разработчики, желающие развить такую область, как машинное обучение и, в частности, глубинное обучение.

Другой популярный вариант – курс машинного обучения от Andrew Ng при поддержке Coursera и Стенфорда.

  1. Машинное обучение – Стенфорд от Andrew Ng на Coursera (2010-2014)
  2. Машинное обучение – Caltech от Yaser Abu-Mostafa (2012-2014)
  3. Машинное обучение – Carnegie Mellon от Tom Mitchell (Весна 2011)
  4. Нейросети для машинного обучения – Geoffrey Hinton на Coursera (2012)
  5. Класс по нейросетям – Hugo Larochelle из Université de Sherbrooke (2013

Книги по глубинному обучению

В то время как ресурсы из предыдущей секции опираются на довольно обширную базу знаний, книга «Grokking Deep Learning», наоборот, рассчитана на новичков. Как говорят авторы: «Если вы закончили 11 классов и примерно понимаете, как писать на Python, мы научим вас глубинному обучению».

Популярной альтернативной этой книге является книга с говорящим названием Deep Learning Book. Она особенно хороша тем, что описывает всю ту математику, что будет необходима вам для погружения в эту область.

    1. «Глубинное обучение» от Yoshua Bengio, Ian Goodfellow и Aaron Courville (2015)
  1. «Нейросети и глубинное обучение» от Michael Nielsen (2014)
  2. «Глубинное обучение» от Microsoft Research (2013)
  3. «Туториалы по глубинному обучению» от лаборатории LISA, Университета Монреаля (2015)
  4. «neuraltalk» от Andrej Karpathy
  5. «Введение в генетические алгоритмы»
  6. «Современный подход к искусственному интеллекту»
  7. «Обзор на глубинное обучение и нейросети»

Мало? Вот еще несколько книг по глубинному обучению ;)

Видеоролики и лекции

Deep Learning Simplified – чудесный YouTube-канал. Вот их первое видео:

  1. «Как создать разум» от Ray Kurzweil
  2. «Глубинное обучение, машинное обучение и обучение без учителя» от Andrew Ng
  3. «Последние нововведения в глубинном обучении» от Geoff Hinton
  4. «Ненужная эффективность глубинного обучения» от Yann LeCun
  5. «Образное глубинное обучение» от Yoshua Bengio
  6. «Основные принципы иерархии временной памяти» от Jeff Hawkins
  7. «Обсуждение машинного обучения» (Глубинное обучение) – от Adam Coates (Stanford AI Lab)

Лучшие Github-проекты

Наиболее популярные проекты, команды и туториалы на Github. В скобках указано количество звездочек. Последнее обновление 08.09.2016.

  1. TensorFlow (29622) – компьютеризация информационных графиков для масштабируемого машинного обучения
  2. Caffe (11799) – быстрый фреймворк с открытым исходным кодом, посвященный глубинному обучению
  3. Neural Style (10148) – использование Torch для алгоритмов нейросетей
  4. Deep Dream (9042) – проект команды Google с открытым исходным кодом
  5. Keras (7502) – библиотека по глубинному обучению на Python. Совместима с Theano и TensorFlow
  6. Roc AlphaGo (7170) – независимая студенческая реплика публикации на DeepMind в 2016 году «Овладение игрой Го с помощью глубинного обучения, нейросетей и веточного поиска»
  7. TensorFlow Models (6671) – модели, созданные на TensorFlow
  8. Neural Doodle (6275) – делайте произведения искусства из своих двухбитных болванок с помощью глубинного обучения, генерируйте разнообразные тексты на основе фотографий, переносите стили между изображениями и много-много другого.
  9. CNTK (5975) – набор инструментов для компьютеризации сетей
  10. TensorFlow Examples (5872) – уроки с примерами по TensorFlow для новичков
  11. ConvNet JS (5231) – глубинное обучение на JavaScript. Тренируйтесь в создании конволюционных (или обычных) нейросетей прямо в браузере.
  12. Torch (5133) – Torch7, библиотека по глубинному обучению.

 

Оригинал статьи доступен по ссылке.

 

Комментарии

ВАКАНСИИ

Добавить вакансию
Разработчик C++
Москва, по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ