Что такое глубокое обучение, и почему это должно вас интересовать?

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

Чтобы получить больше информации, я обратился к одному из участников, Даниэлю Нури (Daniel Nouri), продемонстрировавшему мне использование проекта с открытым исходным кодом Decaf. Он показал, как ему удалось быстро применить данное решение к целому ряду других проблем распознавания образов и получить значительно лучшие результаты, чем те, которые могли обеспечить мои традиционные методы.

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

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

Этот термин описывает специфический подход к построению и обучению нейронных сетей.

Нейронные сети возникли примерно в 1950-х годах и, как и ядерный синтез, были невероятно перспективной лабораторной идеей, чье практическое внедрение сопровождалось постоянными задержками.

В качестве входных данных нейронные сети принимают массив чисел (пиксели, аудиосигнал или слова), применяют к нему ряд функций и возвращают одно или несколько чисел в качестве результата — он, как правило, является прогнозом некоторых свойств, которые вы хотите предсказать на основании исходных данных, например, является ли картинка изображением кошки, или нет. Функции, выполняющиеся внутри «черного ящика», управляются памятью нейронной сети.

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

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

Обучение

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

Настоящий прорыв, обусловивший текущее возрождение интереса к нейронным сетям, произошел в 2012 году после публикации в журнале Imagenet. Алекс Крижевский (Alex Krizhevsky), Илья Сатскевер (Ilya Sutskever) и Джефф Хинтон (Geoff Hinton) собрали вместе целый ряд различных методик ускорения процесса обучения, включая сверточные нейронные сети, интеллектуальное использование графических процессоров и некоторые новаторские математические трюки: оптимизированные линейные нейроны (ReLU – rectified linear unit) и отсев (dropout), показав, что за несколько недель они смогли бы обучить сложную нейронную сеть до такого уровня, который превзошел бы результат традиционных подходов к компьютерному зрению.

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

В чем заключается отличие от других подходов?

В отношении большинства задач машинного обучения, наиболее сложной проблемой является распознавание характерных признаков в «сырых» входных данных, например, алгоритмы SIFT (scale-invariant feature transform – масштабно-инвариантное преобразование признаков) или SURF (speeded up robust features – ускоренный устойчивый [алгоритм поиска] признаков) для изображений. Глубокое обучение исключает необходимость подобных операций, выполняемых вручную, заменяя их процессом обучения, в результате которого выявляются наиболее полезные структуры.

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

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

Зачем вам углубляться в изучение данного вопроса?

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

Автор: Пит Уорден

Перевод Станислава Петренко

По материалам: O’reilly Radar 

Добавить комментарий

Ваш e-mail не будет опубликован.

закрыть

Поделиться

Отправить на почту
закрыть

Вход

закрыть

Регистрация

+ =