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

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

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

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

Я твердо убежден, что на каком-то этапе разработки продукта необходимо ответить на следующие вопросы (чем раньше, тем лучше):

  1. Насколько точно набор данных представляет приложение? Достаточно ли в наборе обучающих данных разнообразия реального мира, отражающего все спецификации требований? Насколько точно это представление данных изучено моделью?
  2. Правильно ли построена модель? Разрабатываются ли они на/с инструментами, которые тщательно тестируются? Как тестируются модели и на каких данных?
  3. Можно ли инкапсулировать данные с помощью менее сложной модели? Есть ли способ уменьшить сложность алгоритма (параметр модели, точность работы модели) без снижения точности.
  4. Как обрабатывается шум в тренировочных данных? Какие параметры в данных были и могут быть затронуты шумом.
  5. Какая мера точности фактически отражает производительность модели? Какие KPI (показатели оценки) используются для тестирования и как они выводятся из требований?

Точно так же при более глубоком погружении может возникнуть еще много вопросов.

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

Наконец, я хотел бы сказать, что «выбить $hit из ваших данных не поможет, поможет их понимание».

Удачного Млинга!!!

Обучение, тестирование и проверка…