Абстрактный

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

Ключевые слова: машинное обучение, трансферное обучение, ImageNet, CIFAR10.

Введение

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

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

Материалы и методы

Сначала нам нужно импортировать и изучить наш набор данных CIFAR10. CIFAR10 — это коллекция помеченных крошечных изображений формы (32, 32, 3), собранная Алексом Крижевским, Винодом Наиром и Джеффри Хинтоном. Набор данных содержит 50000 изображений, так как обучающая партия относится к 10 категориям. и 10000 изображений в действительной партии.

Набор данных относится к 10 категориям:

['Самолет', 'Автомобиль', 'Птица', 'Кошка', 'Олень', 'Собака', 'Лягушка', 'Лошадь', 'Корабль', 'Грузовик']

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

Импорт предварительно обученной модели — это первый шаг в поиске правильной комбинации путем извлечения знаний из исходной области — здесь представлена ​​предварительно обученная модель VGG16 — и целевой задачи по классификации набора данных CIFAR10 на основе 10 категорий.

Исходная модель принимает формы для (224, 224, 3), а CIFAR10 состоит из крошечных изображений размером (32, 32, 3), и необходимо упомянуть, что каждая модель имеет минимально необходимый размер, поскольку VGG16 может принимать до 32 пикселей, но работает на крошечном размере ограничить количество извлеченных функций.

Таким образом, лямбда-слой должен принять форму (32, 32, 3) и перейти к соответствующей форме. и последний слой Flatten помогает позже обслуживать полностью связанный слой.

В последнем выводе кода мы видим, что мы уже получили 14 714 688 общих параметров и 0 обучаемых параметров. Это результат замораживания модели и предотвращения получения дополнительных знаний, поскольку мы стремимся собрать из нее существующие функции и знания.

Последний шаг, прежде чем мы продолжим работу с экстрактором признаков, — это предварительная обработка наших данных так же, как исходная модель и исходный набор данных предварительно обработаны. в случае CIFAR10, поскольку все изображения имели одинаковый размер, нам не нужно стандартизировать размер, но масштабирование функций может быть полезным для нормализации наших входных данных. =input_shape)) model.add(Dropout(0.3)) model.add(Dense(512, активация='relu')) model.add(Dropout(0.3)

Теперь пришло время сохранить наши функции в переменной для обучения позже.

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

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

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

=================================================================
Total params: 27,828,042
Trainable params: 13,113,354
Non-trainable params: 14,714,688
_________________________________________________________________

Результаты

Предыдущая модель работает хорошо, достигая точности 97% в наборе обучающих данных и точности 75% в наборе данных проверки.

Обсуждение

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

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

Цитируемая литература

Всеобъемлющее практическое руководство по переносу обучения с помощью реальных приложений в области глубокого обучения — [Dipanjan (DJ) Sarkar]

Практическое машинное обучение с помощью Scikit-Learn и TensorFlow: концепции, инструменты и методы создания интеллектуальных систем — Орельен Жерон

Часть 1: Классификация изображений с использованием признаков, извлеченных с помощью трансферного обучения в Керасе — [Ахмед Гад]