Deeplearning4j
Тип Обработка естественного языка, глубокое обучение, компьютерное зрение, искусственный интеллект
Автор Адам Гибсон, Крис Николсон, Джош Паттерсон
Разработчик Various
Написана на Java, Scala, CUDA, C, C++, Python, Clojure
Операционная система Linux, macOS, Windows, Android
Языки интерфейса английский
Аппаратная платформа кроссплатформенность
Последняя версия
  • 0.9.1 (12 августа 2017)
Состояние активный
Лицензия Apache 2.0
Сайт deeplearning4j.org

Deeplearning4j — библиотека программ на языке Java, используемая как фреймворк для глубокого обучения. Включает реализацию ограниченной машины Больцмана, глубокой сети доверия, глубокого автокодировщика, стекового автокодировщика с фильтрацией шума, рекурсивной тензорной нейронной сети, word2vec, doc2vec, and GloVe. Эти алгоритмы включены также в версии библиотеки, поддерживающие распределённые вычисления, интегрированные с архитектурами Apache Hadoop и Spark.

Является открытым программным обеспечением, распространяется под лицензией Apache 2.0; основные разработчики — группа машинного обучения в Сан-Франциско во главе с Адамом Гибсоном, коммерческие внедрения поддерживают стартап Skymind.

Технология

Deeplearning4j реализована на языке Java и выполняется в среде, при этом совместима с Clojure и включает интерфейс (API) для языка Scala. Дополнительная библиотека ND4J открытого доступа обеспечивает вычисления на графических процессорах с поддержкой CUDA. Кроме того, имеются средства для работы с библиотекой на языке Python через фреймворк Keras.

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

Распределённые вычисления

Обучение в Deeplearning4j осуществляется через кластеры. Нейронные сети обучаются параллельно по итерациям, процесс поддерживается архитектурами Hadoop-YARN и Spark. Deeplearning4j осуществляет также интеграцию с ядром архитектуры CUDA для осуществления чистых операций с GPU и распределения операций на графических процессорах.

Научные расчёты для JVM

Deeplearning4j включает в себя класс для работы с n-мерным массивом данных в библиотеке ND4J. Это облегчает вычисления для научных задач на языках Java и Scala, функциональность при этом соответствует языку NumPy для Pythonа. Использование этих средств позволяет эффективно решать задачи линейной алгебры и матричных преобразований в практических приложениях.

Библиотека векторизации DataVec для машинного обучения

Библиотека DataVec проводит векторизацию файлов в различных входных и выходных форматах методом, подобным MapReduce; при этом данные трансформируются в векторную форму. DataVec векторизирует табличный формат CSV, изображения, звуки, тексты, видео и временные последовательности данных.

Обработка естественного языка и текстов

Для обработки больших объёмов текстов с использованием мощности параллельных графических процессоров Deeplearning4j привлекает инструментарий векторного и тематического моделирования на языке Java.

В библиотеку входят реализации частотной инверсии (TF-IDF), глубинное обучение, алгоритм Миколова word2vec, doc2vec, и GloVe, которые оптимизированы на Java. При этом используется принцип стохастического встраивания соседей с распределением Стьюдента ( t-SNE [en] ) для реализации облака слов.

Безопасность

В библиотеку включены средства защиты от внешнего вмешательства и безопасности от взлома, что особенно важно в финансовых задачах, в промышленных системах, в электронной коммерции и предпринимательстве применяется распознавание аномалий и распознавание образов. Deeplearning4j интегрирован с другими платформами машинного обучения — такими как RapidMiner, Prediction.io и Weka.

Тесты производительности

Сопоставление производительности показывает, что Deeplearning4j сопоставим с Caffe в задачах нетривиального распознавания образов с привлечением параллельных графических процессоров. Для программистов, незнакомых с HPC на JVM, имеется несколько параметров, которые можно регулировать для улучшения производительности обучения нейронных сетей. В эти параметры входит настройка динамической памяти, алгоритм сборки мусора, подкачка памяти и предварительное сохранение данных для ускорения ETL. Комбинируя эти настройки, можно увеличить производительность Deeplearning4j до десяти раз.

Литература

  • Паттерсон Дж., Гибсон А. Глубокое обучение с точки зрения практика = Deep Learning. A Practitioner’s Approach. — ДМК-Пресс, 2018. — 418 с. — ISBN 978-5-97060-481-6.

Эта статья использует материал из статьи Wikipedia Deeplearning4j, которая выпущена под Creative Commons Attribution-Share-Alike License 3.0.