Лабораторная работа №4 Нейронная сеть для LaunchPad-Arduino

Лабораторная работа №4 Нейронная сеть для LaunchPad-Arduino

Лабораторная работа №4 Нейронная сеть для LaunchPad-Arduino на основе MSP430,TMS320,ARM,AVR



1. Введение




В данной лабораторной работе мы с вами рассмотрим создание искусственной нейронной сети, для микроконтроллеров

MSP430,TMS320,ARM на платах LauncPad и микроконтроллеров AVR на платах Arduino Uno. Рассматриваемая нейронная сеть является прямой сетью с алгоритмом обратного распространения , которая, возможно, является наиболее распространенным типом. Этот алгоритм считается хорошим для сетей с контролируемым или неконтролируемым обучением. Код в нашей работе представлен эскизом Energia- Arduino. В примерах представлен готовый код - вы можете загрузить его на LauncPad или Uno и запустить, также, есть раздел информации о конфигурации, которая может быть использована для быстрого создания и обучения настройке сети. В данной работе проведем обзор искусственных нейронных сетей, , введем некоторые из основных понятий, используемых в прямых сетях и алгоритме обратного распространения.



2.Теория


Нейронные сети обратного распространения используются с середины 1980-х годов. Основные понятия обратного

распространения достаточно просты, в то время как сам алгоритм включает в себя высшую математику некоторого порядка, не нужно полностью понимать, как уравнения были получены для того, чтобы их применять. Есть некоторые проблемы в реализации сети на очень небольших контроллерах, на более ранних поколениях недорогих микроконтроллеров и любительского плат этих проблемы были значительными. Однако ресурсы LaunchPad и Arduino, как и многие из современных плат, делают довольно быстро работу задачи. Arduino Uno рассматриваемый здесь, основан на ATmega328 микроконтроллере фирмы Atmel. Его SRAM является достаточными для сети с 7 входами и 4 выходами, а также с поддержкой языка GCC Arduino для многомерных массивов и математикой с плавающей точкой. У микроконтроллеров TMS320, ARM, MSP430 на платах LaunchPad возможности и быстродействие еще богаче.

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


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

ввод всегда будет меняться. Конечно, маленькая сеть, построенная на ATmega328 не будет достаточна для задачи распознавания лица, но есть довольно много задач в роботизированном контроле и машинном обучении, которые были бы ему под силу.


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




Рис. 2.1 Наглядное представление нейрона сети


Как мы видим на рис. 2.1., нейрон можно рассматривать как крошечный электрохимический выключатель, который включается, когда

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




Рис.2.2. Представление нейрона в виде математического аппарата




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


На рис. 2.2. представлен элементарный нейрон,как обработчик информации.

Он имеет входы Х1 и Х 2, на них поступают данные, либо в вещественном виде, либо в целом. Очень часто приходится проводить нормализацию входных данных. Для этого достаточно: 1/number

Количество входов зависит от задачи.

Так же мы имеем веса входов: w1, w2. В них и заключается суть нейронных сетей, через них проходит обучение.

Перед началом обработки данных, входы умножаются на соответствующие им веса. т.е x1 * w1, x2 * w2. Далее результаты произведений поступают на нейрон и суммируются его сумматором. (x1 * w1) + (x2 * w2)



Например:


x1 = 1; x2 = 3; w1 = 0; w2 = -1;
(1 * 0) + (3 * (-1) ) = -3



Количество весов должно соответствовать количеству входов.



Далее результат суммирования поступает в блок нелинейного преобразования. В нём должна находиться функция активации. f(net)



Функция активации


Функции активации нужны для нормализации выходных данных. Допустим ответ -3 нам ни о чём не говорит, и мы хотели бы преобразовать его к 1 или 0.



Для этого имеется функция единого скачка. Когда в нейроне заряд превысил какой-то порог, то нейрон выдаёт 1. Если заряд ниже порога, то нейрон выдаст 0.


Например, T — порог. Он равен 0. Результат суммирования -3. -3 < 0, значит и ответ нейрона 0.

Если заряд был бы больше, например равный 0.5 или 1 или 124124, то нейрон выдал бы 1.


Порог устанавливается по вашему желанию, так как нейронная сеть всё равно подстроиться под него.


Когда нам необходимо преобразовать данные для большего выбора вариантов, то нам необходимо преобразовать суммированный результат в вид от 0 до 1.

Для такого у нас имеется логистическая функция. 1/(1+exp(anet))


Или: 1/(1+exp(net))


a — степень крутизны на графике функции.
net — результат суммирования



В нашем случае -3 преобразуется в 0.9525741268224334



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

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



Рис.2.3. 3-х слойная прямоточная нейронная сеть












1389
Нет комментариев. Ваш будет первым!