1. Введение

Последнее обновление: 28.03.2022
Машинное обучение
Машинное обучение — это область, которая развивается с головокружительной скоростью. Каждый день появляются новые исследования и возможности, позволяющие применять полученные знания в тех областях, которые раньше были невозможны.
В результате этих релизов обычно создается модель. Модели можно понимать как очень длинные математические уравнения, которые, получив на вход изображение, выдают результат (например, классификацию).
- А что, если вы захотите использовать одну из этих новых моделей со своими собственными данными?
- Какую пользу вы можете извлечь из этих передовых моделей для решения вашей задачи или для вашего приложения?
Этот практический урок поможет вам легко настроить модели машинного обучения под ваши собственные данные.
Создание и обучение моделей машинного обучения сопряжено со многими трудностями:
- Это занимает много времени.
- Использует большие объемы данных.
- Требуются экспертные знания в таких областях, как математика и статистика.
- Требует значительных ресурсов: обучение некоторых моделей может занять несколько дней.
Создание новых архитектур моделей требует много времени, множества экспериментов и многолетнего опыта. Но что, если бы вы могли использовать все эти знания на собственных данных, просто адаптировав передовые исследования под свою задачу? Это возможно с помощью метода, называемого трансферным обучением !
В этом практическом занятии вы узнаете, как применять трансферное обучение, почему оно работает и когда его следует использовать.
Что вы узнаете
- Что такое трансферное обучение и когда его применять.
- Как использовать трансферное обучение.
- Как выполнить тонкую настройку моделей.
- Как использовать TensorFlow Lite Model Maker.
- Как использовать TensorFlow Hub.
Что вам понадобится
- Весь код выполняется с помощью Google Colaboratory, поэтому вам не нужно ничего устанавливать на свой компьютер. Для входа в Colab вам потребуется только доступ к интернету и учетная запись Google.
- Базовые знания TensorFlow и API Keras.
- Знание языка Python.
Если у вас нет базовых знаний TensorFlow или машинного обучения, вы все равно можете изучить трансферное обучение. Прочитайте следующий шаг «Что такое трансферное обучение», чтобы узнать теорию, лежащую в основе этой техники, а затем перейдите к разделу «Трансферное обучение с помощью Model Maker». Если вы хотите углубиться в тему и рассмотреть процесс более подробно, вы найдете это в разделах, посвященных трансферному обучению с TensorFlow Hub.
2. Что такое трансферное обучение?
Предварительно обученная модель — это сохраненная нейронная сеть, которая ранее была обучена на большом наборе данных, как правило, на крупномасштабной задаче классификации изображений. Вы можете использовать предварительно обученную модель как есть или использовать трансферное обучение для адаптации этой модели к конкретной задаче.
Основная идея трансферного обучения для классификации изображений заключается в том, что если модель обучена на достаточно большом и универсальном наборе данных, она фактически будет служить универсальной моделью визуального мира. Затем можно использовать полученные карты признаков, не начиная с нуля обучение большой модели на большом наборе данных.
Существует два способа настройки модели машинного обучения.
- Извлечение признаков : Используйте представления, полученные предыдущей сетью, для извлечения значимых признаков из новых образцов. Вы просто добавляете новый классификатор, обученный с нуля, поверх предварительно обученной модели, чтобы вы могли повторно использовать карты признаков, полученные ранее для этого набора данных. Вам не нужно (пере)обучать всю модель. Базовая сверточная сеть уже содержит признаки, которые в целом полезны для классификации изображений. Однако заключительная часть классификации предварительно обученной модели специфична для исходной задачи классификации, а затем и для набора классов, на которых была обучена модель.
- Тонкая настройка : Разморозьте несколько верхних слоев замороженной базовой модели и обучите одновременно как вновь добавленные слои классификатора, так и последние слои базовой модели. Это позволяет нам «тонко настроить» представления признаков более высокого порядка в базовой модели, чтобы сделать их более релевантными для конкретной задачи.
Метод извлечения признаков ускоряет обучение, но с помощью тонкой настройки можно добиться лучших результатов.
Вы попробуете оба метода (извлечение признаков и тонкую настройку), используя два разных способа переноса обучения:
- Библиотека TensorFlow Lite Model Maker автоматически выполняет большую часть работы по обработке данных и созданию модели, значительно упрощая процесс. Полученную модель также легко экспортировать для использования на мобильных устройствах и в браузере.
- Модели TensorFlow Hub используют обширное хранилище моделей машинного обучения, доступное на TensorFlow Hub. Исследователи и сообщество вносят свой вклад в создание этих моделей, благодаря чему самые современные модели становятся доступны гораздо быстрее и в большем разнообразии.
3. Перенос обучения с помощью Model Maker
Теперь, когда вы знаете, что лежит в основе трансферного обучения, давайте начнем использовать библиотеку TensorFlow Lite Model Maker — инструмент, который поможет вам сделать это простым способом.
Библиотека TensorFlow Lite Model Maker — это библиотека с открытым исходным кодом, которая упрощает процесс трансферного обучения и делает его гораздо более доступным для разработчиков, не специализирующихся на машинном обучении, таких как разработчики мобильных и веб-приложений.
Блокнот Colab проведет вас через следующие шаги:
- Загрузите данные.
- Разделите данные.
- Создайте и обучите модель.
- Оцените модель.
- Экспортируйте модель.
После этого шага вы можете начать применять трансферное обучение к своим собственным данным, следуя тому же самому процессу.
Кооператив
Далее перейдём к Google Colab для обучения собственной модели.
На ознакомление с объяснением и пониманием основных принципов работы блокнота потребуется около 15 минут.
Плюсы :
- Простой способ настройки моделей.
- Нет необходимости разбираться в TensorFlow или API Keras.
- Инструмент с открытым исходным кодом, который можно модифицировать, если пользователю требуется что-то конкретное, что еще не реализовано.
- Модель экспортируется напрямую для запуска на мобильных устройствах или в браузере.
Минусы
- Меньше возможностей для настройки, чем при построении полного конвейера и самостоятельной модели, как в двух предыдущих методах.
- Даже при выборе базовой модели не все модели могут использоваться в качестве базовой.
- Не подходит для больших объемов данных, где конвейер обработки данных более сложен.
4. Найдите модель на TensorFlow Hub.
К концу этого раздела вы сможете:
- Найдите модели машинного обучения на TensorFlow Hub.
- Разберитесь в вопросах, касающихся коллекций.
- Разберитесь в различных типах моделей.
Для осуществления трансферного обучения необходимо начать с двух вещей:
- Данные, например, изображения объектов, которые вы хотите распознать.
- Базовая модель, которую вы можете настроить под свои данные.
Часть, касающаяся данных, обычно зависит от бизнес-задач, но самый простой способ — сделать много снимков того, что вы хотите распознать. Но как насчет базовой модели? Где ее можно найти? Вот тут-то и может помочь TensorFlow Hub.
TensorFlow Hub — это репозиторий моделей для ваших нужд, связанных с моделями TensorFlow.
Вы можете искать и читать документацию по тысячам моделей, готовых к использованию, и многие из них уже подготовлены для трансферного обучения и тонкой настройки.
Поиск модели
Давайте сначала выполним простой поиск моделей для использования в TensorFlow Hub, которые вы сможете использовать в своем коде позже.
Шаг 1: Откройте сайт tfhub.dev в своем браузере.

Для переноса знаний в область изображений нам необходимы векторы признаков . Векторы признаков похожи на модели классификации, но без классификационного блока.
Векторы признаков позволяют преобразовывать изображения в числовое представление в N-м пространстве (где N — количество измерений выходного слоя модели).
На TFHub вы можете выполнить поиск векторных изображений, щелкнув по конкретной карточке.

Вы также можете выполнить поиск по названию модели, используя фильтр слева, чтобы отобразить только Image feature vectors .

Карточки с синими значками — это коллекции моделей . При нажатии на коллекцию изображений вы получите доступ ко множеству похожих моделей на выбор. Давайте выберем коллекцию изображений.

Прокрутите вниз и выберите MobileNet V3 . Подойдет любой из векторных представлений.

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

На данный момент вам нужен только URL-адрес вверху. Это идентификатор модели, и именно так вы можете легко получить доступ к модели из библиотеки TensorFlow Hub.
5. Перенос обучения с помощью TensorFlow Hub
Теперь, когда вы выбрали модель для использования, давайте настроим её, загрузив с помощью метода KerasLayer из библиотеки TensorFlow Hub.
Этот метод загружает модель таким образом, что её можно использовать в качестве слоя на вашей модели, что позволяет вам строить модель вокруг этого слоя.
Раньше, когда вы учились пользоваться Model Maker, все внутренние механизмы были скрыты от вас, чтобы упростить понимание. Теперь вы увидите, что Model Maker делает за кулисами.
Кооператив
Далее перейдём к Google Colab для обучения собственной модели.
На ознакомление с объяснением и пониманием основных принципов работы блокнота потребуется около 20 минут.
Плюсы :
- Тысячи доступных моделей, предоставленных исследователями и сообществом, обучены на различных наборах данных.
- Модели для всех задач, таких как компьютерное зрение, обработка текста и звука.
- Легко экспериментировать с различными похожими моделями. Изменение базовой модели может потребовать изменения всего одной строки.
Минусы
- Для использования моделей по-прежнему необходимы некоторые знания TensorFlow/Keras.
Если вы хотите углубиться в тему, вы также можете использовать трансферное обучение с помощью приложения Keras . Это очень похожий процесс на использование TensorFlow Hub, но только с основными API TensorFlow.
6. Поздравляем!
Поздравляем, вы узнали, что такое трансферное обучение и как применять его к собственным данным!
В этом практическом занятии вы научились адаптировать модели машинного обучения к вашим собственным данным, используя метод, называемый трансферным обучением.
Вы опробовали 2 формы трансферного обучения:
- Используя такой инструмент, как TensorFlow Lite Model Maker.
- Использование вектора признаков из TensorFlow Hub.
Оба варианта имеют свои преимущества и недостатки, а также множество возможных конфигураций, соответствующих вашим конкретным потребностям.
Вы также узнали, что можно пойти немного дальше и доработать модели, немного изменив их веса, чтобы они лучше соответствовали вашим данным.
Оба варианта позволяют выполнять тонкую настройку моделей.
Перенос обучения и тонкая настройка применяются не только к моделям, работающим с изображениями. Поскольку идея заключается в использовании изученного представления предметной области для настройки под ваш набор данных, его можно использовать также для текстовой и аудиосреды.
Следующие шаги
- Попробуйте сделать это со своими данными.
- Поделитесь с нами своими разработками и отметьте TensorFlow в социальных сетях, разместив ссылки на свои проекты.
Узнать больше
- Для получения дополнительной информации о тонкой настройке современных моделей, таких как BERT, см. раздел «Тонкая настройка модели BERT» .
- Для получения дополнительной информации о переносе обучения для аудиомоделей см. раздел «Перенос обучения с помощью YAMNet для классификации звуков окружающей среды» .