Цель работы — создание программы, реализующей искусственный нейрон; разработка процедуры обучения нейрона; использование полученных результатов для решения тестовых задач классификации и аппроксимации.
Теоретическая часть
Модели различных типов искусственных нейронов и методы их обучения описаны в учебном пособии Искусственные нейронные сети. В теоретической части данного пособия в качестве примера подробно рассматриваются подходы к обучению сигмоидального нейрона, используемого для классификации данных. Структурная схема такого нейрона представлена на рис. 1.
Рис. 1.  Структурная схема сигмоидального нейрона
Здесь — взвешенная сумма входных сигналов, вычисляемая по формуле

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

где — коэффициент "крутизны" функции.
На рис. 2 представлены графики этой функции для различных значений .
Рис. 2.  Графики униполярной сигмоидальной функции
Производная униполярной сигмоидальной функции по аргументу имеет вид

Графики производной униполярной сигмоидальной функции представлены на рис. 3.
Рис. 3.  Графики производной униполярной сигмоидальной функции
Далее везде будем использовать значение .
Процесс обучения нейрона сводится к отысканию значений весов , доставляющих минимум целевой функции в виде

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

Классификация одномерных данных
Рассмотрим простейший случай. Пусть необходимо разработать сигмоидальный нейрон для классификации одномерных данных, множество обучающих выборок для которых представлено в табл. 1.
Таблица 1    
12345678910
0.01.02.03.04.06.08.010.012.014.0
0000011111

Для классификации одномерных данных будем использовать двухвходовой нейрон (с одним входом поляризации ), структурная схема которого представлена на рис. 4.
Рис. 4.  Структурная схема двухвходового нейрона
В ходе обучения, в общем случае, адаптациии подвергаются коэффициенты и . На рис. 5 представлен график зависимости целевой функции от управляемых параметров и ( изменяется в пределах от -10 до 0, а — в пределах от 0 до 4).
Рис. 5.  График зависимости целевой функции от управляемых параметров
Тот же график при "взгляде сверху" имеет следующий вид (см. рис. 6).
Рис. 6.  График зависимости целевой функции от управляемых параметров при "взгляде сверху"
Для упрощения задачи и достижения наглядности в представлении расчетных данных зафиксируем один из управляемых парметров. Пусть это будет .
Тогда в режиме обучения "оффлайн" для график зависимости целевой функции от выглядит так, как это показано на рис. 7.
Рис. 7.  График зависимости целевой функции от w1 для w0=-5,0
Для зависимость целевой функции от имеет вид, показанный на рис. 8.
Рис. 8.  График зависимости целевой функции от w1 для w0=-1,0
А для та же зависимость имеет вид, представленный на рис. 9.
Рис. 9.  График зависимости целевой функции от w1 для w0=1,0

Обучение нейрона в режиме "оффлайн"
Обучение нейрона реализуется методом градиента по следующей формуле

где — коэффициент обучения, а — номер цикла обучения (шага поисковой оптимизации). В нашем одномерном случае формула принимает вид

График зависимости производной целевой функции для приведен на рис. 10.
Рис. 10.  График зависимости производной целевой функции по w1
Основными проблемами в реализации метода градиента являются следующие две:
В простейшем варианте метода градиента коэффициент выбирается постоянной величиной из диапазона (0, 1], а процесс поиска минимума завершается при выполнении условия , где — константа, определяющая точность отыскания минимума.
На рис. 11 представлена траектория поиска для значений , , , . Количество шагов поиска — 14.
Рис. 11.  Траектория поиска минимума целевой функции
На рис. 12 дана траектория поиска для значений , , , . Количество шагов поиска — 11.
Рис. 12.  Траектория поиска минимума целевой функции
Однако, выбор начального значения адаптируемого веса на относительно большом расстоянии от точки экстремума резко увеличивает необходимое количество циклов обучения (до 914), что иллюстрируется траекторией поиска, показанной на рис. 13.
Рис. 13.  Траектория поиска минимума целевой функции
Очевидное объяснение этому факту — "пологость" целевой функции (малость абсолютной величины градиента) в удалении от точки экстремума, что обусловлено сигмоидальностью функции активации нейрона.
В этой ситуации появляется соблазн увеличить значение коэффициента обучения , что должно ускорить поиск на пологих участках целевой функции. Но, к сожалению, большие значения коэффициента влекут за собой проблемы со сходимостью алгоритма обучения в областях с большими значениями градиента целевой функции.
На рис. 14 показан фрагмент траектории поиска при следующих условиях: , , .
Рис. 14.  Траектория поиска минимума целевой функции
Отметим, что при данном значении процесс обучения медленно, но сходится.
При значении коэффициента обучения сходимости обучения достичь не удается, что иллюстрирует рис. 15.
Рис. 15.  Траектория поиска минимума целевой функции
Приведенные выше примеры показывают, что для эффективного обучения нейрона необходимы адаптивные стратегии подбора коэффициента обучения в ходе поиска экстремума.
Хорошие результаты демонстрирует следующая стратегия адаптации коэффициента .
  1. В текущем -ом цикле обучения вычисляется новое значение вектора входных весов нейрона по стандартной формуле и сравниваются значения целевой функции в точках и .
  2. Если , то и счетчик числа подряд идущих удачных применений величины увеличивается на 1. Если этот счетчик превышает наперед заданную величину (например, 2), то значение удваивается, а счетчик сбрасывается в 0. Далее увеличивается на 1 и выполняется переход к п. 1.
  3. Если , то значение коэффициента уменьшается наполовину, а счетчик числа подряд идущих удачных применений величины сбрасывается в 0. Далее выполняется переход к п.1.
  4. Процесс обучения завершается при условии , где — константа (например, 0,001), заданная перед началом обучения.
На рис. 16 показана траектория поиска минимума целевой функции для упоминавшейся выше задачи с . Для решения задачи потребовалось 30 циклов обучения, при этом величина сначала увеличилась от начального значения 0,6 до 76,8, потом упала до 0,000586.
Рис. 16.  Траектория поиска минимума целевой функции

Обучение нейрона в режиме "онлайн"
Обучение в данном режиме подразумевает корректировку входных весов нейрона после предъявления каждого обучающего вектора. При этом минимизируемая целевая функция имеет следующий вид:

Рассмотрим задачу классификации двухмерных данных, обучающие векторы для которых представлены в табл. 2.
Таблица 2    
12345678910
0.00.90.00.50.41.01.10.00.60.5
0.00.00.90.40.51.00.01.10.50.6
0000011111

Для классификации будем использовать трехвходовой нейрон с одним входом поляризации (), структурная схема которого представлена на рис. 17.
Рис. 17.  Cтруктурная схема трехвходового нейрона
Для обучения нейрона в режиме "онлайн" воспользуемся простейшим правилом Видроу-Хоффа, согласно которому корректировка входного веса осуществляется по формуле

В качестве условия завершения обучения примем для всех в цикле обучения .
Анализ обучающих данных показывает "тесное соседство" векторов, принадлежащих двум разным кластерам, это заставляет увеличивать "крутизну" сигмоидальной функции. Поэтому пусть .
Решение задачи классификации двухмерных данных трехмерным сигмоидальным нейроном для следующих начальных данных: , , , , потребовало 16 циклов обучения и дало следующий результат: , , .
Полученным значениям соответстует функция классификации нейрона , график которой представлен на рис. 18.
Рис. 18.  График функция классификации трехвходового нейрона
Примечание 1
Выбранное нами большое значение коэффициента превратило сигмоидальный нейрон фактически в персептрон.
Практическая часть
1. Лабораторная работа выполняется в среде ОС Linux с использованием компилятора gcc/g++ языка программирования C/C++. Для создания графических иллюстраций рекомендуется использовать утилиту gnuplot.
2. Разработать, используя язык C/C++, программу, моделирующую поведение искусственного трехвходового нейрона указанного преподавателем типа и обеспечивающую его обучение для решения задачи классификации. Ниже представлена таблица вариантов заданий.
Таблица 3    
Номер вариантаТип нейрона
1Персептрон
2Сигмоидальный нейрон
3Радиальный нейрон
4Инстар Гроссберга
5Нейроны типа WTA

Перед началом разработки программы обязательно уточнить все детали задания у преподавателя.
3. Отладить модель нейрона и процедуру его обучения на произвольных двухмерных данных. Рекомендуется, в тех ситуациях, когда это возможно, использовать режим обучения "оффлайн".
4. Обучить разработанный нейрон на предложенном преподавателем варианте двухмерных данных и проверить его работу на ряде контрольных точек. Ниже даны варианты различных обучающих выборок (масштабирующие значения и необходимо запросить у преподавателя).
Рис. 19.  Вариант 1 обучающих данных
Рис. 20.  Вариант 2 обучающих данных
Рис. 21.  Вариант 3 обучающих данных
Рис. 22.  Вариант 4 обучающих данных
Рис. 23.  Вариант 5 обучающих данных
Рис. 24.  Вариант 6 обучающих данных
Рис. 25.  Вариант 7 обучающих данных
Рис. 26.  Вариант 8 обучающих данных
5. Выполнить все модификации в программе и исходных данных, указанные преподавателем.
6. Оформить отчет по лабораторной работе с использованием языка разметки HTML (все иллюстрации должны быть представлены в формате png).
Содержание отчета
1. Описание реализованной модели нейрона и процедуры его обучения.
2. Рисунок, иллюстрирующий распределение в пространстве обучающих данных.
3. Численные значения, характеризующие начальное состояние, ход обучения и его результат (например, начальные и итоговые значения входных весов нейрона, величина коэффициента обучения, количество циклов обучения и т.п.).
4. Графическое представление результатов обучения нейрона (например, график зависимости выходного сигнала нейрона от входных данных ).
5. Исходный текст программы.