Цель работы - создание программы, реализующей искусственный нейрон; разработка процедуры обучения нейрона; использование полученных результатов для решения тестовых задач классификации и аппроксимации.
Модели различных типов искусственных нейронов и методы их обучения описаны в учебном пособии "Искусственные нейронные сети". В теоретической части данного пособия в качестве примера подробно рассматриваются подходы к обучению сигмоидального нейрона, используемого для классификации данных. Структурная схема такого нейрона представлена ниже.
Здесь u - взвешенная сумма входных сигналов, вычисляемая по формуле
Выходной сигнал y вычисляется с использованием униполярной сигмоидальной функции активации в виде
Ниже представлены графики этой функции для различных значений b.
Производная униполярной сигмоидальной функции по аргументу u имеет вид
Графики производной униполярной сигмоидальной функции представлены ниже.
Далее везде будем использовать значение b = 1.
Процесс обучения нейрона сводится к отысканию значений весов wj, доставляющих минимум целевой функции в виде
Методы обучения искусственных нейронов и сетей на их основе описаны в учебном пособии "Искусственные нейронные сети". В теоретической части данной лабораторной работы используется метод градиента для обучения нейрона в режиме "оффлайн" и правило Видроу-Хоффа для обучения нейрона в режиме "онлайн".
Рассмотрим простейший случай. Пусть необходимо разработать сигмоидальный нейрон для классификации одномерных данных, множество обучающих выборок для которых имеет следующий вид:
k | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
xk | 0.0 | 1.0 | 2.0 | 3.0 | 4.0 | 6.0 | 8.0 | 10.0 | 12.0 | 14.0 |
dk | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 |
Для классификации одномерных данных будем использовать двухвходовой нейрон (с одним входом поляризации x0=1), структурная схема которого представлена ниже.
В ходе обучения, в общем случае, адаптациии подвергаются коэффициенты w0 и w1. Ниже представлен график зависимости целевой функции E(W) от управляемых параметров w0 и w1.
Тот же график при "взгляде сверху" имеет следующий вид.
Для упрощения задачи и достижения наглядности в представлении расчетных данных зафиксируем один из управляемых парметров. Пусть это будет w0.
Тогда в режиме обучения "оффлайн" для w0=-5,0 график зависимости целевой функции E(w1) от w1 выглядит следующим образом.
Для w0=-1,0 зависимость целевой функции от w1 имеет вид.
А для w0=1,0 та же зависимость имеет вид.
Обучение нейрона реализуется методом градиента по следующей формуле
График зависимости производной целевой функции дE/дw1 для w0=-5 имеет следующий вид.
Основными проблемами в реализации метода градиента являются следующие две:
В простейшем варианте метода градиента коэффициент nu выбирается постоянной величиной из диапазона (0, 1], а процесс поиска минимума завершается при выполнении условия |дE(t)/дW| < eps, где eps - константа, определяющая точность отыскания минимума.
Ниже представлена траектория поиска для значений w0=-5, w1(0)=0, nu=0,1, eps=0,01. Количество шагов поиска - 14.
На следующем рисунке дана траектория поиска для значений w0=-5, w1(0)=2,0, nu=0,2, eps=0,001. Количество шагов поиска - 11.
Однако, выбор начального значения адаптируемого веса w1(0)=10,0 на относительно большом расстоянии от точки экстремума резко увеличивает необходимое количество циклов обучения (до 914), что иллюстрируется траекторией поиска, показанной на следующем рисунке.
В этой ситуации появляется соблазн увеличить значение коэффициента обучения nu, что должно ускорить поиск на пологих участках целевой функции. Но, к сожалению, большие значения коэффициента nu влекут за собой проблемы со сходимостью алгоритма обучения в областях с большими значениями градиента целевой функции.
Рисунок ниже показывает фрагмент траектории поиска при следующих условиях: w0=-5, w1(0)=1,2, nu=0,5.
При значении коэффициента обучения nu=0,6 сходимости обучения достичь не удается, что иллюстрирует следующий рисунок.
Приведенные выше примеры показывают, что для эффективного обучения нейрона необходимы адаптивные стратегии подбора коэффициента обучения nu в ходе поиска экстремума.
Хорошие результаты демонстрирует следующая стратегия адаптации коэффициента nu.
Ниже показана траектория поиска минимума целевой функции для упоминавшейся выше задачи с w1(0)=10,0. Для решения задачи потребовалось 30 циклов обучения, при этом величина nu сначала увеличилась от начального значения 0,6 до 76,8, потом упала до 0,000586.
Обучение в данном режиме подразумевает корректировку входных весов нейрона после предъявления каждого обучающего вектора. При этом минимизируемая целевая функция имеет следующий вид:
Рассмотрим задачу классификации двухмерных данных, обучающие векторы для которых представлены в следующей таблице.
k | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
x1k | 0.0 | 0.9 | 0.0 | 0.5 | 0.4 | 1.0 | 1.1 | 0.0 | 0.6 | 0.5 |
x2k | 0.0 | 0.0 | 0.9 | 0.4 | 0.5 | 1.0 | 0.0 | 1.1 | 0.5 | 0.6 |
dk | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 |
Для классификации будем использовать трехвходовой нейрон с одним входом поляризации (x0=1), структурная схема которого представлена ниже.
Для обучения нейрона в режиме "онлайн" воспользуемся простейшим правилом Видроу-Хоффа, согласно которому корректировка входного веса осуществляется по формуле
В качестве условия завершения обучения примем |xkj*(yk(t)-dkj)|<eps для всех k в цикле обучения t.
Анализ обучающих данных показывает "тесное соседство" векторов, принадлежащих двум разным кластерам, это заставляет увеличивать "крутизну" сигмоидальной функции. Поэтому пусть b=10,0.
Решение задачи классификации двухмерных данных трехмерным сигмоидальным нейроном для следующих начальных данных: w0=-0,9, w1=-0,5, w2=0,3, eps=0,1, потребовало 16 циклов обучения и дало следующий результат: w0=-4,192, w1=4.164, w2=4.247.
Полученным значениям соответстует функция классификации нейрона y([x1,x2]T), график которой представлен ниже.
Примечание. Выбранное нами большое значение коэффициента b превратило сигмоидальный нейрон фактически в персептрон.
1. Лабораторная работа выполняется в среде ОС Linux с использованием компилятора gcc/g++ языка программирования C/C++. Для создания графических иллюстраций рекомендуется использовать утилиту gnuplot.
2. Разработать, используя язык C/C++, программу, моделирующую поведение искусственного трехвходового нейрона указанного преподавателем типа и обеспечивающую его обучение для решения задачи классификации. Ниже представлена таблица вариантов заданий.
Номер варианта | Тип нейрона |
---|---|
1 | Персептрон |
2 | Сигмоидальный нейрон |
3 | Радиальный нейрон |
4 | Инстар Гроссберга |
5 | Нейроны WTA |
3. Отладить модель нейрона и процедуру его обучения на произвольных двухмерных данных. Рекомендуется, в тех ситуациях, когда это возможно, использовать режим обучения "оффлайн".
4. Обучить разработанный нейрон на предложенном преподавателем варианте двухмерных данных и проверить его работу на ряде контрольных точек. Ниже даны варианты различных обучающих выборок (масштабирующие значения x1,m и x2,m необходимо запросить у преподавателя).
5. Выполнить все модификации в программе и исходных данных, указанные преподавателем.
6. Оформить отчет по лабораторной работе с использованием языка разметки HTML (все иллюстрации должны быть представлены в формате png).
1. Описание реализованной модели нейрона и процедуры его обучения.
2. Рисунок, иллюстрирующий распределение в пространстве [x1,x2]T обучающих данных.
3. Численные значения, характеризующие начальное состояние, ход обучения и его результат (например, начальные и итоговые значения входных весов нейрона, величина коэффициента обучения, количество циклов обучения и т.п.).
4. Графическое представление результатов обучения нейрона (например, график зависимости выходного сигнала нейрона от входных данных [x1,x2]T).
5. Исходный текст программы.