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

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

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

Шаги по отслеживанию ваших экспериментов

№1: попрощайтесь со случайностью

Случайное перемешивание набора данных на каждой итерации — это здорово, но если вы практикуете глубокое обучение, вы должны знать, что порядок, в котором ваша модель видит изображения, повлияет — в большинстве случаев незначительно — на производительность модели, на компьютерное зрение. также обычно применяются случайные улучшения, но помните, что если вы не контролируете случайность, вы не получите идентичный результат при попытке повторить или улучшить эксперимент. ”, которая позаботится о том, чтобы каждый раз, когда вы повторяете эксперимент с теми же параметрами, он давал один и тот же результат.
Пример использования PyTorch и некоторых других популярных библиотек Python, которые работают со случайностью:

№2. Всегда используйте одни и те же зависимости

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

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

Чтобы познакомить вас с тем, насколько проблематично забыть об отслеживании ваших зависимостей, я расскажу вам историю: в прошлом году я работал над проектом распознавания изображений с медицинскими данными и решил использовать OpenCV для предварительной обработки изображений и добавления некоторых фильтров. , однако, занимаясь этим проектом, я работал с двумя совершенно разными средами безразлично, одна из них имела OpenCV версии 4.2.0, а другая - версию 4.1.2. Приглашаю вас лично убедиться в резкой разнице между двумя версиями,использующими один и тот же код, в тот момент, когда из-за моей неопытности я потерял дни, не понимая, что происходит, однако когда Я понял, что это ошибка OpenCV, я опубликовал эту проблему в репозитории GitHub OpenCV.

Чтобы решить и избежать подобных проблем навсегда, я настоятельно рекомендую научиться использовать контейнеры Docker. даст тот же результат на любом компьютере в мире! Если вы хотите очень быстро изучить Docker, я рекомендую просмотреть эти МООК от Coursera: Лучшие курсы по Docker — изучайте Docker онлайн | Курсера

Более дружественной и менее радикальной альтернативой Docker является использование Anaconda (рекомендуется для машинного обучения) или Python Virtual Environments.

№3. Отслеживайте каждый этап эксперимента

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

Прикреплю несколько скриншотов, как выглядит каждый прогон процесса обучения для всех моих проектов:

Wandb может занять у нас целую статью, чтобы объяснить и хорошо изучить его, поэтому мы продолжим позже в следующей статье, однако, если вы хотите начать сейчас, я рекомендую это руководство от Towards Data Science, поздоровайтесь с воспроизводимостью.

Спасибо, что дочитали статью до конца! Я ценю вашу поддержку и надеюсь, что в будущем вы всегда будете помнить о воспроизводимости своих экспериментов, это избавит вас от многих головных болей! Если вам нужна помощь с воспроизводимостью вашей модели, скажите мне, и я посмотрю 😀