Повышение производительности сверточной нейронной сети!

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

· Классификация изображений, обнаружение объектов, сегментация, распознавание лиц;

· Классификация кристаллической структуры с помощью сверточной нейронной сети;

· Автомобили с автоматическим управлением, использующие системы технического зрения на базе CNN;

· И, конечно же, многое другое!

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

Красная тема этого руководства - узнать, как улучшить производительность CNN?

Давайте начнем …

Часто задаваемый вопрос:

Как повысить производительность модели глубокого обучения?

Его можно спросить как:

Как повысить точность?

О Боже! Мой CNN работает плохо ..

Не волнуйтесь ...

Вот учебное пособие. Оно даст вам определенные идеи, чтобы поднять производительность CNN.

Список разделен на 4 темы.

1. Параметры настройки

2. Увеличение графических данных

3. Более глубокая топология сети

4. Проблема переобучения по Генделю

Ой! Круто .. Начнем с объяснения

1. Параметры настройки

Чтобы улучшить производительность модели CNN, мы можем настроить такие параметры, как эпохи, скорость обучения и т. Д. Количество эпох определенно влияет на производительность. Для большого количества эпох есть улучшение производительности. Но нужно провести определенные эксперименты для определения эпох, скорости обучения. Мы видим, что по прошествии определенных эпох не наблюдается снижения потерь в обучении и повышения точности обучения. Соответственно мы можем определить количество эпох. Также мы можем использовать слой выпадения в модели CNN. Согласно приложению, во время компиляции модели необходимо выбрать подходящий оптимизатор. Мы можем использовать различные оптимизаторы, например SGD, rmsprop и т. Д. Необходимо настроить модель с помощью различных оптимизаторов. Все это влияет на производительность CNN.

2. Увеличение графических данных

«Глубокое обучение актуально только тогда, когда у вас есть огромный объем данных». Это не так. CNN требует способности автоматически изучать функции на основе данных, что обычно возможно только при наличии большого количества обучающих данных.

Если у нас меньше данных по обучению ... что делать?

Решение здесь .. используйте Увеличение изображения

Параметры увеличения изображения, которые обычно используются для увеличения количества выборок данных, - это масштабирование, сдвиг, вращение, функция предварительной обработки и т. Д. Использование этих параметров приводит к созданию изображений с этими атрибутами во время обучения модели Deep Learning. Образцы изображений, созданные с использованием увеличения изображения, в целом существующие образцы данных увеличиваются почти в 3–4 раза.

Еще одно преимущество увеличения данных заключается в том, что, поскольку мы знаем, что CNN не является инвариантным к вращению, с помощью дополнения мы можем добавлять изображения в набор данных, учитывая вращение. Однозначно это повысит точность системы.

3. Более глубокая топология сети

Теперь давайте поговорим о широкой сети и глубокой сети!

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

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

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

Но почему не очень глубокая и очень широкая сеть?

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

4. Проблема переобучения по Генделю

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

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

Что такое переобучение и недообучение?

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

Недостаточное оснащение относится к модели, которая плохо работает как с данными поездов, так и с тестовыми данными. Это очень опасно. Не правда ли? Модель не очень хорошо подходит для самих обучающих данных.

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

Что такое систематическая ошибка и дисперсия?

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

Как предотвратить переобучение или переобучение?

Начнем с недостаточного оснащения:

Пример недостаточного соответствия: ваша модель дает 50% точности данных поезда и 80% точности данных испытаний?

Это самая большая проблема ..

Почему это происходит?

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

Решение…

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

Переоснащение:

Пример переобучения: ваша модель дает 99% точности для данных поезда и 60% точности для тестовых данных?

Переобучение - распространенная проблема в машинном обучении.

Есть определенные решения, чтобы избежать переобучения

1. Тренируйтесь с большим количеством данных

2. Ранняя остановка:

3. Перекрестная проверка

давай начнем обсуждать

1. Тренируйтесь с большим объемом данных:

Тренировка с большим количеством данных помогает повысить точность режима. Большой объем обучающих данных может помочь избежать проблемы переобучения. В CNN мы можем использовать увеличение данных для увеличения размера обучающей выборки.

2. Ранняя остановка:

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

3. Перекрестная проверка:

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

Что такое перекрестная проверка?

Начнем с k-кратной перекрестной проверки. (где k - любое целое число)

Разделите исходный набор обучающих данных на k равных подмножеств. Каждое подмножество называется складкой. Назовем складки f1, f2,…, fk.

· Для i = 1 - i = k

· Сохраните сгиб fi как набор для проверки, а все оставшиеся k-1 сгибы в обучающем наборе с перекрестной проверкой.

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

· Оцените точность своей модели машинного обучения, усреднив точность, полученную во всех k случаях перекрестной проверки.

Рис. 4 описывает 5-кратную перекрестную проверку, где обучающий набор данных разделен на 5 равных поднаборов данных. Всего 5 итераций. На каждой итерации 4 поднабора данных используются для обучения, а один поднабор данных используется для тестирования.

Перекрестная проверка определенно помогает уменьшить проблему переобучения.

Вперед!

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