Глубокое обучение — Deep learning — это набор алгоритмов машинного обучения, которые моделируют высокоуровневые абстракции в данных, используя архитектуры, состоящие из множества нелинейных преобразований. Согласитесь, эта фраза звучит угрожающе. Но всё не так страшно, если о глубоком обучении рассказывает Франсуа Шолле, который создал Keras — самую мощную библиотеку для работы с нейронными сетями. Познакомьтесь с глубоким обучением на практических примерах из самых разнообразных областей. Книга делится на две части: в первой даны теоретические основы, вторая посвящена решению конкретных задач. Это позволит вам не только разобраться в основах DL, но и научиться использовать новые возможности на практике.
Обучение — это путешествие длиной в жизнь, особенно в области искусственного интеллекта, где неизвестностей гораздо больше, чем определенности. Внутри приведен отрывок «Исследование и мониторинг моделей глубокого обучения с использованием обратных вызовов Keras и TensorBoard».
Об этой книге
Книга написана для всех желающих начать изучение технологии глубокого обучения с нуля или расширить свои знания. Инженеры, работающие в области машинного обучения, разработчики программного обеспечения и студенты найдут много ценного на этих страницах.
В этой книге предлагается реальное практическое исследование глубокого обучения. Мы старались избегать математических формул, предпочитая объяснять количественные понятия с помощью фрагментов кода и формировать практическое понимание основных идей машинного и глубокого обучения.
Вы увидите более 30 примеров программного кода с подробными комментариями, практическими рекомендациями и простыми обобщенными объяснениями всего, что нужно знать для использования глубокого обучения в решении конкретных задач.
В примерах используются фреймворк глубокого обучения Keras, написанный на Python, и библиотека TensorFlow в качестве внутреннего механизма. Keras — один из популярнейших и быстро развивающихся фреймворков глубокого обучения. Он часто рекомендуется как наиболее удачный инструмент для начинающих изучать глубокое обучение.
Прочитав эту книгу, вы будете четко понимать, что такое глубокое обучение, когда оно применимо и какие ограничения имеет. Вы познакомитесь со стандартным процессом интерпретации и решения задач машинного обучения и узнаете, как бороться с часто встречающимися проблемами. Вы научитесь использовать Keras для решения практических задач — от распознавания образов до обработки естественного языка: классификации изображений, временного прогнозирования, анализа эмоций, генерации изображений и текста и многого другого.
Исследование и мониторинг моделей глубокого обучения с использованием обратных вызовов Keras и TensorBoard
В этом разделе мы рассмотрим способы получения более полного доступа к внутренним механизмам модели во время обучения и управления ими. Запуск процедуры обучения на большом наборе данных и продолжительностью в десятки эпох вызовом model.fit() или model.fit_generator() напоминает запуск бумажного самолетика: придав начальный импульс, вы больше никак не управляете ни траекторией его полета, ни местом приземления. Чтобы избежать отрицательных результатов (и потери бумажного самолетика), лучше использовать не бумажный самолетик, а управляемый беспилотник, анализирующий окружающую обстановку, посылающий информацию о ней обратно оператору и автоматически управляющий рулями в зависимости от своего текущего состояния. Приемы, которые будут представлены здесь, превратят вызов model.fit() из бумажного самолетика в интеллектуальный автономный беспилотник, способный оценивать свое состояние и своевременно выполнять управляющие воздействия.
Применение обратных вызовов для воздействия на модель в ходе обучения
Многие аспекты обучения модели нельзя предсказать заранее. Например, нельзя предсказать заранее количество эпох, обеспечивающее оптимальное значение потерь на проверочном наборе. В примерах, приводившихся до сих пор, использовалась стратегия обучения с достаточно большим количеством эпох. Таким образом достигался эффект переобучения, когда сначала выполняется первый прогон, чтобы выяснить необходимое количество эпох обучения, а затем второй — новый, с самого начала — с выбранным оптимальным количеством эпох. Конечно, это довольно расточительная стратегия.
Гораздо лучше было бы остановить обучение, как только выяснится, что оценка потерь на проверочном наборе перестала улучшаться. Это можно реализовать с использованием механизма обратных вызовов в Keras. Обратный вызов — это объект (экземпляр класса, реализующего конкретные методы), который передается в модель через вызов fit и который будет вызываться моделью в разные моменты в процессе обучения. Он имеет доступ ко всей информации о состоянии модели и ее качестве и может предпринимать следующие действия: прерывать обучение, сохранять модели, загружать разные наборы весов или как-то иначе изменять состояние модели.
Вот несколько примеров использования обратных вызовов:
- фиксация состояния модели в контрольных точках — сохранение текущих весов модели в разные моменты в ходе обучения;
- ранняя остановка — прерывание обучения, когда оценка потерь на проверочных данных перестает улучшаться (и, конечно, сохранение лучшего варианта модели, полученного в ходе обучения);
- динамическая корректировка значений некоторых параметров в процессе обучения, например шага обучения оптимизатора;
- журналирование оценок для обучающего и проверочного наборов данных в ходе обучения или визуализация представлений, получаемых моделью, по мере их обновления — индикатор выполнения в Keras, с которым вы уже знакомы, — обратный вызов!
Модуль keras.callbacks включает в себя ряд встроенных обратных вызовов. Вот далеко не полный список:
keras.callbacks.ModelCheckpoint
keras.callbacks.EarlyStopping
keras.callbacks.LearningRateScheduler
keras.callbacks.ReduceLROnPlateau
keras.callbacks.CSVLogger
Рассмотрим некоторые из них, чтобы получить представление о том, как ими пользоваться: ModelCheckpoint, EarlyStopping и ReduceLROnPlateau.
Обратные вызовы ModelCheckpoint и EarlyStopping
Обратный вызов EarlyStopping можно использовать для прерывания процесса обучения, если находящаяся под наблюдением целевая метрика не улучшалась на протяжении заданного количества эпох. Например, этот обратный вызов позволит прервать обучение после наступления эффекта переобучения и тем самым избежать повторного обучения модели в течение меньшего количества эпох. Этот обратный вызов обычно используется в комбинации с ModelCheckpoint, который позволяет сохранять состояние модели в ходе обучения (и, при необходимости, сохранять только лучшую модель: версию модели, достигшую лучшего качества к концу эпохи):
Обратный вызов ReduceLROnPlateau
Этот обратный вызов можно использовать для снижения скорости обучения, когда потери на проверочных данных перестают уменьшаться. Уменьшение или увеличение скорости обучения в точке перегиба кривой потерь — эффективная стратегия выхода из локального минимума в ходе обучения. Следующий пример демонстрирует применение обратного вызова ReduceLROnPlateau:
Разработка своего обратного вызова
Если в ходе обучения потребуется выполнить какие-то особые действия, не предусмотренные ни одним из встроенных обратных вызовов, можно написать свой обратный вызов. Обратные вызовы реализуются путем наследования класса keras.callbacks.Callback. Вы можете реализовать любые из следующих методов с говорящими именами, которые будут вызываться в соответствующие моменты
Все эти методы вызываются с аргументом logs — словарем, содержащим информацию о предыдущем пакете, эпохе или цикле обучения: метрики обучения и проверки и т.д. Кроме того, обратный вызов имеет доступ к следующим атрибутам:
- self.model — экземпляр модели, вызвавшей этот обратный вызов;
- self.validation_data — значение, переданное методу fit в качестве проверочных данных.
Вот простой пример нестандартного обратного вызова, который сохраняет на диск (как массивы Numpy) активации всех слоев модели после окончания каждой эпохи, вычисленные по первому образцу в проверочном наборе:
Это все, что нужно знать об обратных вызовах, все остальное — технические детали, информацию о которых вы легко сможете отыскать самостоятельно. Теперь вы сможете выполнять журналирование любой информации или оказывать управляющие воздействия на модель Keras в ходе обучения.
Об авторе
Франсуа Шолле (François Chollet) занимается проблематикой глубокого обучения в Google, в городе Маунтин-Вью, штат Калифорния. Является создателем Keras — библиотеки глубокого обучения, а также участником проекта по разработке фреймворка машинного обучения TensorFlow. Также занимается исследованиями в области машинного обучения, основное внимание уделяя распознаванию образов и применению машинного обучения к формальным рассуждениям. Выступал с докладами на крупных конференциях в этой области, включая «Conference on Computer Vision and Pattern Recognition» (CVPR), «Conference and Workshop on Neural Information Processing Systems» (NIPS), «International Conference on Learning Representations» (ICLR) и др.
» Более подробно с книгой можно ознакомиться на сайте издательства
» Оглавление
» Отрывок
Для Хаброжителей скидка 20% по купону — Deep Learning with Python
Автор: ph_piter