Anatoly Levenchuk (ailev) wrote,
Anatoly Levenchuk
ailev

Categories:

Лес за деревьями

Есть два уровня, на котором можно осознавать происходящее в deep learning:
-- от низкоуровневого "машинного кода", механизма работы backpropagation и особенностей ReLU в хитрых ситуациях.
-- от высокоуровневого разбирательства с весьма и весьма нетрадиционной парадигмы работы со знанием (инженерия обучения вместо инженерии знания), где прямо сейчас идёт что-то типа эпохи больших географических открытий.

Когда я читаю всякие "хабрахабры" типа вот этих "11 строчек на Python" с утверждениями "я лучше всего разбираюсь, когда пишу код", то очень хочется заметить: изучением листиков деревья не освоишь, изучением деревьев леса не заметишь. Нужно не только "снизу вверх" эту предметную область осваивать, но и "сверху вниз" -- от самой смены парадигмы "программирования" на "обучение", и на ломку представлений (ага, ломку привычных программистских representations -- у нас же representation learning).

Дальше текст написан для разбирающихся в предмете, просто подчеркнуть происходящее на верхнем уровне, отвлечь от текучки хотя бы на несколько минут для стратегирования. Не слишком разбирающимся можно предложить либо погуглить встречающиеся тут слова, либо тяжело вздохнуть и начать разбираться с листиками типа "нейросеть в 11 строчек на Python" -- http://habrahabr.ru/post/271563/ (и заканчивать тем, как именно ELU позволяет ускорять вычисления при одновременном повышении их результативности по сравнению с RuLU -- http://arxiv.org/abs/1511.07289, типичная работа уровня "машинного кода". Это так же важно, как архитектура процессора: все помнят, что на заре вычислительной техники процессоров были десятки и сотни разных архитектур, ассемблеров соответственно. К нейронным сеткам сегодня это тоже в полной мере относится).

Вот только некоторые текущие решаемые проблемы:
-- unsupervising learning (нет размеченных данных для обучения): ещё пару лет это казалось главным направлением, сейчас откатились и собираются с силами. Гранит этой науки пока больше обламывает всем зубы, чем даёт себя погрызть.
-- one shot learning (обучение на одном примере, максимум нескольких штуках). Главная мотивация -- "если человеческий мозг это может, то мы принципиально можем сделать алгоритм, который тоже это сможет". Тоненький ручеёк работ тут течёт, хотя особых прорывов и нет.
-- transfer learning (учиться на одном, доучиваться и адаптироваться на другом). Этим занимаются все, кому не лень. А кому лень, тоже занимаются этим: с нуля каждый раз учить сетку ещё больше лень. Имён у этого много (metalearning, sharing of statistical strenghth, learning of learning), нюансов и школ хватает, рецептов и тонкостей хоть отбавляй, главная инженерная проблема -- модульность знаний -- именно тут.
-- end-to-end learning (нет традиционных программируемых обработок между входом и выходом),
-- life long learning (доучиваемся на каждом новом примере по ходу использования), с потоками данных с каких-нибудь датчиков самое оно.
-- learning как совокупность training и inference (выучивание и использование выученного), это различение потребовалось NVIDIA, чтобы продавать не слишком мощное железо для робототехники: учить новую сетку на нём плохо, зато можно отлично использовать выученные модели -- использование занимает в разы, разы и разы меньше вычислений, чем обучение.
-- reinforcement learning, обучение многошаговым действиям, эксперименты в мире.
-- ... их таких разных ещё много. Это я даже не по литературе, а просто навскидку из головы. Основная идея тут: многоликость новой парадигмы.

Интересно то, что парадигма learning это необязательно deep learning, просто максимум прорывов идёт сейчас именно в deep learning. Чтобы с высоты птичьего полёта взглянуть на другие виды обучения (эволюционные алгоритмы, байесовская статистика, символические вычисления/логика, поиск аналогий), рекомендую науч-поп книгу http://www.amazon.com/dp/0465065708/ (я её давно рекомендую, но за это время книжка в Амазоне успела стать №1 бестселлером в разделе Mathematical & Statistical Software).

В самом deep learning, если отвлечься от всех разнообразностей разных learning, много чего ещё происходит. Например, люди активно разбираются с памятью и вниманием -- memory and attention используются как способ разбираться с чем-то большим (много объектов на картинке, много слов в длинном предложении). Но максимальная разруха идёт сейчас от embeddings, как эффективного способа устроить синестезию, использовать силу распределённых представлений для representation learning. В 2012 я уже отслеживал deep learning и писал про representation learning (http://ailev.livejournal.com/1045081.html), и хотя я делал те же ошибки, что сегодня делают многие "семантики" вокруг меня (хотел немедленно болтами это как-нибудь прикрутить к подходящей онтологии), было понятно, что это взорвёт всё остальное.

Сегодня взрывная точка -- синестезия, эквивалентность визуального ряда и речи, если речь идёт об embeddings (распределённых представлениях). Описание картинок как "перевод с языка на язык", тем же алгоритмом -- это мейнстрим и общее место сейчас, но дело пошло много дальше. Вот парочка работ из этой серии:
-- sense2vec -- учёт частей речи в embeddings: http://arxiv.org/abs/1511.06388 (слова с разными значениями учитываются точнее)
-- visual word2vec -- учёт абстрактных сцен/картинок в word2vec -- http://arxiv.org/abs/1511.07067 (идея в том, что отношения объектов на картинках лучше учить не из текстов, а прямо из картинок!)
-- близко сюда работа идёт также работа с картинками и словосочетаниями "настроений" (типа "симпатичный ребёнок"): http://arxiv.org/abs/1511.06838

Арифметика слов (типа "король-мужчина+женщина=королева", тут ссылок столько, что уже не буду их заново приводить) продолжается арифметикой изображений, а хоть и синтезированных "из ничего" лиц (https://github.com/Newmu/dcgan_code -- и там такого много разного, синтезируются и обложки альбомов, и интерьеры, и вообще что угодно):


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

И, конечно, неожиданные применения. Если у вас появилась чуйка, то её можно использовать самым неожиданным способом. Вот тут говорят, что на скорости свыше 2.9mph с вероятностью 100% распознают влажность дороги по звуку шин: http://arxiv.org/abs/1511.07035. А на скорости ниже процент распознавания ниже, хотя даже на скорость 0mph он где-то 74.5% -- используется звук окружающей среды, проезжающих мимо автомашин.

Абсолютно аналогичный случай: по шуму кондиционера можно узнать, что с ним происходит, и что в нём поломалось -- гаджет, сенсор и приложение в iPhone для диагностики от стартапа Augury: http://www.technologyreview.com/news/543786/this-gadget-can-tell-whats-wrong-with-your-air-conditioner-by-listening-to-it/. Технология анализа звука там не раскрывается, но довольно легко представить, что это может быть за технология.

Публикаций по deep learning уже зашкаливает, одному человеку за ними уже не уследить. Вместо трёх чахлых кустиков там уже целый лес разработок, плюс вокруг активно идут лесопосадки (под возмущённые вопли пессимистов и радостные крики оптимистов). Всё чаще и чаще уже недостаточно сказать "deep learning", нужно специфицировать, что именно там имеется ввиду -- момент, когда два "специалиста в глубоком обучении" будут не понимать ничего в работах друг друга, уже близок. Эпоха "вебмастеров" в deep learning стремительно заканчивается, грядёт специализация. За кустиками и деревьями оказался лес, лес затем будет поделен... на делянки. Кому на какую делянку?
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 11 comments