Polytech-soft.com

ПК журнал
3 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Нейронная сеть примеры matlab

Нейронные сети, «вредные» советы

Исторически, искусственные нейронные сети за свою уже более чем полувековую историю испытывали как периоды стремительных взлетов и повышенного внимания общества, так и сменявшие их периоды скепсиса и равнодушия. В хорошие времена ученым и инженерам кажется, что наконец-то найдена универсальная технология, способная заменить человека в любых когнитивных задачах. Как грибы после дождя, появляются различные новые модели нейронных сетей, между их авторами, профессиональными учеными-математиками, идут напряженные споры о большей или меньшей степени биологичности предложенных ими моделей. Профессиональные ученые-биологи наблюдают эти дискуссии со стороны, периодически срываясь и восклицая «Да такого же в реальной природе не бывает!» – и без особого эффекта, поскольку нейросетевики-математики слушают биологов, как правило, только тогда, когда факты биологов согласуются с их собственными теориями. Однако, с течением времени, постепенно накапливается пул задач, на которых нейронные сети работают откровенно плохо и энтузиазм людей остывает.

В наши дни нейронные сети снова в зените славы благодаря изобретению метода предобучения «без учителя» на основе Ограниченных Больцмановских Машин (Restricted Bolzmann Machines, RBM), что позволяет обучать глубокие нейронные сети (т.е. с экстра-большим, порядка десятков тысяч, количеством нейронов) и успехам глубоких нейронных сетей в практических задачах распознавания устной речи [1] и изображений [2]. К примеру, распознавание речи в Android реализовано именно на глубоких нейронных сетях. Как долго это продлится и насколько сильно глубокие нейронные сети оправдают возложенные на них ожидания – неизвестно.
Между тем, параллельно всем научным спорам, течениям и тенденциям, отчетливо выделяется сообщество пользователей нейронных сетей – инженеров-программистов-практиков, которых интересует прикладной аспект нейросетей, их способность обучаться на собранных данных и решать задачи распознавания. Со многими практическими задачами классификации и прогнозирования великолепно справляются хорошо проработанные, относительно небольшие модели многослойных персептронов (Multilayer Perceptron, MLP) и сети радиальных базисных функций (Radial Basis Function network, RBF). Эти нейронные сети многократно описаны, я бы посоветовать следующие книжки, в порядке моей личной симпатии к ним: Осовский [3], Бишоп [4], Хайкин [5]; также есть хорошие курсы на Coursera и подобных ресурсах.

Однако, что касается общего подхода использования нейронных сетей на практике, он кардинально отличается от обычного детерминированного девелоперского подхода «запрограммировал, работает – значит, работает всегда». Нейронные сети по своей природе являются вероятностными моделями, и подход к ним должен быть совершенно иной. К сожалению, многие программисты-новички технологий машинного обучения вообще и нейронных сетей в частности делают системные ошибки при работе с ними, разочаровываются и забрасывают это дело. Идея написания настоящего трактата на Хабр возникла после общения с такими разочарованными пользователями нейронных сетей – отличными, опытными, уверенными в себе программистами.

Вот мой список правил и типичных ошибок использования нейронных сетей.

1. Если есть возможность не использовать нейронные сети – не используйте их.
Нейронные сети позволяют решить задачу в случае, если предложить алгоритм путем многократного (или очень многократного) просмотра данных глазами невозможно. Например, если данных много, они нелинейные, зашумленные и/или большой размерности.

2. Сложность нейронных сетей должна быть адекватна сложности задачи.
Современные персональные компьютеры (к примеру, Core i5, 8 GB RAM) позволяют за комфортное время обучать нейронные сети на выборках объемом в десятки тысяч примеров, с размерностью входных данных до сотни. Большие выборки – задача для упомянутых выше глубоких нейронных сетей, которые обучают на многопроцессорных GPU. Эти модели очень интересны, но находятся вне фокуса внимания настоящей хабр-статьи.

3. Данные для обучения должны быть репрезентативными.
Обучающая выборка должна полно и разносторонне представлять описываемый феномен, включать в себя различные возможные ситуации. Хорошо, когда данных много, но это само по себе тоже не всегда помогает. В узких кругах широко распространен анекдот, когда к распознавальщику приходит геолог, выкладывает перед ним кусок минерала и просит разработать по нему систему распознавания такого вещества. «А можно ли еще примеров данных?» — спрашивает распознавальщик. «Конечно!» — отвечает геолог, достает кирку и раскалывает свой кусок минерала еще на несколько штук. Как вы понимаете, проку от такой операции не будет – никакой новой информации такая увеличившаяся выборка в себе не несет.

4. Перемешивайте выборку.
После того, как входные и выходные векторы данных собраны, если измерения независимы между собой – поменяйте порядок следования векторов произвольным образом. Это критично для корректного разделения выборки на Train/Test/Validation и всех методов обучения типа «пример-за-примером» («sample-by-sample»).

5. Нормируйте и центрируйте данные.
Для многослойных персептронов, и для многих других моделей значения входных данных должны лежать в пределах [-1;1]. Перед тем, как подавать их на нейросеть, вычтите из данных среднее и поделите все значения на максимальное значение.

Читать еще:  Вк социальная сеть войти

6. Делите выборку на Train, Test и Validation.
Основная ошибка новичков – обеспечить минимальную ошибку работы нейросети на обучающей выборке, попутно адски ее переобучив и затем желать такого же хорошего качества на новых реальных данных. Это особенно легко сделать, если данных мало (или они все «из одного куска»). Результат может очень расстроить: нейросеть максимально подстроится под выборку и потеряет работоспособность на реальных данных. Для того, чтобы контролировать обобщающие способности вашей модели – разделите все данные на три выборки соотношении 70: 20: 10. Обучайтесь на Train, периодически проверяя качество модели на Test. Для финальной непредвзятой оценки – Validation.
Техника кросс-валидации, когда Train и Test несколько раз формируется по очереди произвольным способом из одних и тех же данных, может проявить коварство и дать ложное впечатление о хорошем качестве работы системы – например, если данные взяты из разных источников и это критично. Используйте правильный Validation!

7. Применяйте регуляризацию.
Регуляризация – это техника, которая позволяет избежать переобучения нейросети во время обучения, даже если данных мало. Если вы обнаружили галочку с таким словом, обязательно ее ставьте. Признак переобучившейся нейросети – большие значения весов, порядка сотен и тысяч, такая нейросеть не будет нормально работать на новых, не виденных ранее, данных

8. Не нужно дообучать нейронную сеть в режиме он-лайн.
Идея дообучать нейросеть перманентно все время на новых поступающих данных – сама по себе правильная, в реальных биологических системах все именно так и происходит. Мы учимся каждый день и редко сходим с ума. Тем не менее, для обычных искусственных нейронных сетей на современном этапе технического развития такая практика является рискованной: сеть может переобучиться или подстроиться под самые последние поступившие данные данные – и потеряет свои обобщающие способности. Для того, чтобы систему можно было использовать на практике, нейросеть нужно: 1) обучить, 2) протестировать качество на тестовых и валидационных выборках, 3) выбрать удачный вариант сети, зафиксировать ее веса и 4) использовать обученную нейросеть на практике, веса в процессе использования не менять.

9. Используйте новые алгоритмы обучения: Левенберга-Марквардта, BFGS, Conjugate Gradients и др.
Я глубоко убежден, что реализовать обучение методом обратного распространения ошибки (backpropagation) – святой долг каждого, кто работает с нейронными сетями. Этот метод самый простой, относительно легко программируется и позволяет хорошо изучить процесс обучения нейронных сетей. Между тем, backpropagation был изобретен в начале 70-х и стал популярен в середине 80-х годов прошлого столетия, с тех пор появились более продвинутые методы, которые могут в разы улучшить качество обучения. Лучше используйте их.

10. Обучайте нейронные сети в MATLAB и подобных дружественных средах.
Если вы не ученый, разрабатывающий новые методы обучения нейронных сетей, а программист-практик, я бы не рекомендовал кодировать процедуру обучения нейронных сетей самостоятельно. Существует большое количество программных пакетов, в основном на MATLAB и Python, которые позволяют обучать нейронные сети, при этом контролировать процесс обучения и тестирования, используя удобные средства визуализации и отладки. Пользуйтесь наследием человечества! Мне лично нравится подход «обучение в MATLAB хорошей библиотекой – реализация обученной модели руками», он достаточно мощный и гибкий. Исключение – пакет STATISTICA, который содержит продвинутые методы обучения нейросетей и позволяет генерировать их в виде программного кода на С, удобного для иплементации.

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

Нейронная сеть примеры matlab

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

  • Нейросети – это мощнейший метод имитации явлений и процессов, который позволяет показывать сложнейшие зависимости. Нейронные сети являются нелинейными по своей природе, в то же время как на протяжении нескольких лет для создания моделей применялся линейный подход. А также, во многих случаях нейронные сети помогали преодолеть, так называемое, «проклятие размерности», которая обусловлена тем, что создание модели нелинейных явлений требует большого количества вычислительных ресурсов (в случае большого числа переменных).
  • Следующая особенность нейросетей связана с тем, что используется механизм обучения. Пользователь нейронной системы подбирает представительные данные и запускает обучающий алгоритм, который сам настраивает параметры сети без участия пользователя. От пользователя только требуется набор эвристических знаний
    о том, как следует подготавливать и отбирать данные, выбирать необходимую архитектуру нейронной сети и интерпретировать полученные результаты. Однако следует заметить, что уровень знаний, требующийся от пользователя, который необходим для успешного применения нейронной системы, намного меньше, чем, к примеру, при использовании традиционных методов.
Читать еще:  Как найти скрытую вай фай сеть

Предлагаемый вниманию читателя сайт входит в серию «Пакеты прикладных программ». Этот сайт посвящен описанию прикладного программного обеспечения фирмы MathWorks, функционирующего под управлением ядра системы MATLAB.

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

Теория нейронных сетей развивается в течение последнего полувека, но практическое ее применение стало возможно только в последние 10–15 лет, когда была создана необходимая элементная база для реализации нейронных сетей.

Тем не менее данный сайт занимает особое место, поскольку в ней описан реальный инструмент для расчета и проектирования нейронных сетей. Этот сайт содержит теорию и описание конкретных нейронных сетей. На нем также включен раздел по системе MATLAB 6 и GUI-интерфейсу для работы с ППП NNT, а также вклю­чает справочный материал по описанию М-функций пакета.

Значительное внимание уделено проектированию контроллеров для систем управления на основе нейронных сетей. Рассмотрено несколько весьма сложных систем управления, для которых процедура проектирования контроллера занимает значительное время.
В первую очередь это модель химического реактора с непрерывным перемешиванием, где используется модель управляемого процесса для предсказания поведения реактора в процессе его функционирования. Другая модель – управление движущимся объектом в магнитном поле. Здесь в качестве модели управляемого процесса используется нелинейная авторегрессионная модель со скользящим средним, которая входит в состав регулятора
и реализуется в виде нейронной сети. Еще один пример связан с управлением роботом, здесь нейронные сети используются для построения как модели управляемого объекта, так и самого регулятора. Работа с этими системами возможна только при наличии ядра системы MATLAB версии 6 и системы Simulink версий 4 (R12) или 5.

Читателю следует выбрать стиль работы с сайтом. Начинающему знакомиться
с теорией и практикой нейронных сетей рекомендуется в первую очередь просмотр демонстрационных примеров и формирование сетей с помощью GUI-интерфейса NNTool. Опытному пользователю, создающему собственные архитектуры искусственных нейронных сетей, следует применять режим работы из командного окна, который позволяет воспользоваться всеми возможностями ППП NNT. Следует также обратить внимание на интерфейс ППП NNT с системой SIMULINK, что позволяет наглядно отображать архитектуру сети и выполнять моделирование как статических, так и динамических нейронных сетей.

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

Также на этот ресурс предназначен для подробного изучения раздела — искусственные нейронные сети в Matlab, а именно изучение моделей нейрона и их архитектуры, обучение нейронных сетей, изучение персептронов, линейных сетей, радиальных базисных сетей, сетей кластеризации и классификации данных, сетей Кохонена, LVQ-сетей, рекурентных сетей (Элмана, Хопфилда). Поэтому к выбору правильной архитектуры необходимо подойти основательно и просмотреть много альтернатив! Поэтому из выше всего сказанного можно сделать вывод, что вам необходимо просмотреть много дополнительной информации и альтернатив!

Методы классификации и прогнозирования. Нейронные сети

Пакет Matlab

Пакет MATLAB (The MathWorks) также предоставляет пользователям возможность работы с нейронными сетями . Входящий в стандартную поставку MATLAB » Neural Network Toolbox » предоставляет широкие возможности для работы с нейронными сетями всех типов.

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

Рассмотрим пример конструирования нейронной сети в пакете Matlab.

Пусть имеется 15 независимых переменных — показателей деятельности фирмы и одна зависимая переменная — объем продаж. Имеем базу данных за прошедший год. Необходимо построить понедельный прогноз объемов продаж на месяц. Для решения задачи предлагается использовать трехслойную сеть обратного распространения .

Сформируем такую сеть , которая включает 15 нейронов во входом слое ( по количеству входных переменных), 8 нейронов во втором слое и 1 нейрон в выходном слое ( по количеству выходных переменных).

Для каждого слоя выберем передаточную функцию: первый слой — tansig, второй — logsig, третий — purelin.

В среде Matlab синтаксис такой нейронной сети выглядит следующим образом:

где PR — массив минимальных и максимальных значений для R векторов входа;

Si — количество нейронов в i-м слое ;

Читать еще:  Локальная коммуникационная сеть это

TFi — функция активации слоя i;

btf — обучающая функция , реализующая метод обратного распространения ;

blf — функция настройки, реализующая метод обратного распространения ;

pf — критерий качества обучения.

Активационной функцией может выступать любая дифференцируемая функция , например, tansig, logsig, purelin.

где P — множество входных векторов;

n — количество входов НС;

m — количество нейронов в скрытом слое ;

l — количество выходов НС.

Необходимо также установить метод расчета значения ошибки. Например, если выбран метод наименьших квадратов , то эта функция будет выглядеть так: Net .performFcn=’ SSE ‘.

Для установления максимального количества эпох равным 10000 воспользуемся функцией: net.trainParam.epochs=10000 .

Запустить процесс обучения можно таким образом:

После окончания обучения сети ее можно сохранить в файле, например, с именем nn1. mat .

Для этого необходимо выполнить команду:

Таким образом, в пакете возможно конструирование сети любой сложности и нет необходимости привязываться к ограничениям, накладываемым нейросимуляторами. Однако для работы с нейронными сетями в пакете Matlab необходимо изучить как саму среду, так и большинство функций Neural Network Toolbox . Для более детального изучения конструирования нейронных сетей в Neural Network Toolbox можно порекомендовать [49, 50].

Параметрический поиск по компонентам

  • 21.02.2018 10:40Приемопередатчики интерфейса CAN с единым напряжением питания 3.3 В и защитой от перегрузок на шине до ±36 В
    Устройства также отличаются высокой пропускной способностью, функцией регулировки скорости нарастания выходного сигнала и малопотребляющим режимом ожидания
    Производитель: Exar Группа компонентов: CAN

  • 21.02.2018 10:22Миниатюрный модуль зарядного устройства малой мощности для работы в системах накопления энергии из окружающей среды
    Устройство, выполненное в виде готового решения с минимальным числом внешних компонентов, отличается низкой стоимостью, высокой эффективностью и чрезвычайно компактными размерами
    Производитель: Silvertel Группа компонентов: PoE-модули питания

  • 21.02.2018 10:08Низковольтный модуль драйвера светодиодов Ag201 с программируемой величиной выходного тока
    Благодаря возможности пользовательской установки максимального тока нагрузки, драйвер способен управлять различными типами светодиодов
    Производитель: Silvertel Группа компонентов: Контроллеры Дисплеев

  • 21.02.2018 09:53Коммутаторы Ethernet BCM56980 серий StrataXGS® Tomahawk® 3 с пропускной способностью 12.8 Tбит/с
    Семейство StrataXGS Tomahawk 3 с поддержкой до 32 портов стандарта 400GbE может использоваться для построения высокомасштабируемых распределительных, объединительных и масштабирующих коммутаторов
    Производитель: Broadcom Limited Группа компонентов: Ethernet

  • 21.02.2018 09:44Компактный DC/DC преобразователь в исполнении µModule® с током нагрузки 20 А в 1-канальной и 10 А на канал в 2-канальной конфигурации,
    ИС предназначена для каскадов питания ПЛИС, графических процессоров, специализированных микросхем и системного энергообеспечения
    Производитель: Analog Devices Группа компонентов: Понижающие преобразователи напряжения

  • 28.11.2017 06:05Скидки от 50% на ПО для проектирования печатных плат от Mentor Graphics
    ЗАО «Нанософт», официальный дистрибьютор компании Mentor Graphics, объявляет о старте специального предложения на приобретение программных решений для разработки электроники – PADS
    Производитель: Группа компонентов:
  • 24.09.2016 08:15Компания АВИТОН — официальный представитель Regatron (Швейцария)
    Компания Regatron осуществляет разработку и производство источников питания
    Производитель: Группа компонентов: Источники питания
  • 15.09.2016 08:42Arrow Electronics проводит в жизнь технологии краудфандинга с Indiegogo
    Их деятельность направлена на оптимизацию цепочки краудфандинг — продукт и должна ускорить темпы внедрения инноваций для технологии интернета вещей (IoT)
    Производитель: Arrow Electronics Russia Группа компонентов:
  • 08.08.2016 08:41«Новости Электроники + Светотехника» №01/2016: LED-освещение для промышленных объектов

    Производитель: Группа компонентов:

  • 22.07.2016 08:31Прошивка Serial Extender упрощает работу с модулями MBee
    Два радиомодуля MBee-868 с прошивкой Serial Extender позволяют заменить проводное последовательное соединение между двумя любыми устройствами с интерфейсом UART
    Производитель: Группа компонентов: Модули

  • 29.07.2015 10:24Компания Altera присоединилась с проекту OPNFV с целью привнести преимущества ПЛИС FPGA в технологию виртуализации сетевых функций
    Решения на базе ПЛИС FPGA и Систем-на-Кристалле уже ускоряют работу серверов дата-центров в области предоставления поисковых сервисов и свёрточных нейронных сетей
    Производитель: Altera Группа компонентов: FPGA
  • 29.07.2015 10:14Пример разработки хранилища данных на базе ПЛИС FPGA удваивает срок службы NAND FLASH памяти
    Архитектура ПЛИС FPGA со встроенным процессорным ядром предлагает инновационный метод создания устройств хранения данных для облачных приложений и высокопроизводительных вычислительных систем
    Производитель: Altera Группа компонентов: SoC FPGA
  • 08.07.2015 13:41Компания Pentair предлагает новые трехмерные чертежи и услуги для конструкторов на портале Traceparts
    Чертежи Schroff на портале Traceparts
    Производитель: Schroff Группа компонентов:
  • 13.04.2015 14:37Cypress Semiconductor: CySmart™ — приложения для устройств Bluetooth® с низким энергопотрбелением (BLE)

    Производитель: Cypress Группа компонентов: Bluetooth

  • 28.01.2015 09:43Audi выбрала Системы-на-Кристалле компании Altera для применения в автомобилях с функцией «Автопилот»
    Altera и TTTech Deliver Industry, лидер в области разработки продвинутых систем помощи водителю (ADAS), приступили к разработке систем управления автопилотируемых автомобилей для компании Audi
    Производитель: Altera Группа компонентов: Программируемая Логика
Ссылка на основную публикацию
Adblock
detector