Введение

алгоритм программа нейросеть

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

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

Целью данной работы является разработка модели нейросети на микроконтроллере, а так же закрепление практических навыков программирования микроконтроллеров на языке С и программирования ПК на С#. Процесс подготовки предусматривает самостоятельное изучение нового материала и закрепление его с помощью практического задания.

Разработка алгоритма

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

Математический алгоритм

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

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

Состояние нейрона определяется по формуле

(1)

где :

n - число входов нейрона

xi - значение i-го входа нейрона

wi - вес i-го синапса

Затем определяется значение аксона нейрона по формуле

Y = f(S) (2)

Где f - некоторая функция, которая называется активационной. Наиболее часто в качестве активационной функции используется сигмоид, который имеет следующий вид:

(3)

Основное достоинство этой функции в том, что она дифференцируема на всей оси абсцисс и имеет очень простую производную:

(4)

При уменьшении параметра a сигмоид, становится более пологим, вырождаясь в горизонтальную линию на уровне 0,5 при a=0. При увеличении a, сигмоид приближается к функции единичного скачка.

Список других наиболее употребляемых функций активации приведен в таблице 1.

Таблица 1- Основные функций активации.

Название

Математическая запись

1

Линейная

2

Пороговая бинарная

3

Пороговая биполярная

4

Линейная ограниченная

5

Гиперболический тангенс

6

Логарифмическая

7

Радиально-базисная

8

Сигмоидная (y [-1,1])

Обучение нейронной сети

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

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

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

Алгоритм обратного распространения ошибки:

1. Инициализировать синаптические веса маленькими случайными значениями.

2. Выбрать очередную обучающую пару из обучающего множества; подать входной вектор на вход сети.

3. Вычислить выход сети.

4. Вычислить разность между выходом сети и требуемым выходом (целевым вектором обучающей пары).

5. Подкорректировать веса сети для минимизации ошибки (как см. ниже).

Повторять шаги с 2 по 5 для каждого вектора обучающего множества до тех пор, пока ошибка на всем множестве не достигнет приемлемого уровня.

Рассмотрим подробней 5 шаг - корректировка весов сети. Здесь следует выделить два нижеописанных случая.

Случай 1. Корректировка синаптических весов выходного слоя

Определимся, что индексом p будем обозначать нейрон, из которого выходит синаптический вес, а q - нейрон в который входит.

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

(5)

Тогда, веса выходного слоя после коррекции будут равны:

(6)

где:

i - номер текущей итерации обучения;

- величина синаптического веса, соединяющего нейрон p с нейроном q;

- коэффициент «скорости обучения», позволяет управлять средней величиной изменения весов;

- выход нейрона .

Случай 2. Корректировка синаптических весов скрытого слоя.

(7)

где:

- сумма от 1 по N, N - количество нейронов выходного слоя.

Тогда, веса скрытого слоя после коррекции будут равны:

(8)

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

(9)

где реальное выходное состояние нейрона выходного слоя N нейронной сети при подаче на ее входы - го образа; - желаемое (идеальное) выходное состояние этого нейрона. Суммирование происходит по всем нейронам выходного слоя и по всем обрабатываемым сетью образам.

Разработка схем алгоритмов

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

Обобщенная схема алгоритма программы

Рисунок 2 - Обобщенная схема алгоритма программы

Алгоритм обучения нейросети представлен на рисунке 3.

Схема алгоритма обучения нейросети

Рисунок 4 - Схема алгоритма обучения нейросети

 
< Пред   СОДЕРЖАНИЕ   Скачать   След >