Содержание статьи
Как создать нейросеть в матлабе
Получение нейронной сети
Эта функция копирует заданные переменные из NNTool в рабочее пространство MATLAB. Она доступна по нажатию кнопки Export главного окна NNTool. В окне экспорта единым списком перечислены переменные всех категорий, представленных в NNTool. Здесь необходимо выделить те из них, которые подлежат экспорту, и нажать Export. Теперь выделенные переменные скопированы в рабочее пространство MATLAB.
Наша цель — провести границу, отделяющую множество нулей от множества крестиков. Из построенной картины на рис. 10 видно, что невозможно провести прямую линию, которая бы отделила нули от единиц. Именно в этом смысле множество нулей линейно неотделимо от множества единиц, и персе-п-троны, рассмотренные ранее, в принципе, не могут решить рассматриваемую задачу.
Источником служит переменная в рабочем пространстве MATLAB, а пунктом назначения — переменная в рабочем пространстве NNTool. Нажав кнопку Import, попадаём в окно «Импорта-за-грузки данных» (Import or Load to Network/Data Manager). По умолчанию здесь установлена опция загрузки из рабочего пространства MATLAB, поэтому в центре окна появляется список принадлежащих ему переменных. Выбрав мышью нужную переменную в поле «Выбор переменной» (Select a Variable), — ей можно задать произвольное имя в поле «Имя» (Name), под которым она будет скопирована в NNTool. Когда переменная выделена, NNTool анализирует её тип и делает доступными для выбора те «Категории данных» (Import As), которые поддерживаются. Указав одну из них, следует нажать кнопку «Импортировать» (Import), чтобы завершить копирование. После того, как все действия успешно проведены, имя импортируемой переменной появится в одном из списков главного окна NNTool.
Если в результате последовательных шагов обучения и контроля ошибка остаётся недопустимо большой, целесообразно изменить модель нейронной сети (например, усложнить сеть, увеличив число нейронов, или использовать сеть другого вида). В такой ситуации рекомендуется применять ещё одно множество — тестовое множество наблюдений (Test Data), которое представляет собой независимую выборку из входных данных. Итоговая модель тестируется на этом множестве, что даёт дополнительную возможность убедиться в достоверности полученных результатов. Очевидно, чтобы сыграть свою роль, тестовое множество должно быть использовано только один раз. Если его использовать для корректировки сети, оно фактически превратится в контрольное множество.
Для решения этой задачи выбрана сеть Feed-forward backprop с пятью сигмоидными нейронами первого слоя и пятью линейными нейронами второго слоя. Алгоритм обучения — Левенберга-Маркардта. С такой конфигурацией сеть после восьми эпох обучения дала ошибку порядка 10 -30 .
В этой статье мы рассмотрим возможности использования одного из основных инструментов MatLab для проектирования и обучения нейронных сетей Neural Time Series (ntstool) как с помощью GUI, так и с помощью программного кода (а также коснемся расширения возможностей проектирования с помощью программного кода)
При работе с NNTool важно помнить, что клавиши View, Delete, Initialize, Simulate, Train и Adapt (изображены на рис. 1 как неактивные) действуют применительно к тому объекту, который отмечен в данный момент выделением. Если такого объекта нет, либо над выделенным объектом невозможно произвести указанное действие, соответствующая клавиша неактивна.
С помощью клавиши «Вид» (View) можно посмотреть архитектуру создаваемой сети (рис. 5). Так, мы имеем возможность удостовериться, все ли действия были произведены верно. На рис. 5 изображена персептронная сеть с выходным блоком, реализующим передаточную функцию с жёстким ограничением. Количество нейронов в слое равно одному, что символически отображается размерностью вектора-столбца на выходе слоя и указывается числом непосредственно под блоком передаточной функции. Рассматриваемая сеть имеет два входа, так как размерность входного вектора-столбца равна двум.
Выбор данных для обучения, и их подготовка
Вернёмся в главное окно NNTool. На данном этапе интерес представляет нижняя панель «Только сети» (Networks only). Нажатие любой из клавиш на этой панели вызовет окно, на множестве вкладок которого представлены параметры сети, необходимые для её обучения и прогона, а также отражающие текущее состояние сети.
Принимая во внимание тот факт, что для задач с линейно отделимыми множествами (а наша задача относится к этому классу) всегда существует точное решение, установим порог достижения цели, равный нулю. Значения остальных параметров оставим по умолчанию. Заметим только, что поле времени обучения содержит запись Inf, которая определяет бесконечный интервал времени (от английского Infinite — бесконечный).
Нейронные сети (NN — Neural Networks) широко используются для решения разнообразных задач. Среди развивающихся областей применения NN — обработка аналоговых и цифровых сигналов, синтез и идентификация электронных цепей и систем. Основы теории и технологии применения NN широко представлены в пакете MATLAB. В этой связи особо следует отметить последнюю версию пакета — MATLAB 6.0, где впервые представлен GUI (Graphical User Interface — графический интерфейс пользователя) для NN — NNTool.
Мы рассмотрели простейшие задачи синтеза цепей и обработки сигналов, для решения которых применялись наиболее популярные нейронные сети прямого распространения. На самом деле, NNTool позволяет решать значительно более широкий круг задач, предоставляя возможность использовать сети разнообразных архитектур, с памятью и без, с обратными связями и без таковых. При этом следует иметь ввиду, что успех во многом зависит от понимания поведения конструируемых сетей и их аппроксимационных возможностей.
Предсказание — это своего рода динамическая фильтрация, в которой прошлые значения одного или нескольких временных рядов используются для прогнозирования будущих значений. Динамические нейронные сети, которые включают в себя слои запаздывания, используются для нелинейной фильтрации и прогнозирования. Существует много приложений для прогнозирования. Например, финансовый аналитик может захотеть предсказать будущую стоимость акции, облигации или другого финансового инструмента. Инженер может захотеть предсказать сбой реактивного двигателя. Предиктивные модели также используются для идентификации системы (или динамического моделирования), в котором строятся динамические модели физических систем. Эти динамические модели используются для анализа, моделирования, мониторинга и управления различными системами, включая производственные системы, химические процессы, робототехнику и аэрокосмические системы. Этот инструмент позволяет решать три типа нелинейных временных рядов, показанных на правой панели. Выберите одно и нажмите [Next].
Здесь источник — файл. При этом важно, чтобы его формат поддерживался NNTool. В подходящем формате хранятся так называемые MAT-файлы. Они содержат бинарные данные и позволяют MATLAB сохранять переменные любых поддерживаемых типов и размерностей. Такие файлы могут создаваться, например, в процессе работы с NNTool. Чтобы загрузить переменные из MAT-файла в NNTool, необходимо открыть окно импорта, нажав кнопку «Import» главного окна NNTool. Затем следует отметить опцию «Загрузить из файла» (Load from disk file) и, нажав «Обзор» (Browse), открыть файл с данными, хранящимися в формате MAT-файлов. Чаще всего, это файлы с расширением MAT. В результате, список в окне импорта заполнится именами переменных, сохранённых в указанном MAT-файле. Дальнейшая последовательность действий полностью совпадает с описанной в пункте Импорт (рис. 19).