
Содержание статьи
автор Харини Джанакираман

Производительность большинства алгоритмов обучения старых поколений будет плато. Глубокое обучение, которое тренирует большие нейронные сети, масштабируемо, а производительность становится лучше, поскольку вы предоставляете им больше данных. — Эндрю Нг
Глубокая учеба не занимает много времени или вычислительных ресурсов. Это тоже не требует очень сложного кода, а в некоторых случаях даже не большого количества обучающих данных. Подобранные лучшие методы теперь доступны в виде библиотек, позволяющих легко подключать и писать собственные архитектуры нейронных сетей с использованием минимального количества кода для достижения точности предсказания более 90%.
Две самые популярные библиотеки глубокого обучения: (1) pytorch, созданный Facebook (сегодня мы будем использовать fastai, построенный на основе pytorch) и (2) фреймворк keras-tensorflow, созданный Google.
Проект
Мы построим классификатор изображений, используя модель сверточной нейронной сети (CNN), чтобы предположить, есть ли данное изображение изображением Дрогона или Вицериона (любой фанат «Игры престолов» в доме? Хлопайте, чтобы сказать «Привет!»).
Вы можете адаптировать эту постановку проблемы к любому интересующему типу классификации изображений. Вот несколько идей: кот или собака (классическая глубокая учеба 101), если человек носит очки или нет, автобус или машина, хот-дог против не-хот-дога (поклонники Силиконовой долины также говорят yay! 😉 ).
Шаг 1: Установка
Вы можете использовать любую платформу облачных вычислений с ускоренным графическим процессором для запуска своей модели. Для целей этого блога мы будем использовать Paperspace (самый доступный). Доступны полные инструкции по запуску и запуску. здесь.
После настройки вы можете запустить ноутбук Jupyter на этой машине с помощью такой команды:
jupyter notebook
Это даст вам URL локального хоста, который вы можете открыть в своем браузере и заменить «localhost» на IP-адрес вашего компьютера, чтобы запустить свой ноутбук.

Теперь вы можете скопировать блокнот iPython и файлы наборов данных в структуру каталогов ниже мое гитхаб-репо.

Примечание: Не забудьте выключить аппарат из консоли бумажного пространства, когда закончите, чтобы избежать случайной зарядки.
Шаг 2: Обучение
Следуйте инструкциям в блокноте, чтобы инициализировать библиотеки, необходимые для этого упражнения, и укажите расположение PATH в вашем каталоге данных. Обратите внимание, что каждый блок кода можно запустить с помощью Shift+enter. Если вам нужна дополнительная информация о командах ноутбука Jupyter, вы можете прочитать больше здесь.
Теперь, переходя к части обучения классификатора изображений, следующие три строки кода образуют ядро построения модели глубокого обучения:
- данные: представляет наборы данных проверки и обучения.
- учиться: содержит модель
- learn.fit(learning_rate,epoch): Установите модель, используя два параметра – скорость обучения и эпохи.

Здесь мы установили скорость обучения на уровне «0,01». Скорость обучения должна быть достаточно малым числом, чтобы вы перемещались по изображению с постепенными шагами этого фактора, чтобы изучать точность. Но он также не должен быть слишком мал, поскольку это приведет к слишком много шагов/слишком длинного для обучения. В библиотеке есть способ поиска скорости обучения «lr_find()», чтобы найти оптимальный.
Здесь в коде Epoch установлено значение 3, и это означает, сколько раз вы должны запускать пакет. Мы можем бегать сколь угодно раз, но после точки точность начнет ухудшаться из-за переоборудования.

Шаг 3: Прогнозирование
Теперь мы выполним прогнозирование данных проверки, используя обученную модель.

Pytorch дает журнал предсказания, поэтому, чтобы получить вероятность, вы должны получить e в степени использования numpy. Следуйте пошаговым инструкциям в тетради в моем репозитория github. Вероятность, близкая к 0, означает, что это изображение Дрогона, а вероятность, близкая к 1, означает, что это изображение Визериона.
Шаг 4: Визуализация
Для наилучшей визуализации результатов прогноза можно употреблять функцию построения графика. На рисунке ниже показаны правильно классифицированные данные проверки: 0,2–0,3 указывает, что это Дрогон, и вероятность 0,7–0,8, что указывает, что это Визерион.



Вы можете увидеть некоторые неопределенные прогнозы, если они задерживаются ближе к 0,5 вероятности.

Классификатор изображений в некоторых сценариях может иметь неопределенные прогнозы, например в случае длиннохвостовых изображений, поскольку он захватывает небольшую часть квадрата за раз.
В этих случаях можно применить методы улучшения для получения лучших результатов, таких как увеличение данных, оптимизация скорости обучения, использование дифференциальной скорости обучения для разных уровней и увеличение времени тестирования. Эти передовые концепции будут рассмотрены в следующих публикациях.
Этот блог был вдохновлен видео Fastai CNN. Чтобы получить глубокое понимание и продолжить свои поиски в Deep Learning, вы можете пройти знаменитый набор курсов Эндрю Нг на курсе coursera.
Если вам это понравилось, пожалуйста, хлопайте ? сo другие также могут это увидеть! Следите за мной на Twitter @HariniLabs или Мedium чтобы получать новые сообщения или просто поздороваться 🙂
PS: Подпишитесь на мою рассылку здесь быть первым, кто получит свежий новый контент, и он полон доз вдохновения из мира #WomenInTech — и мужчины тоже могут зарегистрироваться:)