Deep Learning - что же делать, кого бить

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Нигде, наверно, нет такой насущной необходимости в синергии знаний разных областей науки - как в области машинного обучения и Deep Learning. Достаточно открыть капот TensorFlow и ужаснуться - огромное количество кода на python, работающее с тензорами внутри- C++, вперемешку с numpy, для выкладки в продакшн требующее чуток покодить «на плюсах», вприкуску с bazel (это так волнует, всю жизнь мечтал об этом!). И другая крайность - ребята из Deeplearning4j прокляли python к чертовой матери и вращают тензоры на старой и доброй java. Но дальше всех ушли, похоже, студенты из университета Нью-Йорка - люди, причем не только студенты, причем давно и серьезно жгут на Luajit + nginx (аминь по католически). Ситуация осложняется недавним демаршем Google DeepMind в отношении «дедушки torch»: все проекты переводят на свой внутренний движок, родившийся из DistBelief.
Полнейший хаос и бардак.

Экспертов - «в топку»


Но начнем с конца. Стоит ли тратить время на изучение Deep Learning, насколько он нужен бизнесу и что это вообще такое? Вспомним, что «классическое» машинное обучение работает же, и неплохо, но, НО- требуется тщательный выбор и магическо-ненаучные манипуляции с атрибутами с привлечением экспертов в предметной области - а это долго, дорого и хрупко. Всем хочется дать машине данные и чтобы она САМА всему научилась (вот тебе архив с книжками - завтра научись писать новые; вот тебе фотографии - учись рисовать). И не отвлекайся, красавица, работай. И это стало получаться.
Хорошо известные работающие неплохо примеры, которым не нужны эксперты по языку - это машинный перевод. Ну весело же - берем корпус с переводами, учим нейронку и вуаля - она переводит не хуже, а даже лучше чем Moses.
Еще пример, где DeepLearning расцвел в свое красе - машинное зрение. Тоже весело - несколько слоев нейронки разного типа (сверточные, pooling) и чудо - сеть классифицирует изображение быстрее и иногда точнее человека. И опять - обучается этому только на данных, фичи выбираются автоматически в ходе обучения. Прекрасно!
Еще перспективный пример - рекуррентые нейронки для чатботов и для моделирования языка.
Тем не менее, Amazon релизит продукт, который внутри себя представляет ETL + старую, добрую, «бесплатную» логистическую регрессию! «Безумие» и отвага.

Теория и практика


Жизнь так устроена, что математически хорошо подкованные коллеги обычно пишут на «не очень удобном с точки зрения эксплуатации под высокими нагрузками языке». При этом эти коллеги - очень умные, знают много, множат матрицы в уме и отличают логистическую регрессию от дискриминантного анализа. А опытные опытные опытные инженеры хайлоада, больших данных и энтерпрайза, ангелы DevOps - хорошо программируют в больших объемах и это потом «не протухает», в уме переводят код в ассемблер - но вряд ли даже за отпуск смогут освоить и объяснить на пальцах принцип работы LDA, ссылаясь на Beta-распределение. И не стоит этим матерым бойцам показывать «программирование» в «ipython notebook» - запрут в серверной и заставят переписать код на ANSI C за ночь ;-)
Непонятно пока, что с этим всем делать - Google нанимает ученых со всего мира, сплавляет их с программистами и получаются извращения из смеси python и C++. Программисты нанимают ученых и пишут всю математику на «православной» java и чтобы разобраться в коде, нужно иметь опыт системного программирование лет, эдак, в 10. Но есть все-таки ощущение, что в ближайшие годы начнется интенсивный обмен знаниями и первая группа коллег начнет постигать тайны написания «хорошего кода», а вторая - учиться множить матрицы в памяти :-)
А пока - учимся договариваться, нет выхода.

Что же делать?


Что делать, чтобы разобраться и преуспеть - постоянно учиться и приобретать смежные знания! Хорошие алгоритмы, качественные модели, которые учатся на данных без помощи экспертов - нужны бизнесу, как никогда. Deeplearning очень интенсивно развивается, эта активная область научных исследований и проникает в нашу жизнь все глубже.
Благо, обучая модели на GPU (а эту возможность поддерживают уже многие фреймворки) - можно ускориться раз в 10. Не хватает скорости - стартуем на кластере. TensorFlow умеет это из коробоки, Deeplearning4j - масштабируется на Spark.
Да, нужно привыкнуть к научному стилю изложения - но со временем становится понятно, что вариантов Deep Learning архитектур и решаемых ими задач не так уж и много, и постепенно проясняется механика работы каждого класса решений.
Если тебе трудно понять трехэтажные матрицы, описывающие физику нейронок - отложи WorldOfTanks, потрать одни выходные на вводный курс по линейной алгебре и все со временем откроется. Ученые создают модели, а мы, инженеры - их только используем; ну иногда комбинируем.
И никогда не нужно кидаться в крайности. Вот напоследок вкусная и интересная статья, как Google реализовал свою рекомендательную систему для Google Play - видно, что начинали с классического, правда «широкого» классификатора, а закончили Deep&Wide и с неплохими показателями качества модели :-)

Всем удачи, вдохновения, энергии и новых, интересных задач и красивых, эффективных решений!

Источник: habrahabr.ru

Комментарии: