10 шагов для начальной загрузки вашего проекта машинного обучения (часть 2)

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

Напоминаем, что первые пять шагов:

  1. Определите вашу задачу
  2. Определите свой набор данных
  3. Разделите свой набор данных
  4. Определите свои показатели
  5. Установите базовый уровень

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

6. Знайте некоторые абсолютные показатели о нейронных сетях 📊

Перед внедрением нейронной сети было бы интересно узнать некоторые абсолютные показатели вычислений вашей нейронной сети.

Как заявил Йошуа Бенжио из школы глубокого обучения Bay Area (видео здесь), если у вас есть сеть с N функциями, и каждой из них требуется O ( K) (порядка K) параметров в окончательной модели, вам понадобится как минимум O (K * N) примеров для вашей сети. уметь хорошо обобщать. Это интересный показатель, поскольку он дает вам первое представление о размере необходимого набора данных.

Немного более технический показатель, на который вы можете взглянуть, - это измерение Вапника – Червоненкиса (измерение ВК), которое дает вам сложность нейронной сети. Это дает вам инструмент для измерения способности сети к обучению. Хотя это не обязательный шаг и он больше используется в качестве теоретической метрики, он дает вам представление о том, что происходит с точки зрения обучения.

7. Реализуйте существующую модель нейронной сети ⚙

Вы знаете, какую нейронную сеть хотите реализовать. Это замечательно. Не торопитесь разрабатывать его с нуля. Вы, вероятно, сможете скачать его, уже обучившись. Это заставит вас заработать кучу часов (как в инженерии, так и в GPU). Как говорит Андрей Карпатий: «Не будь героем» 😎.

Настройте его с помощью своей любимой среды машинного обучения и запустите!

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

Вычислите ошибку в наборах данных train и dev, настройте ее под вашу конкретную задачу и проанализируйте ошибки вывода.

Старайтесь всегда быть ближе к своим данным:

  • Визуализируйте свои входы / выходы (например, вы можете построить свои данные и их вычисленные категории)
  • Собирать сводную статистику
  • Поиграйте со своими гиперпараметрами и посмотрите, как они повлияют на ваши результаты (на том же графике нанесите свои коэффициенты ошибок, вычисленные с разными гиперпараметрами)

8. Другая архитектура?

Если вы сомневались при выборе своей модели, было бы хорошо попробовать другие архитектуры и сравнить их результаты.

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

Если вы работаете со словами, вы можете попробовать использовать другое встраивание.

Чтобы получить полный список классических сетей, Институт Азимова опубликовал замечательную запись в блоге: Зоопарк нейронных сетей.

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

9. Не работает, что мне делать дальше? 🤔

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

Нанесите на график различные линии ошибок.

Чтобы знать, какие действия мы можем предпринять, мы должны знать, находимся ли мы сейчас в проблеме высокой систематической ошибки или / или высокой дисперсии.

Помните, что мы разделили наш набор данных на три группы: обучающий набор, набор для разработки (или перекрестной проверки) и набор для тестирования.

Важно не предпринимать следующие действия одновременно, так как одно действие может решить все ваши проблемы. Сделайте первый, посмотрите на результаты и посмотрите, сталкиваетесь ли вы по-прежнему с той же проблемой. Если да, попробуйте другое решение!

Если ваша ошибка обучения высока по сравнению с ошибкой человеческого уровня - высокая систематическая ошибка:

  • Попробуйте иметь модель побольше (глубже)
  • Добавьте полиномиальные функции / измените свои гиперпараметры
  • Тренируйте свою модель дольше
  • Архитектура новой модели

Если ваша ошибка разработчика велика по сравнению с вашей ошибкой поезда - большая дисперсия:

  • Больше данных
  • Вы можете сгенерировать больше данных (добавить шум, транспонировать,…)
  • Меньший набор функций
  • Попробуйте регуляризацию
  • Ранняя остановка
  • Архитектура новой модели

Если ваша ошибка теста высока, но ваша ошибка разработчика нормальная - превышение установленного вами набора разработчика :

  • Получите больше данных разработчика, добавив больше данных в свой набор данных или изменив разделение набора данных

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

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

10. Подводя итог 🏁

Теперь ваша цель состоит в том, чтобы быстро перебрать различные модели, чтобы превзойти базовый уровень и достичь поставленных целей.

Также важно получить интуитивное представление о том, как работают нейронные сети, чтобы не выполнять ненужные задачи и не повторять одни и те же ошибки снова и снова.

Если у вас есть какие-либо мысли или вы хотите поделиться своей методикой, сделайте это в комментариях! 😀