В настоящее время доступно ограниченное количество инструментов с точки зрения фреймворков глубокого обучения, поскольку они реализуют алгоритмы, которые используются в новейших приложениях, таких как компьютерное зрение и машинный перевод. Для правильного моделирования глубоких нейронных сетей необходимо правильно выбрать фреймворк. В этой статье обсуждается обзор фреймворков с открытым исходным кодом и глубокого обучения, таких как 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 г.].