PyBrain работаем с нейронными сетями на Python |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2017-05-21 14:56 В рамках одного проекта столкнулся необходимостью работать с нейронными сетями, рассмотрел несколько вариантов, больше всего понравилась PyBrain. Надеюсь её описание будет многим интересно почитать.
PyBrain — одна из лучших Python библиотек для изучения и реализации большого количества разнообразных алгоритмов связанных с нейронными сетями. Являет собой удачный пример совмещения компактного синтаксиса Python с хорошей реализацией большого набора различных алгоритмов из области машинного интеллекта. Предназначен для:
О библиотеке PyBrian представляет собой модульную библиотеку предназначенную для реализации различных алгоритмов машинного обучения на языке Python. Основной его целью является предоставление исследователю гибких, простых в использовании, но в то же время мощных инструментов для реализации задач из области машинного обучения, тестирования и сравнения эффективности различных алгоритмов. Название PyBrain является аббревиатурой от английского: Python-Based Reinforcement Learning, Artificial Intelligence and Neural Network Library.Как сказано на одном сайте: PyBrain — swiss army knife for neural networking ( PyBrain — это швейцарский армейский нож в области нейро-сетевых вычислений). Библиотека построена по модульному принципу, что позволяет использовать её как студентам для обучения основам, так и исследователям, нуждающимся в реализации более сложных алгоритмов. Общая структура процедуры её использования приведена на следующей схеме: Сама библиотека является продуктом с открытым исходным кодом и бесплатна для использования в любом проекте с единственно оговоркой, при её использовании для научных исследований, они просят добавлять в список цитируемых информационных источников (что народ и делает) следующую книгу: Tom Schaul, Justin Bayer, Daan Wierstra, Sun Yi, Martin Felder, Frank Sehnke, Thomas R?ckstie?, J?rgen Schmidhuber. PyBrain. To appear in: Journal of Machine Learning Research, 2010. Основные возможности Основными возможностями библиотеки (для версии 0.3 ) являются:
Сети PyBrain оперирует сетевыми структурами, которые могут быть использованы для построения практически всех поддерживаемых библиотекой сложных алгоритмов. В качестве примера можно привести:
Инструменты Дополнительно присутствуют программные инструменты, позволяющие реализовывать сопутствующие задачи:
Установка библиотеки Перед установкой Pybrain, создатели рекомендуют установить следующие библиотеки:Setuptools — пакетный менеджер для Python, который значительно упрощает установку новых библиотек. Для его установки рекомендуется скачать и выполнить (python ez_setup.py) этот скрипт. После установки у Вас появиться возможность использовать команду для установки новых библиотек. Сразу воспользуемся ими и установим два необходимых пакета:
Далее устанавливается сама PyBrain
Основы работы с библиотекой Создание нейронной сети Создание нейронной сети с двумя входами, тремя скрытыми слоями и одним выходом:
В результате, в объекте net находится созданная нейронная цепь, инициализированная случайными значениями весов. Функция активации Функция активации задаётся следующим образом:
Количество элементов передаваемых в сеть должно быть равно количеству входов. Метод возвращает ответ в виде единственного числа, если текущая цепь имеет один выход, и массив, в случае большего количества выходов. Получение данных о сети Для того, чтобы получить информацию о текущей структуре сети, каждый её элемент имеет имя. Данное имя может быть дано автоматически, либо по иным критериям при создании сети. К примеру, для сети net имена даны автоматически:
Скрытые слои поименованы с номером слоя добавленным к имени. Возможности при создании сети Конечно в большинстве случаев, созданная нейронная сеть должна иметь другие характеристики, нежели заданные по умолчанию. Для этого существуют разнообразные возможности. К примеру, по умолчанию скрытый слой создаётся с использованием сигмоидной функции активации, для задания другого её типа возможно использовать следующие константы:
Также возможно задать и тип выходного слоя:
Дополнительно возможно использование смещения (bias)
Оперирование данными (Building a DataSet) Созданная сеть должна обрабатывать данные, работе с которыми и посвящён этот раздел. Типичным набором данных является набор входных и выходных значений. Для работы с ними PyBrain использует модуль pybrain.dataset, также далее используется класс SupervisedDataSet.Настройка данных Класс SupervisedDataSet используется для типичного обучения с учителем. Он поддерживает массивы выходных и выходных данных. Их размеры задаются при создании экземпляра класса: Запись вида:
означает, что создаётся структура данных для хранения двухмерных входных данных и одномерных выходных. Добавление образцов Классической задачей при обучении нейронной сети является обучение функции XOR, далее показан набор данных используемый для создания такой сети.
Исследование структуры образца Для получения массивов данных в текущем их наборе возможно использовать стандартные функции Python для работы с массивами.
выведет 4, так-как это количество элементов. Итерация по множеству также может быть организована обычным для массивов способом:
Также к каждому набору полей можно получить прямой доступ с использованием его имени:
Также можно вручную освободить занимаемую образцом память полностью его удалив:
Тренировка сети на образцах В PyBrain использована концепция тренеров (trainers) для обучения сетей с учителем. Тренер получает экземпляр сети и экземпляр набора образцов и затем обучает сеть по полученному набору. Классический пример это обратное распространение ошибки (backpropagation). Для упрощения реализации этого подход в PyBrain существует класс BackpropTrainer.
Обучающий набор образцов (ds) и целевая сеть (net) уже созданы в примерах выше, теперь они будут объединены.
Тренер получил ссылку на структуру сети и может её тренировать.
Вызов метода train() производит одну итерацию (эпоху) обучения и возвращает значение квадратичной ошибки (double proportional to the error). Если организовывать цикл по каждой эпохи нет надобности, то существует метод обучающий сеть до сходимости:
Данный метод возвратит массив ошибок для каждой эпохи. Ещё примеры реализации разных сетей В статьеTom Schaul, Martin Felder, et.al. PyBrain, Journal of Machine Learning Research 11 (2010) 743-746.приведён пример создания сети с загрузкой данных из .mat файла.
Немного ссылок:
Заключение В заключении хочу сказать, что эта библиотека производит очень хорошее впечатление, работать с ней удобно, описания алгоритмов получаются компактные, но не теряют понятности в дебрях кода..S. Если есть поправки по названиям некоторых терминов, то я готов выслушать, не уверен в 100% точности пары переводов, возможно уже есть устоявшиеся названия. Источник: habrahabr.ru Комментарии: |
|