Deep Learning — что же делать, кого бить
Полнейший хаос и бардак.
Экспертов — «в топку»
Но начнем с конца. Стоит ли тратить время на изучение 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 и с неплохими показателями качества модели :-)
Всем удачи, вдохновения, энергии и новых, интересных задач и красивых, эффективных решений!
Комментарии (10)
3 августа 2016 в 21:06
+3↑
↓
О чем ваша статья? я вижу 4 абзаца сумбурного потока сознания, c непорядочными сумбурными ссылками.
Где искать решение проблем, какой подход верный? Может вы предлагаете ссылку на свой git с С++ реализацией медленных Python вставок в готовых реализациях?Особенно порадовал вывод в секции «Что же делать?» в стиле лабораторной работы, и совет завязывать с танками, пост написан танкистом в завязке?
3 августа 2016 в 23:31
0↑
↓
О чем статья? О бардаке и перетягивании одеяла :-) Хочется надеяться, что ситуация выровняется в лучшую сторону.
3 августа 2016 в 21:13
+1↑
↓
Это статья — крик души. Печаль… У других работает, а самому тяжело вникнуть. Прям по классике — «Лисица и Виноград»3 августа 2016 в 23:32
0↑
↓
Обижаете. У нас тоже работает и нет проблем с пониманием темы. Проблематика в другом немного, жаль что не удалось ее донести.
3 августа 2016 в 21:23
+1↑
↓
постоянно учиться и приобретать смежные знания
Кстати про «учиться»:
Часто вижу очень интересные вещи, которые нынче делают с нейронными сетями. Распознавание, сверточные сети, Deep Learning.Что почитать человеку, знания которого в области ИНС заканчиваются на персептроне? Видел множество статей, уроков, которые обещали объяснить относительно понятно все эти вещи, но они каждый раз оканчивались на описании искусственного нейрона.
3 августа 2016 в 21:26
+1↑
↓
Начните с курса Machine-learning на coursera. Думаю будет интересно и полезно.3 августа 2016 в 21:28
0↑
↓
Спасибо.
3 августа 2016 в 22:20
0↑
↓
Не думаю, что там то, о чём спрашивалось, потому что в этом курсе как раз на обычном персептроне все и заканчивается, а свёрточных цепей там нет.3 августа 2016 в 23:33
0↑
↓
Этот курс требует от слушателя определенного начального уровня вхождения, причем не маленького. Инженер вряд ли врубится с ходу.
3 августа 2016 в 22:43
0↑
↓
Нужно научить нейронок писать хороший код.