www.machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home

Передача обучения с PyTorch

Дата публикации May 30, 2017

Будущее машинного обучения так ярко, потому что стимулы распределены по всем направлениям: крупные игроки с нетерпениеминструменты с открытым исходным кодоми инвестировать вболее быстрое оборудованиечтобы избежать их основанных на рекламе бизнес-моделей. Tinkerers обнаружитьнишевые приложениянеслыханно раньше. Данные становятся более взаимозаменяемыми длячастное, общественное, научное, досуговое и неблагоприятное использование, Я мог часами говорить о совершенном шторме впереди (и, может быть, о некоторых противоположных мыслях), но давайте придерживаться практической вещи:использовать недавний рост доступныхпредварительно обученные модели машинного обучения,

Передача обучения

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

Себастьян Рудерприятно повторил то, что выигрывает от повторного использования модели.

В частности, трансферное обучение улучшается во всех аспектах, которые определяют технические аспекты проекта машинного обучения:

  • Человеческая эффективность, Вам нужны эксперты, если вы хотите выжать последнюю унцию сигнала, сделать модели понятными, гибкими и надежными. Благодаря научным исследованиям, архитектуры всплывают, которые проверяются в бою при решении связанных задач.
  • Вычислить эффективность, Самая современная статья обычно тренируется около двух недель на кластерах от 2 до 8 графических процессоров. Хотя на самом деле нет предела. С обучением передачи вы можете сэкономить на внутренних параметрах, делая это только частично или реже.
  • Эффективность данных, Если кто-то еще обучался работе с большими наборами данных (которые ему или ей даже не нужно раскрывать), в большинстве случаев требуется меньше данных, относящихся к конкретному домену. На самом деле, это невероятно, как вы можетеперепрофилировать модельсодержится менее чем в 5 МБ загрузки.

Ориентир Архитектуры

Трансферное обучение широко используется для лучшего распознавания определенных категорий изображений.Canziani et al. (2016)сравнил эффективность вычислений для основных архитектур при конкуренции в наборе данных imagenet.

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

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

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

Полученные результаты

Есть несколько причин, по которым PyTorch получает свою добычу в наши дни.

Достаточно справедливо: фреймворк достаточно полон, лаконичен, динамически определяет весь вычислительный граф в коде и прост в отладке. Шесть архетипов могут быть загружены одной строкой кода из пакета torchvision: AlexNet, DenseNets, Inception, SqueezeNet и VGG. Чтобы получить общее представление о том, как они появились, я рекомендуюэто читать,

К сожалению, API делаетне разрешенозагружать предварительно обученные модели с произвольным числом классов без переопределения конечных слоев вручную. Поэтому я написал функцию, которая решает это принципиальным образом. Он объединяет предварительно обученные параметры, чтобы они не мешали пользовательским выходным слоям. Таким образом, мы можем систематически сравнивать показатели производительности, которые нас интересуют, во всех доступных архитектурах.

SGD с одинаковым импульсом и скоростью обучения для каждой модели и 15 эпох на 2xK80

Модели на графике были переобучены только на конечных слоях (мелко), для всего набора параметров (глубоко) или из его начального состояния (с нуля). Во всех запусках двойные графические процессоры K80 работали примерно на 75%.

Как показывают данные, SqueezeNet 1.1 обещает быть эффективной вычислительной архитектурой Поскольку разделение на переподготовленные и статические слои несколько произвольно, заключение, основанное исключительно на моделях с мелкой переподготовкой, было бы слишком надуманным. Например, конечный классификатор VGG13 имеет 8194 параметра, тогда как последний уровень ResNet34 более узкий с 1026 параметрами. Следовательно, только гиперпараметрический поиск по стратегиям обучения сделает сравнения для данной цели действительно действительными. Тем не менее, SqueezeNet научился невероятно быстро и поверхностно изучать малое количество классов в этом наборе данных (точнее, двоичном).

Вывод

Следует отметить, что глубокая переподготовка дает меньшую точность при том же количестве времени обучения, что и мелкая переподготовка. Это случилось со мной и с другими моделями в других задачах. Моя теория заключается в том, что отрыв более глубоких сверток от их предыдущих локальных оптимумов происходит медленно в среднем (небольшие градиенты ошибок) и на менее гладком многообразии после случайной инициализации. Таким образом, параметры оказываются рядом с переходной фазой. Такой прерывистый беспорядок должен быть особенно актуален, если невидимые функции отличаются по масштабу по сравнению с исходными данными, как в случае с сегодняшним набором игрушечных данных: иногда рядом находятся муравьи, а иногда вы наблюдаете целый рой.

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

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

Счастливого повторного обучения!

Оригинальная статья

Footer decor

© www.machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map