Разработка
Первое правило машинного обучения: начните без машинного обучения
Действительно ли эта эвристика работает? Да! Меня часто поражает, насколько эффективно она при приложении минимальных усилий.
Эффективное применение машинного обучения — непростая задача. Вам нужны данные. Вам нужен надежный конвейер для поддержки ваших потоков данных. И, прежде всего, вам нужна качественная разметка. В результате в большинстве случаев моя первая итерация вообще не связана с машинным обучением.
The first rule of machine learning: Start without machine learning
— Eugene Yan (@eugeneyan) September 10, 2021
Первое правило машинного обучения: начните без машинного обучения
Погодите — начать без машинного обучения?
Я не один об этом говорю.
Угадайте, какое правило №1 в 43 «Правилах машинного обучения” от Google?
Правило №1: не бойтесь запускать продукт без машинного обучения.
Машинное обучение — это круто, но для этого нужны данные. Теоретически вы можете взять данные из другой проблемы, а затем настроить модель для нового продукта, но это, скорее всего, будет хуже базовой эвристики. Если вы думаете, что машинное обучение даст вам 100%, то эвристика поможет вам на 50%.
Несколько практиков машинного обучения, с которыми я беседовал в рамках программы Applying ML, также дали аналогичный совет в ответ на этот вопрос: «Представьте, что вам дается новая, незнакомая проблема, которую нужно решить с помощью машинного обучения. Как бы вы к этому подошли?».
Сначала я бы очень сильно подумал, смогу ли я решить эту проблему без машинного обучения :D. Я стараюсь сначала пробовать менее гламурные и более простые вещи, прежде чем переходить к каким-либо более сложным решениям. — Вики Бойкис, инженер по машинному обучению в Tumblr.
Я считаю, что сначала важно обойтись без машинного обучения. Решите проблему вручную или с помощью эвристики. Таким образом, это заставит вас подробно ознакомиться с проблемой и данными, что является наиболее важным первым шагом. Кроме того, для того, чтобы оставаться честным, важно достичь исходного уровня, не связанного с машинным обучением. — Хамель Хуссейн, инженер машинного обучения в Github.
Сначала попробуйте решить задачу без машинного обучения. Все дают этот совет, потому что он хороший. Вы можете написать несколько правил if/else или эвристику, которые принимают простые решения и действуют в соответствии с ними. — Адам Лайакано, инженер машинного обучения в Spotify.
С чего начать?
Независимо от того, используете ли вы простые правила или глубокое обучение, хорошее понимание данных помогает. Таким образом, возьмите образец данных, чтобы запустить статистику и визуализировать! (Примечание: это в основном относится к табличным данным. Другие данные, такие как изображения, текст, аудио и т.д., могут быть сложными для получения агрегированной статистики.)
Простые корреляции помогают выяснить отношения между каждой функцией и целевой переменной. Затем мы можем выбрать для визуализации подмножество функций с наиболее сильными взаимосвязями. Это не только помогает понять данные и проблемы — чтобы мы могли более эффективно применять машинное обучение, — мы также получаем лучший контекст бизнес-области. Обратите внимание, что корреляции и агрегированная статистика могут вводить в заблуждение — переменные, которые имеют сильные взаимосвязи, могут иметь нулевую корреляцию (подробнее ниже).
Диаграммы разброса являются фаворитом для визуализации числовых значений. Поместите объект на ось x, а целевую переменную на ось y, и позвольте взаимосвязи проявиться. В приведенном ниже примере у температуры нет корреляции с продажами мороженого. Однако мы видим четкую взаимосвязь на диаграмме рассеяния: люди покупают больше мороженого при повышении температуры, но при превышении определенного предела становится слишком жарко, и они просто остаются в помещении.
Если какая-либо из переменных категориальна, я обнаружил, что коробчатые диаграммы работают хорошо. Представьте, что вы пытаетесь предсказать продолжительность жизни собаки — какое значение имеет размер собаки?
Разобравшись с данными, мы можем начать с решения проблемы с помощью эвристики. Вот несколько примеров использования эвристики для решения распространенных проблем (вы удивитесь, насколько сложно их преодолеть):
- Рекомендации: рекомендовать самые эффективные товары предыдущего периода; также можно сегментировать по категориям (например, по жанрам, брендам). Если у вас есть данные о поведении клиентов, вы можете вычислить агрегированную статистику по взаимодействиям, чтобы вычислить сходство элементов для рекомендаций i2i (см. алгоритм Swing Alibaba здесь).
- Классификация продуктов: регулярные выражения для названий продуктов. Вот пример из классификатора продуктов Walmart (раздел 4.5): если в названии продукта есть «кольцо», «обручальное кольцо», «бриллиант. *свадебный» и т. д., отнесите его к категории колец.
- Идентификация спама: правила, основанные на количестве отзывов с одного и того же IP-адреса, времени, когда был сделан отзыв (например, странное время, вроде 3 часов ночи), сходства (например, редакционного расстояния) между текущим отзывом и другими отзывами, сделанными в тот же день.
Несколько человек также ответили на этот твит, указав базовые практики, не связанные с машинным обучением, такие как регулярное выражение, межквартильный диапазон для обнаружения выбросов, скользящее среднее для прогнозирования, создание словарей для сопоставления адресов и т.д.
Действительно ли эта эвристика работает? Да! Меня часто поражает, насколько эффективно она при приложении минимальных усилий. Вот простой пример того, как простой список исключений остановил мошенников.
Many years ago had a similar experience. Scammers were rapidly making new websites after we blocked them and slipping past models but they kept using the same images with the same filenames. Gotchaaaa.
— Jack Hanlon (@JHanlon) August 13, 2021
И еще один, где регулярное выражение > глубокого обучения.
I’ve gotten so much flack for this. One project I did with string comparisons but customer was disappointed I didn’t use neural networks and hired someone else to do that. Guess which one was cheaper and more accurate,
— Mitch Haile (@bwahacker) September 10, 2021
Да, можно сказать, что люди, обучающие модели машинного обучения, не знали, что они делают. Возможно. Тем не менее, суть в том, что понимание данных и простая эвристика могут легко оказаться лучше, чем model.fit(), и работать быстрее.
Эти эвристики также помогают с разметкой начальных данных (также известной как слабо контролируемое обучение, weak supervision). Если вы начинаете с нуля и у вас нет меток, слабый контроль позволяет быстро и эффективно получить множество ярлыков, хотя и с более низким качеством. Эти эвристики могут быть формализованы как функции маркировки для создания меток. Другие формы слабо контролируемого обучения включают использование баз знаний и предварительно обученных моделей. Подробнее о слабом контроле в Google и Apple здесь.
Когда тогда нам следует использовать машинное обучение?
После того, как у вас есть базовый план, не связанный с машинным обучением, который работает достаточно хорошо, а усилия по поддержанию и улучшению этого базового плана перевешивают усилия по созданию и развертыванию системы на основе машинного обучения. Трудно точно определить, когда это произойдет, но если ваши 195 созданных вручную правил невозможно обновить без каких-либо сбоев, это знак того, что вам следует подумать о машинном обучении. Вот Правило №3 из “Правил машинного обучения” Google.
Правило № 3: когда выбрать машинное обучение, а не сложную эвристику.
Простая эвристика может вывести ваш продукт на рынок. Сложная эвристика недостижима. Когда у вас будут данные и базовое представление о том, чего вы пытаетесь достичь, переходите к машинному обучению… и вы обнаружите, что модель с машинным обучением легче обновлять и поддерживать.
Наличие надежных конвейеров данных и высококачественных меток для данных также говорят о том, что вы готовы к машинному обучению. До того, как это произойдет, ваших существующих данных может быть недостаточно для машинного обучения. Допустим, вы хотите уменьшить количество случаев мошенничества на своей платформе, но даже не знаете, как выглядит мошенничество, не говоря уже о каких-либо ярлыках.
Или у вас могут быть данные, но они в таком плохом состоянии, что их нельзя использовать. Например, у вас есть данные о категории продуктов, которые можно использовать для обучения классификатора продуктов. Но продавцы намеренно неправильно классифицируют продукты, чтобы обыграть систему (например, чтобы получить выгоду от более низких комиссий в определенных категориях или для лучшего ранжирования в разреженных категориях).
Часто для создания золотого набора данных высококачественных меток требуется ручная маркировка. Так обучение и проверка ваших усилий по машинному обучению становятся намного проще.
Но что, если мне нужно использовать машинное обучение просто ради машинного обучения?
Хм, это непростая ситуация. Как вы сбалансируете решение проблемы и обслуживание клиентов, а не потратите кучу времени и усилий только ради технологии? У меня нет ответа на этот вопрос, но я оставлю вам этот гениальный совет от Брэндона Рорера.
ML strategy tip
When you have a problem, build two solutions — a deep Bayesian transformer running on multicloud Kubernetes and a SQL query built on a stack of egregiously oversimplifying assumptions. Put one on your resume, the other in production. Everyone goes home happy.
— Brandon Rohrer (@_brohrer_) August 12, 2021
Если у вас есть проблема, создайте два решения - глубокий байесовский преобразователь, работающий в мультиоблачном Kubernetes, и SQL-запрос, построенный на стеке вопиюще упрощенных предположений. Поместите один в свое резюме, другой в производство. Все идут домой счастливые.