В настоящее время доступно ограниченное количество инструментов с точки зрения фреймворков глубокого обучения, поскольку они реализуют алгоритмы, которые используются в новейших приложениях, таких как компьютерное зрение и машинный перевод. Для правильного моделирования глубоких нейронных сетей необходимо правильно выбрать фреймворк. В этой статье обсуждается обзор фреймворков с открытым исходным кодом и глубокого обучения, таких как TensorFlow, CNTK, Theano, Torch, Caffe, MXnet и Neon.

1. Введение:

Глубокое обучение по своей сути можно рассматривать как подкласс машинного обучения, который приобрел известность в последние несколько лет с ростом количества ядер, доступных на графических процессорах для вычислений. Машинное обучение, в свою очередь, можно определить как подполе искусственного интеллекта, которая занимается разработкой алгоритмов, которые могут помочь делать прогнозы или решения на основе данных.

В области глубокого обучения в настоящее время существует несколько инструментов, используемых отраслью для поддержки приложений, таких как беспилотные автомобили, для автоматического создания подписей для видео и изображений. Поскольку глубокое обучение является передним краем текущих исследований в области машинного обучения, большинство фреймворков глубокого обучения имеют открытый исходный код, и на сегодняшний день, похоже, практически нет проприетарных фреймворков.

В разделе 1 дается краткое введение, за которым следует раздел 2, в котором дается обзор глубокого обучения. Раздел 3 - это руководство по текущим фреймворкам глубокого обучения с открытым исходным кодом. Наконец, в разделе 4 дается сводка о популярных фреймворках глубокого обучения.

2. Обзор глубокого обучения:

Алгоритмы глубокого обучения состоят из искусственных нейронных сетей со скрытыми слоями, которые, в свою очередь, были вдохновлены биологическими нейронными сетями. [data01] Глубокие нейронные сети могут использоваться для моделирования сложных нелинейных отношений как в контролируемых (когда исторические данные используются для прогнозирования будущих результатов), так и в неконтролируемых (кластеризация и поиск новых закономерностей и аномалий в данные) настройки. [gop01] По сравнению с традиционными алгоритмами машинного обучения, модели глубокого обучения могут обеспечить значительное улучшение в таких областях, как распознавание речи и языковой перевод, о чем свидетельствует значительное улучшение Google Translate после перехода с машинного перевода на основе фраз (PBMT). ) в нейронный машинный перевод (NMT). [obs01] Различные типы моделей глубокого обучения включают в себя глубокие автоэнкодеры, ограниченные машины Больцмана (RBM), сверточные нейронные сети (CNN), рекуррентные нейронные сети и модели с долгой краткосрочной памятью (LSTM) в зависимости от независимо от того, предназначена ли область приложения для обучения с учителем или без учителя. [Дэн и Ю]

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

3. Рамки глубокого обучения:

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

3.1 Теано:

Разработанный в лаборатории LISA в Монреальском университете, Theano состоит из библиотеки Python, которая позволяет пользователям определять, оптимизировать и оценивать математические выражения для массивов и тензоров. [deep01] Он также генерирует индивидуальный код C для различных математических операций. С точки зрения архитектуры, по сравнению с другими доступными фреймворками для глубокого обучения популярное мнение заключается в том, что Theano сложно использовать. [data01] Theano также поддерживает несколько графических процессоров и обеспечивает поддержку сверточных нейронных сетей и рекуррентных нейронных сетей. Theano был развернут в производстве в компаниях, предоставляющих услуги искусственного интеллекта, таких как ParallelDots, которые обслуживают до нескольких тысяч одновременных новостных рекомендаций и глубокое обучение для нескольких клиентов в качестве вызова службы. [quor01]

3.2 TensorFlow:

Первоначально TensorFlow был разработан исследователями и инженерами, которые работали в группе Google Brain в рамках исследовательской организации Google Machine Intelligence, с целью проведения исследований машинного обучения и глубоких нейронных сетей, и со временем было обнаружено, что эта структура является достаточно общей для применения в а также множество других доменов. [Deng & Yu] TensorFlow реализован на Python и использует графы потоков данных для численных вычислений. По сравнению с другими фреймворками глубокого обучения видно, что TensorFlow в настоящее время считается лучшим документированным фреймворком с открытым исходным кодом. [data01] TensorFlow также может похвастаться простым в использовании и модульным интерфейсом с точки зрения архитектуры. TensorFlow также обеспечивает поддержку сверточных нейронных сетей и рекуррентных нейронных сетей. Следует также отметить, что существуют реализации для ограниченных машин Больцмана, глубинных автоэнкодеров и моделей с долгим краткосрочным периодом, также использующие архитектуру TensorFlow. [gith01] Кроме того, TensorFlow также содержит TensorBoard, который представляет собой набор инструментов визуализации, которые упрощают понимание, отладку и оптимизацию программ, работающих с кодом TensorFlow.

3.3 Факел:

Torch - это платформа для глубокого обучения с поддержкой алгоритмов, в которых приоритет отдается графическим процессорам. [torc01] Torch обеспечивает более высокую производительность по сравнению с другими платформами глубокого обучения благодаря использованию быстрого языка сценариев LuaJIT и его базовой реализации C / CUDA. Torch также обладает большой экосистемой пакетов, управляемых сообществом, а также может быть встроен в серверную часть iOS и Android. Torch также обладает возможностями моделирования рекуррентной нейронной сети и сверточной нейронной сети с относительно простым в использовании модульным интерфейсом. Torch используется в таких компаниях, как Facebook, Google и Twitter, а также в исследовательских лабораториях, таких как NYU, IDIAP и Purdue.

3.4 Кафе:

Caffe - это структура глубокого обучения, разработанная Berkeley AI Research (BAIR), а также участниками сообщества. Реализован на C ++. Caffe выпущен под лицензией BSD 2- Clause. [caff01] Хотя Caffe поддерживает сверточные нейронные сети, в настоящее время он не поддерживает рекуррентные нейронные сети. Более того, даже после обширного обзора литературы не удалось найти никаких упоминаний о многих крупных игроках в области ИИ, развертывающих Caffe в производственной среде. Однако Facebook недавно выпустил Caffe2 в апреле, который представляет собой готовую кросс-платформенную сеть и был объявлен преемником Caffe.

3.5 MXNet:

MXNet - это среда глубокого обучения, разработанная сотрудниками из различных компаний и университетов, включая Microsoft, Nvidia, Baidu, Intel, Университет Карнеги-Меллона, Университет Альберты и Вашингтонский университет. [mxne01] MXNet поддерживает множество языков программирования, включая R, Python, Julia и Scala. Он также имеет расширенную поддержку графического процессора по сравнению с другими фреймворками, а также относительно быстр в отношении времени выполнения алгоритмов глубокого обучения. MXNet также имеет возможности моделирования сверточной нейронной сети и рекуррентной нейронной сети. MXNet также является предпочтительной платформой глубокого обучения Amazon Web Services (AWS).

3.6 Неон:

Neon - это эталонная среда глубокого обучения Intel Nervana, которая была разработана с учетом расширяемости и простоты использования. [neon01] Neon поддерживает Python и модели глубокого обучения, такие как сверточные нейронные сети, рекуррентные нейронные сети, модели с долгой краткосрочной памятью (LSTM) и глубокие автоэнкодеры. Кроме того, Neon также тесно интегрирован с библиотекой ядра графического процессора Intel.

3,7 CNTK:

CNTK - это аббревиатура от Microsoft Cognitive Toolkit, который представляет собой набор инструментов коммерческого уровня с открытым исходным кодом, который можно использовать для обучения алгоритмов глубокого обучения. [micr01] CNTK поддерживает как C ++, так и Python. Он также обеспечивает поддержку графического процессора и относительно быстр по сравнению с другими платформами глубокого обучения. Он имеет значительные возможности моделирования рекуррентных нейронных сетей, а также способность моделировать сверточные нейронные сети. В настоящее время CNTK используется в продуктах Microsoft, таких как Skype, Cortana, Bing и Xbox.

4. Резюме:

Из-за разнообразия доступных наборов инструментов и фреймворков необходимо провести исследование, чтобы выбрать наиболее выгодный фреймворк глубокого обучения, также принимая во внимание доступную документацию и поддерживаемые языки. Большинство фреймворков предоставляют общие алгоритмы глубокого обучения, подходящие для множества случаев использования, но могут иметь непростую в использовании и модульную архитектуру, а также могут жертвовать скоростью. Необходимо хорошо знать эти структуры, чтобы можно было оценить необходимые плюсы и минусы для правильной реализации в производственной среде.

Использованная литература:

[data01]

[1]

K. Waehner, Open Source Deep Learning Framework and Visual Analytics, [Online]. Доступно: http://www.datasciencecentral.com/profiles/blogs/open-source-deep-learning-frameworks-and-visual-analytics. [Проверено 15 июля 2017 г.].

[gop01]

[2]

Дж. О. Модели, платформы ускоряют глубокое обучение для больших данных предприятия, [Интернет]. Доступно: https://goparallel.sourceforge.net/models-frameworks-accelerate-deep-learning-enterprise-big-data/. [Проверено 15 июля 2017 г.].

[obs01]

[3]

Наблюдатель, Google использует искусственный интеллект, чтобы внести огромные изменения в свой инструмент перевода, 06 03 2017. [Online]. Доступно: http://observer.com/2017/03/google-translate-neural-update/. [Доступ 28, 97, 2017].

[Дэн и Ю]

[4]

Дэн Л., Ю Д. Глубокое обучение: методы и приложения, 2014.

[deep01]

[5]

Краткий обзор Theano [Интернет]. Доступно: http://deeplearning.net/software/theano/. [Проверено 15 июля 2017 г.].

[quor01]

[6]

М. Маянк, По состоянию на сентябрь 2015 года, что лучше использовать Torch или Theano для написания приложений глубокого обучения в производственной среде (не для создания прототипов, не для исследований, а для производства)?, Quora, 15 09 2015. [Online]. Доступно: https://www.quora.com/As-of-September-2015-is-it-better-to-use-Torch-or-Theano-for-writing-deep-learning-applications-in-production -не прототипирование-не-исследования-а-производство . [Доступ 28 июля 2017 г.].

[tens01]

[7]

Google Inc., TensorFlow: библиотека программного обеспечения с открытым исходным кодом для Machine Intelligence, [Online]. Доступно: https://www.tensorflow.org/. [Доступно 7 июля 2017 г.].

[gith01]

[8]

Дж. Анджелетти, Алгоритмы глубокого обучения с TensorFlow, Github, 16 апреля 2016 г. [Online]. Доступно: https://github.com/blackecho/Deep-Learning-TensorFlow. [Доступ 28 июля 2017 г.].

[torc01]

[9]

Торч, Факел: научная вычислительная среда для LuaJIT, [Интернет]. Доступно: http://torch.ch/. [Доступ 28 июля 2017 г.].

[caff01]

[10]

Ю. Цзя, Кафе, [Интернет]. Доступно: http://caffe.berkeleyvision.org/. [Доступ 29 июля 2017 г.].

[mxne01]

[11]

DMLC, MXNet: гибкая и эффективная библиотека для глубокого обучения [онлайн]. Доступно: http://mxnet.io/. [Доступ 29 июля 2017 г.].

[neon01]

[12]

Nervana Systems Inc., Неон [Интернет]. Доступно: http://neon.nervanasys.com/docs/latest/. [Доступ 29 июля 2017 г.].

[micr01]

[13]

Microsoft, Microsoft Cognitive Toolkit, [Интернет]. Доступно: https://www.microsoft.com/en-us/cognitive-toolkit/. [Доступ 29 июля 2017 г.].