Python – популярный язык разработки, который используется не только для создания программных приложений, но и в сфере машинного обучения. В частности, он подходит для разработки и настройки искусственного интеллекта. Для этого Python использует специальные библиотеки.
Одним из наиболее популярных является Keras. Далее предстоит изучить ее более подробно. Необходимо понять, что собой представляет библиотека the Keras, зачем и когда используется, какие особенности имеет. Эта информация пригодится преимущественно тем, кто уже занимался разработкой приложений на the Python.
Что это такое
The Keras – библиотека открытого типа. Она написана на языке the Python, обеспечивает возможность взаимодействия пользователя с искусственными нейронными сетями. В ранних ее версиях поддерживала различные нейросетевые библиотеки:
- Theano;
- Deeplearning4j;
- TensorFlow;
- Microsoft Cognitive Toolkit.
Сейчас the Keras имеет поддержку только TensorFlow. Соответствующие изменения действуют с версии 2.3, вышедшей в 2019 году.
Keras library ориентирована на оперативную работу с сетями глубинного обучения. Спроектирована так, чтобы гарантировать компактность, расширяемость и модульность. Появилась библиотека в качестве части исследовательского проекта ONEIROS. В качестве основного автора и ведущего разработчика выступил один из инженеров Google – Франсуа Шолле. Он выделил свой продукт в отдельную настройку. Ее концепции предписывают библиотеке статус интерфейса, а не сквозной системы машинного обучения.
Глубокое обучение – это…
Перед более детальным рассмотрением изучаемого инструмента предварительно необходимо разобраться с несколькими ключевыми понятиями. Они являются неотъемлемой частью Keras.
Первое – это глубокое обучение (или deep learning). Оно имеет отношение к нейронным сетям с несколькими открытыми слоями. Они смогут изучать более абстрактные представления входной информации.
Глубоким обучения называется метод машинного обучения. Он дает возможность предсказать результаты по некоторому набору входных данных. Пример – распознавание объектов.
Машинное обучение
Машинное обучение (ML) – это процедура использования математических моделей данных, помогающих устройству обучаться без непосредственной инструкции. Выступает в качестве одной из форм искусственного интеллекта.
ML при помощи алгоритмов выявляет закономерности информации. На их основе создается некая модель данных для дальнейшего прогнозирования. Чем больше информации прошло через получившийся инструмент и чем дольше он используется, тем более точным получится итоговый результат.
Характерная черта machine learning – это не прямое решение поставленной задачи, а обучение за счет применения решений массива схожих задач. Для работы ML используются средства:
- теории графов;
- методов оптимизации;
- работы с информацией, представленной в цифровом формате;
- математического анализа и статистики;
- численных методов;
- теории вероятностей.
Обратите внимание – существуют два типа ML: по прецедентам (индуктивное) и дедуктивное. В первом случае модель строится на основании выявленных эмпирических закономерностей данных, во втором – на формализации экспертных знаний и их дальнейшем переносе на устройство в качестве базы.
Нейронная сеть
Нейронная сеть – программная модель, которая базируется на структуре человеческой нервной системы. Элементы (нейроны) будут соединяться между собой через алгоритмы и передавать друг другу данные. Они изменяются в зависимости от того, что получили на вход. Результат – интерпретация информации тем или иным способом.
Перед началом работы с нейронной сетью ее обучают: на вход подаются различные данные, а программе указывают, какие выводы требуется сделать на их основании. Результатом становится установление соответствия между конкретными характеристиками информации и их вывода.
Многослойные сети
Сверточные нейронные сети (Convolutional Neural Network, CNN) – это многослойные нейронные сети. Они включают в себя иногда до 17 и более слоев. В таких сетях предполагается, что входные данные представлены изображениями.
Выше – пример типичной архитектуры CNN. На каждом уровне (слое) располагается определенное количество нейронов. Каждый слой способен выполнять различные функции.
Пример:
- Первый слой получает данные на вход. Он обрабатывает их установленным способом и отправляет на второй слой.
- На втором уровне будут получены не исходные данные, а результат ранее проведенных вычислений. Обычно им выступает числовой набор значение, которые отображают характеристики входной информации.
- Процесс повторяется на третьем и последующем слое. Происходит это до непосредственного выхода.
Выходные данные convolutional neural network – это некая вероятность, высчитанная через нейронную сеть. Она указывает на шанс того, что на изображении расположен тот или иной объект.
Библиотеки и их роль в обучении
Керас – это библиотека, написанная на языке Питон. Она упрощает обучение convolutional neural network. Это – незаменимый инструмент, без которого работа с нейросетями становится невозможной.
Самостоятельные расчеты по упомянутым ранее моделям невозможны, создание слоев вручную отнимает много времени. Современные сети могут поддерживать десятки слоев и тысячи нейронов, описать их самостоятельно не получится. Для работы с нейронными сетями и глубоким обучением активно применяются инструменты the Keras и ему подобные.
За счет библиотек не придется вручную описывать свойства каждого нейрона, а затем создавать сотню таких компонентов в цикле, повторяя для каждого слоя. Вместо этого достаточно один раз записать инициализацию через Керас. Код займет несколько строчек, которые описывают свойства целевой модели:
- глубину;
- механику расчетов;
- плотность;
- другие параметры.
После этого модель (the model) может быть обучена и собрана.
Для чего используется Keras
Керас используется для:
- Комфортного построения различных моделей. Они используются системой для дальнейшего обучения нейросетей.
- Настройки параметров слоев в моделях. Они обеспечивают точность.
- Обработки ввода и вывода данных.
- Преобразования входной информации, поступающей в выбранную модель для обучения через the Keras.
- Максимально удобной и комфортной подборки наборов данных (data sets) для дальнейшего использования в нейросетях.
- Виртуализации моделей.
- Подготовки модели к работе. Сюда можно отнести определение имеющихся функций ошибок и оптимизаторов.
- Обучения и тестирования.
- Сборки, а также первичного запуска программы машинного обучения.
Все это можно сделать при помощи иных инструментов, исключая the Keras для the Python. В этом случае соответствующие операции отнимут намного больше времени и ресурсов. The Keras представляет собой программный интерфейс, значительно упрощающий перечисленные действия. Некоторые разработчики и инженеры называют его API.
Преимущества Keras
The Keras – это один из возможных инструментов, помогающих работать с нейросетям. Соответствующий «интерфейс» имеет следующие преимущества:
- Удобство для пользователя. The Keras – это проект, который был создан специально для пользователей. В своей работе от использует особые методы: предлагает простой и согласованный API, минимизирующий пользовательское вмешательство для решения наиболее распространенных задач. При появлении ошибок клиент сможет в любой момент обратиться в поддержку для обратной связи.
- Модульность. The Keras для the Python – это последовательные и автономные, полностью сконфигурированные модели. Они подключаются без дополнительных ограничений. Пример – нейронные слои, оптимизаторы, функции активации, схемы инициализации. Все это можно модульно сочетать для формирования networks model.
- Расширяемость. Здесь легко и просто добавляются новые классы, функции, а также модули. Все это делает the Keras достойным средством организации различных исследований.
- Поддержка работы с the Python. Все models import на языке разработки Python. Их исходный код будет компактным и читабельным.
Основным недостатком the Keras является поддержка всего одной нейронной сети. Это функциональный и удобный интерфейс, который легко освоить, особенно тем, кто уже знаком с Питоном.
Начало работы с библиотекой
В the Keras поддерживает описание моделей несколькими способами:
- Последовательно. В этом случае нужно написать несколько команд, каждая из которых будет добавлять новый параметр к модели. Example – сначала описывается плотность, затем – формула для расчетов и иные параметры.
- Через функциональный API. Создается объект, которому присваиваются характеристики, описанные и рассчитанные заблаговременно через другие функции.
Пользоваться можно обоими вариантами – они одинаково удобные и точные. Окончательное решение принимается в зависимости от предпочтений конкретного разработчика.
Установка
Обучение (learn) через the Keras начинается с установки программного обеспечения. Главное, чтобы был установлен движок. Рекомендуется пользоваться TensorFlow, так как он поддерживается последними версиями библиотеки.
Дополнительно при работе с the Keras могут потребоваться такие инструменты как:
- cuDNN – используется при расчетах с использованием GPU;
- HDF5 и h5py – позволяет сохранять модели from Keras на диск;
- pydot, graphviz – используются средствами виртуализации для построения модельных графов.
Установка библиотеки может проводиться так:
Альтернативный вариант – это установка из репозитория GitHub. Сначала делается клон:
После этого нужно перейти в папку, где расположена библиотека. Потребуется воспользоваться командой:
Теперь все готово к дальнейшей работе. Далее будут приведены несколько наглядных примеров с базовыми операциями. Все это поможет быстрее освоить the Keras.
Набор помеченных данных и загрузка слоев
The Keras – это функциональный инструмент. В нем много помеченных наборов данных, которые поддерживают импорт. В приведенном примере необходимо воспользоваться MNIST. Он загружается при помощи такой команды:
Вот так выглядит процесс создания слоев:
Последние две команды – это использование сверточной нейронной сети для классификатора.
Использование методов
Для унитарной кодировки y_train и y_test будет использоваться метод np_utils.to_categorical. Вот так выглядит изменение размерности:
Чтобы добавить импортированные слои, используется стандартный метод add():
Для непосредственного обучения библиотека Keras использует метод compile. Вот так он реализован на наглядном примере:
Для тренировки используется метод fit:
При обработке запроса на экране появится такой результат:
Следующим этапом тренировки является проверка результатов на новых данных. Допускается использование методов evaluate(), predict_classes. Примеры в Keras будут строиться на основании такого изображения:
Сначала эту картинку необходимо конвертировать в желаемый формат набора – MNIS. После осуществляется попытка распознавания изображения:
Остается сохранить модель. Это поможет воспользоваться полученными результатами обучения в будущем. Для данной операции используется команда:
Рассмотренный пример – это процедура создания простого классификатора рукописных цифр. The Keras – отличное решение для тех, кто только начинает работать с нейросетями.
Как быстрее освоить
Нейросети и инструменты для работы с ними – это не всегда легко. Чтобы получить наиболее глубокие знания о соответствующем направлении рекомендуется обучиться на дистанционных компьютерных курсах. Пример – от образовательного центра OTUS.
На таких курсах пользователя с нуля научат не только разбираться в выбранном IT-направлении, но и более профессионально работать с различными инструментами, фреймворками и библиотеками. Дистанционные курсы совместимы с работой и семьей, они предлагают разнообразие направлений и специализаций. Освоить новую IT-профессию или инструмент разработки можно в срок до 12 месяцев. Процедура обучения сопровождается кураторством, интересными домашними заданиями и богатой практикой. В конце пользователь получит электронный сертификат установленного образца. Им он сможет подтвердить полученный спектр знаний и навыков.
P. S. Большой выбор курсов по машинному обучению есть и в Otus. В наличии варианты как для продвинутых, так и для начинающих пользователей.