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

Представьте, если бы мы не могли перенести наши знания из одной ситуации в другую. Как бы выглядел наш мир?

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

Вопрос в том, могут ли машины делать то же самое?

Машинное обучение

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

«Машинное обучение никуда не денется».

Заявление об ограничении ответственности: в следующих двух разделах представлены мои мысли и наблюдения.

Здесь, чтобы остаться

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

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

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

Разрушая плохие мифы

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

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

Распространенный миф о создании моделей машинного обучения сложен, и компаниям требуется более 100 преданных своему делу инженеров машинного обучения, чтобы создать что-нибудь значимое. Это настолько далеко от истины, насколько это возможно. Хотя создание передовых моделей может быть трудным, большинство компаний не будут создавать новые методы, а будут использовать или улучшать существующие методы. Как и в мире технологий, Apple и Microsoft со всего мира создают технологические стеки, в то время как остальные из нас используют их, мир машинного обучения не будет исключением. Дело в том, что предприятия могут создавать значимые приложения машинного обучения, используя существующие модели или применяя трансферное обучение из существующих моделей с открытым исходным кодом.

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

Фон

Прежде чем обсуждать трансферное обучение, давайте разберемся, как работает глубокое обучение.

Модели глубокого обучения - это аппроксимация функций для функций

Модели глубокого обучения можно рассматривать как приближение функций для функций. Каждый слой внутри него представляет собой аппроксимацию функции для конкретной функции (ей). Каждый последующий слой представляет собой приближение составной функции для предшествующих ему объектов. [1]

Скажем, у нас есть заранее созданная модель с открытым исходным кодом, позволяющая идентифицировать президента США по фотографии крупным планом. Первоначальный слой представляет собой аппроксимацию функции для идентификации краев на изображении, следующий слой представляет собой аппроксимацию функции для определения комбинации краев, а затем для определения черт лица, таких как глаза, носы и т. Д., И так далее для каждого оставшегося слоя, пока не появится последний слой завершает картину Джорджа Вашингтона или любого другого президента.

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

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

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

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

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

Мотивация к трансфертному обучению состоит в том, чтобы максимально использовать знания из предварительно обученных моделей и использовать их в новых моделях для повышения производительности новой модели, избегая дорогостоящих усилий по сбору данных и маркировке. [2]

Обзор обучения - публикация Синно Цзялин Пана и Цян Янга является обязательной к прочтению и подробно описывает трансферное обучение. [2]

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

Ниже я перечисляю две наиболее распространенные стратегии трансферного обучения.

Экстракторы функций

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

Как мы уже обсуждали, нижние уровни моделей глубокого обучения извлекают низкоуровневые функции, а более высокие уровни основываются на предыдущих слоях и извлекают более сложную функцию [1]. Предварительно обученные модели, такие как ResNet, были обучены на миллионах картинок [3]. Вы можете использовать такие модели без окончательного классифицирующего слоя и получить представление признаков для ваших данных изображения. Это богатое представление функций можно затем передать в вашу модель поверхностного классификатора для вывода вашей задачи.

Точная настройка предварительно обученной модели

Это немного более сложный подход. При этом вы не заменяете последний слой предварительно обученной модели, вместо этого вы выборочно замораживаете несколько слоев и обучаете / настраиваете другие слои предварительно обученной модели. Мы используем общую архитектуру предварительно обученной модели и выбираем, какие слои тренировать. Это помогает нам достичь лучших результатов при меньшем времени тренировки [5].

«Оба этих подхода очень практичны и оказались полезными в реальных задачах».

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

Пример использования: распознавание лиц

Мы будем использовать предварительно обученную модель InceptionResNetV2. Эта модель обучается в ImageNet: базе данных изображений, содержащей более 14 миллионов изображений и классифицирующих более 20 000 категорий [4]. Мы будем использовать эту предварительно обученную модель для извлечения признаков и подключим ее к нашей модели распознавания лиц, которая идентифицирует наших сотрудников на основе их изображений из нашей базы данных. Этот вариант использования будет продемонстрирован с использованием метода извлечения признаков.

Распознавание лиц можно сделать лучше и точнее с помощью реализации ограничивающей рамки, в которой вы извлекаете лицо из изображения, а затем применяете функцию распознавания лиц к извлеченному лицу. Реализации ограничивающего прямоугольника могут быть выполнены с использованием модели OpenCV или DeepNet (YOLO) - тема, которую мы обсудим в другой день.