Этот пост написал Зак Миллер, старший научный сотрудник компании Metis из Чикаго. Изначально это было размещено в его блоге здесь. Зак проводит предстоящее мероприятие для участников буткемпа, посвященное механизмам рекомендаций, о котором вы можете узнать здесь.
«Когда мы перейдем к глубокому обучению, я не могу дождаться, пока мы сделаем все эти КЛАССНЫЕ вещи». - Буквально все мои ученики когда-либо.
Часть моей работы в Метисе - давать моим студентам надежные рекомендации о том, на каких технологиях им следует сосредоточиться в мире науки о данных. В конце концов, наша цель (коллективная) - убедиться, что эти студенты трудоустроены, поэтому я всегда внимательно понимаю, какие навыки сейчас востребованы в мире работодателей. Пройдя через несколько когорт и выслушав как можно больше отзывов работодателей, я могу сказать довольно уверенно - вердикт по поводу гнева глубокого обучения еще не вынесен. Я утверждаю, что большинству специалистов по промышленным данным вообще не нужен набор навыков глубокого обучения. А теперь позвольте мне начать с того, что глубокое обучение делает невероятно крутые вещи. Я занимаюсь всевозможными небольшими проектами, играя с глубоким обучением, просто потому, что считаю это увлекательным и многообещающим.
Компьютерное зрение? Замечательно.
LSTM для создания контента / прогнозирования временных рядов? Великолепно.
Передача стиля изображения? Отлично.
Генеративные состязательные сети? Чертовски круто.
Использование какой-то странной глубокой сети для решения какой-то сверхсложной задачи. О ЗАКОН, ЭТО ТАКОЕ ВЕЛИКОЛЕПНОЕ.
Если это так круто, почему я говорю, что ты должен пропустить это тогда? Все сводится к тому, что на самом деле используется в промышленности. В конце концов, большинство компаний еще не используют глубокое обучение. Итак, давайте рассмотрим некоторые из причин, по которым глубокое обучение не получает быстрого распространения в мире бизнеса.
Компании все еще догоняют стремительный рост объемов данных…
… Поэтому для большинства проблем, которые мы решаем, на самом деле не требуется глубокого обучения. В науке о данных вы всегда стремитесь к простейшей модели, которая работает. Добавление ненужной сложности просто дает нам больше ручек и рычагов, которые можно сломать позже. Методы линейной и логистической регрессии крайне недооценены, и я говорю это, зная, что многие люди очень высоко их ценят. Я всегда нанимал специалиста по данным, который хорошо знаком с традиционными методами машинного обучения (такими как регрессия), вместо того, у кого есть портфель привлекательных проектов глубокого обучения, но который не так хорош в работе с данными. Знание того, как и почему все работает, гораздо важнее для бизнеса, чем демонстрация того, что вы можете использовать TensorFlow или Keras для создания сверточных нейронных сетей. Даже работодатели, которым нужны специалисты по глубокому обучению, захотят, чтобы кто-то с ГЛУБОКОМ знанием статистического обучения, а не только некоторые проекты с нейронными сетями.
Вам нужно все настроить правильно…
… А руководства по настройке нет. Вы установили скорость обучения 0,001? Угадайте, что не сходится. Вы снизили импульс до числа, которое вы видели в той статье, посвященной обучению такого типа сети? Угадайте, ваши данные немного отличаются, и это значение импульса означает, что вы застряли в локальных минимумах. Вы выбрали функцию активации tanh? Для этой проблемы эта форма недостаточно агрессивна при отображении данных. Вы не использовали по крайней мере 25% отсева? Тогда у вашей модели нет шансов на обобщение, учитывая ваши конкретные данные.
Когда модели хорошо сходятся, они становятся суперсильными. Однако атака сверхсложной проблемы сверхсложным ответом обязательно приводит к душевной боли и проблемам со сложностью. Глубокое обучение - это определенная форма искусства. Распознавать модели поведения и настраивать под них свои модели чрезвычайно сложно. Это не то, чем вы действительно должны заниматься, пока не поймете другие модели на уровне глубокой интуиции.
Необходимо скорректировать так много весов.
Допустим, у вас есть проблема, которую вы хотите решить. Вы смотрите на данные и думаете: «Хорошо, это довольно сложная проблема, давайте воспользуемся несколькими слоями в нейронной сети». Вы бежите к Керасу и начинаете строить модель. Это довольно сложная задача с 10 входами. Итак, вы думаете, давайте сделаем слой из 20 узлов, затем слой из 10 узлов, а затем выведем его в 4 разных возможных класса. Ничего слишком сумасшедшего с точки зрения архитектуры нейронной сети, это, честно говоря, довольно ванильное. Просто несколько плотных слоев для тренировки с некоторыми контролируемыми данными. Отлично, давайте перейдем к Керасу и вставим это:
model = Sequential ()
model.add (Dense (20, input_dim = 10, activate = 'relu'))
model.add (Dense (10, activate = 'relu'))
model.add (Dense (4, activate = 'softmax'))
print (model.summary ())
Вы смотрите на резюме и понимаете: Я ДОЛЖЕН ОБУЧИТЬ 474 ИТОГО ПАРАМЕТРА. Это большая тренировка. Если вы хотите обучить 474 параметра, вам понадобится тонна данных. Если вы собирались попытаться решить эту проблему с помощью логистической регрессии, вам потребовалось бы 11 параметров. Вы можете обойтись гораздо меньшим объемом данных, если тренируете на 98% меньше параметров. У большинства предприятий либо нет данных, необходимых для обучения большой нейронной сети, либо у них нет времени и ресурсов, чтобы посвятить их хорошему обучению огромной сети.
Глубокое обучение по своей сути медленное.
Мы только что упомянули, что обучение потребует огромных усилий. Много параметров + много данных = много процессорного времени. Вы можете оптимизировать вещи, используя графические процессоры, используя дифференциальные приближения 2-го и 3-го порядка, или используя умные методы сегментации данных и распараллеливания различных частей процесса. Но, в конце концов, у вас еще много работы. Кроме того, прогнозы с помощью глубокого обучения также медленны. При глубоком обучении вы делаете прогноз, умножая каждый вес на некоторое входное значение. Если имеется 474 веса, вам нужно выполнить ПО МЕНЬШЕ 474 вычисления. Вам также нужно будет выполнить кучу вызовов функций сопоставления с вашими функциями активации. Скорее всего, это количество вычислений будет значительно больше (особенно если вы добавите специализированные слои для сверток). Итак, просто для вашего прогноза вам нужно будет проделать тысячи вычислений. Возвращаясь к нашей логистической регрессии, нам нужно будет сделать 10 умножений, затем сложить вместе 11 чисел, а затем выполнить сопоставление с сигмовидным пространством. Это сравнительно молниеносно.
Итак, в чем проблема? Для многих предприятий время - главная проблема. Если вашей компании необходимо одобрить или отклонить получение кредита через приложение для телефона, у вас есть всего миллисекунды, чтобы принять решение. Недопустимо наличие сверхглубокой модели, для прогнозирования которой требуются секунды (или больше).
Глубокое обучение - это «черный ящик».
Позвольте мне начать этот раздел с того, что глубокое обучение - это не черный ящик. Это буквально цепное правило из класса Calculus. Тем не менее, в деловом мире, если они не знают точно, как и на сколько корректируется каждый вес, это считается черным ящиком. Если это черный ящик, то легко не доверять ему и полностью игнорировать эту методологию. По мере того, как наука о данных становится все более и более распространенной, люди могут прийти к вам и начать доверять результатам, но в нынешних условиях все еще есть много сомнений. Вдобавок ко всему, любые отрасли, которые строго регулируются (например, кредиты, закон, качество продуктов питания и т. Д.), Должны использовать легко интерпретируемые модели. Глубокое обучение нелегко интерпретировать, даже если вы знаете, что происходит под капотом. Вы не можете указать на конкретную часть сети и сказать: «Ага, это тот раздел, который несправедливо нацелен на меньшинства в нашем процессе утверждения кредита, поэтому позвольте мне вычеркнуть это». В конце концов, если инспектору нужно уметь интерпретировать вашу модель, вам не разрешат использовать глубокое обучение.
Итак, что мне тогда делать?
Глубокое обучение по-прежнему является молодой (хотя и очень многообещающей и мощной) техникой, способной на невероятные успехи. Однако по состоянию на январь 2018 года мир бизнеса не готов к этому. Глубокое обучение по-прежнему является прерогативой ученых и стартапов. Вдобавок ко всему, чтобы действительно понять и использовать глубокое обучение на уровне, превышающем новичок, требуется много времени и усилий. Вместо этого, когда вы начинаете свой путь к моделированию данных, вам не следует тратить время на глубокое обучение; поскольку этот навык не будет тем, который даст вам работу для 90% + работодателей. Сосредоточьтесь на более «традиционных» методах моделирования, таких как регрессия, древовидные модели и поиск окрестностей. Найдите время, чтобы узнать о реальных проблемах, таких как обнаружение мошенничества, механизмы рекомендаций или сегментация клиентов. Научитесь использовать данные для решения реальных проблем (существует масса отличных наборов данных Kaggle). Уделите время развитию отличных навыков программирования, многоразовых конвейеров и модулей кода. Научитесь писать модульные тесты.
Это точная обратная связь, которую мы слышим от работодателей, с которыми мы сотрудничаем в Metis: «Специалисты по обработке данных все беспокоятся о глубоком обучении, но наша компания не занимается глубоким обучением. Мы бы предпочли увидеть специалистов по обработке данных, которые хорошо разбираются в регрессии и SQL ». Это распространенный рефрен, так как большинство компаний еще не достигли передового уровня. Если они не нанимают сотрудников для глубокого обучения, а вы потратили все свое время на глубокое обучение, у вас просто не будет того набора навыков, который используется в настоящее время.
Однако, если у вас действительно есть набор навыков, который имеет значение, я настоятельно рекомендую погрузиться в увлечение глубоким обучением, даже если это просто случайно. Там происходит много ДЕЙСТВИТЕЛЬНО крутых вещей. Просто это не лучшее использование вашего времени, если вы пытаетесь научиться заниматься наукой о данных.
_____
Чтобы узнать больше о наших старших специалистах по науке о данных, выпускниках и сотрудниках, посетите Блог Metis, где регулярно публикуются новости, статьи и многое другое.