Keras — это библиотека для языка программирования Python, которая предназначена для глубокого машинного обучения. Она позволяет быстрее создавать и настраивать модели — схемы, по которым распространяется и подсчитывается информация при обучении. Но сложных математических вычислений Keras не выполняет и используется как надстройка над другими библиотеками.
Keras с версии 2.3 — это надстройка над библиотекой TensorFlow, которая нужна для машинного обучения. TensorFlow выполняет все низкоуровневые вычисления и преобразования и служит своеобразным движком, математическим ядром. Keras же управляет моделями, по которым проходят вычисления.
До версии 2.3 Keras мог использовать в качестве движка вычислительные библиотеки Theano или CNTK. Но в новых версиях поддержка прекратилась, теперь библиотека работает только с TensorFlow.
Keras создавалась как гибкая модульная библиотека, которую легко настраивать и модифицировать. Она бесплатная, у нее открытый исходный код, который может посмотреть любой желающий.
Название читается как «Керас» и с греческого языка означает «рог». Это отсылка к строкам из «Одиссеи».
Keras имеет узкую специализацию. Это инструмент для специалистов по машинному обучению, которые работают с языком Python: именно его чаще всего используют благодаря удобству математических вычислений. Keras применяют разработчики, которые создают, настраивают и тестируют системы машинного обучения и искусственного интеллекта, в первую очередь нейронные сети.
Для чего нужен Keras
- Удобное построение моделей, по которым будет проходить обучение.
- Настройка слоев в моделях — обычно подбор нужного количества слоев требуется для точности.
- Обработка ввода и вывода информации из модели.
- Преобразование входных данных, которые поступают в обучаемую модель.
- Удобный подбор датасетов для обучения.
- Визуализация модели.
- Подготовка модели к работе, определение ее функций ошибки и оптимизаторов.
- Обучение и тестирование модели.
- Сборка и первичный запуск программы машинного обучения.
Все перечисленное можно делать и без Keras, но дольше и сложнее. Keras выступает как программный интерфейс, который упрощает действия. Некоторые называют его API.
Что такое модель
Keras работает с моделями — схемами, по которым распространяется и преобразуется информация. Машинное обучение — по сути, обработка информации с помощью запрограммированной сети, где на основе определенных данных делаются те или иные выводы. Структура сети называется моделью. Часто ее представляют в виде графа, схемы или таблицы.
Как работает глубокое обучение
Глубокое обучение — это метод машинного обучения, который позволяет предсказывать результат по набору входных данных — например, распознавать объекты. Обычно используются нейронные сети со множеством уровней.
Нейронные сети
Нейронная сеть — программная модель, основанная на структуре человеческой нервной системы. Элементы, которые называются нейронами, соединяются между собой с помощью алгоритмов, передают друг другу данные и изменяются в зависимости от того, что получили на вход. В результате информация интерпретируется тем или иным образом.
Перед началом работы с нейронной сетью ее обучают: подают на вход разные данные и указывают программе, какие выводы нужно сделать из информации. В результате сеть устанавливает соответствие между определенными характеристиками данных и выводами.
Вот пример: при обучении нейронной сети, которая распознает изображения, показали 50 000 картинок, где присутствуют кошки, и указали, что на этих картинках есть кот. Также ей показали столько же картинок, где котов нет, и указали это. Обучение сработало как настройка, и программа накопила достаточно характеристик, чтобы распознавать котов уже на других картинках.
Многослойность
Особенность глубокого обучения в том, что при этом методе используются многослойные сети — это значит, что у них большое количество уровней. На каждом уровне, или слое, находится определенное количество нейронов. Разные слои могут выполнять разные функции.
Например, первый слой получает на вход данные, обрабатывает их определенным образом и отправляет полученный результат на второй слой. Второй слой получит уже не исходные данные, а результат вычислений на первом слое — это обычно набор числовых значений, которые так или иначе отражают характеристики входных данных. Затем процесс повторяется с третьим и последующими слоями вплоть до выхода.
Чаще всего выходные данные — это вероятность, высчитанная нейронной сетью. Она показывает, насколько велик шанс того, что на картинке тот или иной объект.
Роль библиотек для машинного обучения
Самостоятельные расчеты по такой модели невозможны, а создавать слои вручную — долгий процесс. В современных сетях могут использоваться десятки слоев и тысячи нейронов, и их будет сложно описать самостоятельно. Поэтому для работы с нейронными сетями и глубоким обучением применяют различные инструменты, позволяющие делать это в несколько строчек. Один из таких инструментов — Keras, который быстро создает, визуализирует и запускает сети с заданными параметрами.
Например, вместо того чтобы вручную описывать свойства каждого нейрона, а потом создавать сотню таких элементов в цикле и повторять это для каждого слоя, можно один раз написать инициализацию в Keras. Это несколько строк, которые описывают свойства целевой модели: ее глубину, плотность, механику расчетов и другие параметры. После этого модель можно обучать и собирать.
Как работать с глубоким обучением в Keras
Создание модели
Описать модель можно двумя способами:
- последовательно — написать несколько команд, каждая из которых добавляет к модели новый параметр. Например, сначала описывается плотность, потом формула для расчетов, потом другие характеристики;
- с помощью функционального API — создать объект и присвоить ему характеристики, описанные и рассчитанные заранее с помощью других функций.
Оба метода довольно удобны, и выбор зависит только от предпочтений программиста.
Обучение
После создания модели ее обучают: подают на вход датасет (набор данных) для обучения. Обычно это два пакета: в одном — подготовленные данные, в другом — метка, то есть «подпись» к данным. Она указывает, что именно представляет собой информация.
Чтобы модель качественно обучилась, нужны большие датасеты — десятки и сотни тысяч примеров, каждому из которых соответствует метка. Создать и подготовить датасет тоже можно с помощью Keras.
Обучение проходит в автоматизированном режиме и может занять много времени. В результате получится обученная модель: сеть «запомнит» ключевые признаки объекта для распознавания. Это сложная система: нейронам присваиваются те или иные коэффициенты в зависимости от того, что именно поступило на вход. Потом коэффициентам определяется вероятность.
Тестирование и запуск
Тестирование — это запуск модели, уже обученной на тестовой выборке. Так называется датасет, в котором данные не повторяют те, что были при обучении. Например, это совершенно другие картинки, на которых тоже присутствуют или отсутствуют кошки. Разработчики смотрят, какие вероятности нейронная сеть указала для тестовых данных, и по результату определяют точность ее работы.
Особенности Keras
- Написана на чистом Python, чтобы код был понятнее и легче поддерживался.
- Работает на большинстве существующих платформ: не только в ОС Windows и Linux, но и на микрокомпьютерах, мобильных устройствах, в облаке или в браузере.
- Поддерживает работу с CPU и GPU — с обычным или графическим процессором. Последний часто используют для сложных вычислений, когда CPU не справляется.
- Поддерживает разные виды нейронных сетей: классические перцептроны, сверточные и рекуррентные сети, их комбинации.
- Совместима с Python начиная с версии 2.7 вплоть до современных.
Преимущества Keras
Keras позиционируется как библиотека, основная цель которой — удобство для человека, а не для машины. Все ее ключевые преимущества вытекают из этой идеи.
Гибкая работа с бэкендом
В старых версиях движок можно было выбирать, сейчас таких возможностей меньше. Но Keras тем не менее полностью сочетается с популярной библиотекой TensorFlow, программисту не нужно придумывать что-то новое, чтобы заставить ее работать как надо. Keras хорошо оптимизирована под TensorFlow, а это облегчает работу программы. Это важно, потому что машинное обучение — очень ресурсоемкое направление, для расчетов нужно много вычислительных мощностей.
Удобство
С Keras удобно работать: она серьезно упрощает создание и настройку моделей. Ее функции и инструменты имеют понятные названия, поэтому код легко читается — по взгляду на него разработчик может понять, что он делает, даже если не слишком хорошо знаком с Keras. Библиотека устроена таким образом, что для решения частых задач нужно выполнить минимальное количество действий — это снимает с разработчика лишнюю нагрузку.
Модульность
Keras состоит из модулей, своеобразных «блоков», у каждого из которых своя функциональность. Эти модули — типовые слои нейронных сетей, функции и схемы. Они представлены в виде уже готовых «элементов», и разработчик собирает из них модель, как в конструкторе. Все, что ему остается, — выбрать модули, назначить им настройки и связать друг с другом. Keras допускает гибкие конфигурации модулей, вариантов построения сетей очень много.
Расширяемость
Функциональность самой библиотеки можно расширять с помощью пользовательских модулей. Если вам понадобится собственный «блок», его легко можно написать самостоятельно и связать с остальными. Keras дает разработчикам такую возможность.
У библиотеки открытый исходный код, поэтому ее можно модифицировать под собственные задачи. Но на практике уже существующие исходники трогают редко; чаще дописывают что-то свое.
Высокая скорость работы
Мы уже частично упомянули это преимущество, когда говорили про упрощение задач. Скорость обеспечивается благодаря двум моментам:
- работать с нейронными сетями становится проще, поэтому разработчик быстрее создает функционирующую модель, обучает и запускает ее. Ему не приходится тратить лишнее время на типовые действия, потому что они сводятся к нескольким строкам кода;
- библиотека быстро развертывает и собирает модели. У ранних версий Keras были проблемы с быстродействием при использовании TensorFlow в качестве движка, но специалисты Google исправили их.
Популярность
У Keras обширное сообщество, это популярная и известная библиотека. Это значит, что у новичка всегда есть возможность пообщаться с единомышленниками, получить от них совет, проконсультироваться на тематическом ресурсе. Мануалов по Keras тоже много, а его документацию энтузиасты перевели на русский язык.
Недостатки Keras
Неуниверсальность
Несмотря на гибкость и расширяемость, разработчикам так и не удалось сделать библиотеку полностью универсальной. Есть задачи, для которых она неоптимальна, в том числе довольно сложные.
Отсутствие обратной совместимости
Старые версии были популярны во многом благодаря возможности выбирать движок самостоятельно. Сейчас возможность убрали, а старые версии не поддерживаются. Функции в новых версиях меняют и переименовывают, поэтому говорить об обратной совместимости нет смысла.
Зависимость от движка
Keras сейчас — это высокоуровневая настройка для TensorFlow. Ее нельзя использовать без движка, в роли которого выступает TensorFlow. Самостоятельно библиотека не сможет провести расчеты — для этого понадобится бэкенд, без которого Keras бесполезна.
Сложность обучения
Это особенность не столько библиотеки, сколько машинного обучения в целом. Сфера сложная и трудоемкая, для ее изучения нужно хорошее понимание математики и теоретических основ. Поэтому машинное обучение имеет высокий порог входа.
Как начать работу с Keras
Основная библиотека
Саму библиотеку можно скачать с помощью одной команды в консоли:
· pip install keras
На компьютере должен быть установлен Python актуальной версии и TensorFlow — бэкенд, без которого Keras не будет работать. Скачать TensorFlow можно на официальном сайте или также с помощью pip.
Для корректной работы TensorFlow понадобятся еще две библиотеки. Это NumPy и SciPy. Они нужны для математических вычислений.
Дополнительные компоненты
Чтобы некоторые возможности Keras работали как надо, нужны дополнительные компоненты. Это другие библиотеки, на которых Keras опирается в работе:
- cuDNN — библиотека от NVIDIA, которая позволяет использовать для расчетов графический процессор. Обычно он отвечает за расчет сложной графики, поэтому лучше подходит для ресурсоемких вычислений машинного обучения;
- Graphviz и Pydot — инструменты, которые нужны для визуализации графов и таблиц. Ими пользуются модули Keras, отвечающие за визуальное отображение моделей. Graphviz — библиотека, Pydot — интерфейс для нее;
- HDF5 и h5py — форматы файлов и соответствующие им библиотеки. В этих форматах хранятся модели. С их помощью Keras сохраняет созданные и настроенные модели.
После установки всех компонентов можно начинать работу с собственными проектами.
0 комментариев