Программное обеспечение для нейронных сетей используется для моделирования , исследования , разработки и применения искусственных нейронных сетей , концепций программного обеспечения, адаптированных из биологических нейронных сетей , а в некоторых случаях и более широкого спектра адаптивных систем, таких как искусственный интеллект и машинное обучение .
Симуляторы нейронных сетей — это программные приложения, которые используются для моделирования поведения искусственных или биологических нейронных сетей. Они фокусируются на одном или ограниченном количестве определенных типов нейронных сетей. Они, как правило, являются автономными и не предназначены для создания общих нейронных сетей, которые могут быть интегрированы в другое программное обеспечение. Симуляторы обычно имеют некоторую форму встроенной визуализации для мониторинга процесса обучения. Некоторые симуляторы также визуализируют физическую структуру нейронной сети.
Исторически наиболее распространенный тип программного обеспечения для нейронных сетей был предназначен для исследования структур и алгоритмов нейронных сетей. Основная цель этого типа программного обеспечения — посредством моделирования лучше понять поведение и свойства нейронных сетей. Сегодня в изучении искусственных нейронных сетей симуляторы в значительной степени заменены более общими компонентными средами разработки в качестве исследовательских платформ.
К часто используемым симуляторам искусственных нейронных сетей относятся Stuttgart Neural Network Simulator (SNNS) и Emergent .
Однако в изучении биологических нейронных сетей единственным доступным подходом по-прежнему остается программное обеспечение для моделирования. В таких симуляторах изучаются физические, биологические и химические свойства нервной ткани, а также электромагнитные импульсы между нейронами.
К наиболее часто используемым симуляторам биологических сетей относятся Neuron , GENESIS , NEST и Brian .
В отличие от исследовательских симуляторов, симуляторы анализа данных предназначены для практического применения искусственных нейронных сетей. Их основная направленность — добыча данных и прогнозирование. Симуляторы анализа данных обычно имеют некоторые возможности предварительной обработки. В отличие от более общих сред разработки, симуляторы анализа данных используют относительно простую статическую нейронную сеть, которую можно настраивать. Большинство симуляторов анализа данных на рынке используют в качестве ядра сети обратного распространения или самоорганизующиеся карты. Преимущество этого типа программного обеспечения в том, что его относительно просто использовать. Neural Designer — один из примеров симулятора анализа данных.
Когда в 1986-87 годах были выпущены тома Parallel Distributed Processing [1] [2] [3] , они предоставляли относительно простое программное обеспечение. Первоначальное программное обеспечение PDP не требовало никаких навыков программирования, что привело к его принятию широким кругом исследователей в различных областях. Первоначальное программное обеспечение PDP было развито в более мощный пакет под названием PDP++, который, в свою очередь, стал еще более мощной платформой под названием Emergent . С каждой разработкой программное обеспечение становилось все более мощным, но и все более сложным для использования новичками.
В 1997 году было выпущено программное обеспечение tLearn, прилагавшееся к книге. [4] Это был возврат к идее предоставления небольшого, удобного для пользователя симулятора, разработанного с учетом потребностей новичков. tLearn позволял создавать базовые сети прямого распространения, а также простые рекуррентные сети, обе из которых можно было обучить с помощью простого алгоритма обратного распространения. tLearn не обновлялся с 1999 года.
В 2011 году был выпущен симулятор Basic Prop. Basic Prop — это автономное приложение, распространяемое в виде независимого от платформы JAR-файла, которое обеспечивает большую часть той же простой функциональности, что и tLearn.
Среды разработки для нейронных сетей отличаются от программного обеспечения, описанного выше, в первую очередь по двум причинам: они могут использоваться для разработки пользовательских типов нейронных сетей и поддерживают развертывание нейронной сети вне среды. В некоторых случаях они имеют расширенные возможности предварительной обработки , анализа и визуализации.
Более современный тип сред разработки, которые в настоящее время пользуются популярностью как в промышленном, так и в научном использовании, основан на компонентной парадигме . Нейронная сеть создается путем соединения компонентов адаптивного фильтра в потоке фильтра-трубы. Это обеспечивает большую гибкость, поскольку можно создавать как пользовательские сети, так и пользовательские компоненты, используемые сетью. Во многих случаях это позволяет сочетать адаптивные и неадаптивные компоненты для совместной работы. Поток данных контролируется системой управления, которая является сменной, а также алгоритмами адаптации. Другая важная особенность — возможности развертывания.
С появлением компонентно-ориентированных фреймворков, таких как .NET и Java , компонентно-ориентированные среды разработки способны развертывать разработанную нейронную сеть в этих фреймворках как наследуемые компоненты. Кроме того, некоторое программное обеспечение также может развертывать эти компоненты на нескольких платформах, таких как встроенные системы .
Компонентные среды разработки включают: Peltarion Synapse , NeuroDimension NeuroSolutions , Scientific Software Neuro Laboratory и интегрированное программное обеспечение LIONsolver . Бесплатные компоненты с открытым исходным кодом включают Encog и Neuroph .
Недостатком компонентных сред разработки является то, что они сложнее симуляторов. Они требуют большего обучения для полноценной работы и более сложны в разработке.
Большинство доступных реализаций нейронных сетей, однако, являются пользовательскими реализациями на различных языках программирования и на различных платформах. Базовые типы нейронных сетей просты в реализации напрямую. Существует также множество библиотек программирования , которые содержат функциональность нейронных сетей и могут использоваться в пользовательских реализациях (например, TensorFlow , Theano и т. д., обычно предоставляя привязки к таким языкам, как Python , C++ , Java ).
Для того чтобы модели нейронных сетей были общими для разных приложений, необходим общий язык. Для решения этой задачи был предложен язык разметки предиктивных моделей (PMML). PMML — это язык на основе XML, который предоставляет приложениям возможность определять и совместно использовать модели нейронных сетей (и другие модели добычи данных) между приложениями, совместимыми с PMML.
PMML предоставляет приложениям независимый от поставщика метод определения моделей, так что проблемы с патентованными правами и несовместимости больше не являются препятствием для обмена моделями между приложениями. Он позволяет пользователям разрабатывать модели в приложении одного поставщика и использовать приложения других поставщиков для визуализации, анализа, оценки или иного использования моделей. Раньше это было очень сложно, но с PMML обмен моделями между совместимыми приложениями теперь стал простым.
Предлагается ряд продуктов для производства и потребления PMML. Этот постоянно растущий список включает следующие продукты нейронных сетей: