10 шагов для начальной загрузки вашего проекта машинного обучения (часть 2)
В первой статье этой серии мы определили, какие шаги лучше всего делать при работе над новым проектом машинного обучения.
Напоминаем, что первые пять шагов:
- Определите вашу задачу
- Определите свой набор данных
- Разделите свой набор данных
- Определите свои показатели
- Установите базовый уровень
Ваша базовая линия - это ваша нижняя граница: вы хотите получить лучшие результаты, чем эта тупая модель. Теперь вы смотрите на другую границу: коэффициент человеческих ошибок, который представляет собой точность, которую может легко получить кто-то, знакомый с вашей задачей. Если возможно, вы хотите достичь этого уровня ошибок, связанных с человеческим фактором, и даже превзойти его.
6. Знайте некоторые абсолютные показатели о нейронных сетях 📊
Перед внедрением нейронной сети было бы интересно узнать некоторые абсолютные показатели вычислений вашей нейронной сети.
Как заявил Йошуа Бенжио из школы глубокого обучения Bay Area (видео здесь), если у вас есть сеть с N функциями, и каждой из них требуется O ( K) (порядка K) параметров в окончательной модели, вам понадобится как минимум O (K * N) примеров для вашей сети. уметь хорошо обобщать. Это интересный показатель, поскольку он дает вам первое представление о размере необходимого набора данных.
Немного более технический показатель, на который вы можете взглянуть, - это измерение Вапника – Червоненкиса (измерение ВК), которое дает вам сложность нейронной сети. Это дает вам инструмент для измерения способности сети к обучению. Хотя это не обязательный шаг и он больше используется в качестве теоретической метрики, он дает вам представление о том, что происходит с точки зрения обучения.
7. Реализуйте существующую модель нейронной сети ⚙
Вы знаете, какую нейронную сеть хотите реализовать. Это замечательно. Не торопитесь разрабатывать его с нуля. Вы, вероятно, сможете скачать его, уже обучившись. Это заставит вас заработать кучу часов (как в инженерии, так и в GPU). Как говорит Андрей Карпатий: «Не будь героем» 😎.
Настройте его с помощью своей любимой среды машинного обучения и запустите!
Вы также захотите настроить свою модель так, чтобы она хорошо работала с вашими данными. Тонкая настройка модели подразумевает игру с гиперпараметрами, размером сети, обработкой ваших данных ...
Вычислите ошибку в наборах данных train и dev, настройте ее под вашу конкретную задачу и проанализируйте ошибки вывода.
Старайтесь всегда быть ближе к своим данным:
- Визуализируйте свои входы / выходы (например, вы можете построить свои данные и их вычисленные категории)
- Собирать сводную статистику
- Поиграйте со своими гиперпараметрами и посмотрите, как они повлияют на ваши результаты (на том же графике нанесите свои коэффициенты ошибок, вычисленные с разными гиперпараметрами)
8. Другая архитектура?
Если вы сомневались при выборе своей модели, было бы хорошо попробовать другие архитектуры и сравнить их результаты.
Например, если вы планируете переводить с одного языка на другой, вы можете взглянуть на модель Seq2Seq, а также на некоторые более простые архитектуры RNN.
Если вы работаете со словами, вы можете попробовать использовать другое встраивание.
Чтобы получить полный список классических сетей, Институт Азимова опубликовал замечательную запись в блоге: Зоопарк нейронных сетей.
Если вы не найдете ничего доступного, вы можете получить интуицию, прочитав статьи, связанные с вашей проблемой. Это поможет вам понять, как решается конкретная задача, и, таким образом, может побудить вас попробовать новые модели.
9. Не работает, что мне делать дальше? 🤔
Чтобы получить некоторое представление о том, что вам следует делать дальше, вы должны сначала сравнить уровень ошибок, связанных с человеческим фактором, с уровнем ошибок вашей модели, как в обучающих, так и в разработанных наборах.
Нанесите на график различные линии ошибок.
Чтобы знать, какие действия мы можем предпринять, мы должны знать, находимся ли мы сейчас в проблеме высокой систематической ошибки или / или высокой дисперсии.
Помните, что мы разделили наш набор данных на три группы: обучающий набор, набор для разработки (или перекрестной проверки) и набор для тестирования.
Важно не предпринимать следующие действия одновременно, так как одно действие может решить все ваши проблемы. Сделайте первый, посмотрите на результаты и посмотрите, сталкиваетесь ли вы по-прежнему с той же проблемой. Если да, попробуйте другое решение!
Если ваша ошибка обучения высока по сравнению с ошибкой человеческого уровня - высокая систематическая ошибка:
- Попробуйте иметь модель побольше (глубже)
- Добавьте полиномиальные функции / измените свои гиперпараметры
- Тренируйте свою модель дольше
- Архитектура новой модели
Если ваша ошибка разработчика велика по сравнению с вашей ошибкой поезда - большая дисперсия:
- Больше данных
- Вы можете сгенерировать больше данных (добавить шум, транспонировать,…)
- Меньший набор функций
- Попробуйте регуляризацию
- Ранняя остановка
- Архитектура новой модели
Если ваша ошибка теста высока, но ваша ошибка разработчика нормальная - превышение установленного вами набора разработчика :
- Получите больше данных разработчика, добавив больше данных в свой набор данных или изменив разделение набора данных
В какой-то момент ваш алгоритм машинного обучения может быть лучше, чем ошибка человеческого уровня, но вы все равно можете столкнуться с некоторыми проблемами дисперсии.
Что вы должны знать, так это то, что как только вы достигли ошибки человеческого рычага, все труднее и труднее улучшить ваш алгоритм - и достичь скорости Байеса, которая является самой минимально возможной ошибкой. рейтинг для любого классификатора случайного исхода.
10. Подводя итог 🏁
Теперь ваша цель состоит в том, чтобы быстро перебрать различные модели, чтобы превзойти базовый уровень и достичь поставленных целей.
Также важно получить интуитивное представление о том, как работают нейронные сети, чтобы не выполнять ненужные задачи и не повторять одни и те же ошибки снова и снова.
Если у вас есть какие-либо мысли или вы хотите поделиться своей методикой, сделайте это в комментариях! 😀