Учебник ИИ. _Учебник ИНС_2014_Э4743. Учебник рекомендовано Ученым советом Вятгу в качестве учебного пособия Киров 2014
Скачать 3.7 Mb.
|
3.3. Нормализация входной и выходной информации Входная и выходная информация для нейронной сети формируется из векторов IN (входные значения обучающей выборки), OUT (выходные значения обучающей выборки). Нормализация значений необходима в виду того, что на веса синапсов сети обычно наложены требования принадлежности некоторому диапазону значений. Это приводит к тому, что обычно нельзя подавать сети входные сигналы в их истинном диапазоне величин и получать от сети выходные сигналы в требуемом диапазоне. Кроме того, нормирование исключает доминирование одних входных сигналов перед другими [6,9,20-22,25-27,29]. Поэтому перед подачей входных сигналов их необходимо нормировать в одном из диапазонов: от минус 1 до 1(формула 3.17); от минус 0,5 до 0,5(формула 3.18); от 0 до 1(формула 3.19). Наиболее простое нормирование сигналов можно выполнить следующим образом. Каждая компонента входного вектора данных x i заменяется величиной, вычисляемой по формулам }) min{ } (max{ 5 0 }) min{ } (max{ 5 0 0 i i i i i i x x x x x x , (3.17) 59 }) min{ } (max{ }) min{ } (max{ 5 0 0 i i i i i i x x x x x x , (3.18) где х i0 – нормализованное значение величины; х i – нормализуемая величина; max x i и min x i – соответственно максимальное и минимальное значения для данной компоненты, вычисленные по всей обучающей выборке. Можно нормировать и по-другому, например, пересчитывая выборку так, чтобы разброс данным был единичным, по формуле } min{ } max{ } min{ 0 i i i i i x x x x x (3.19) Здесь имеется одна сложность. Любое изменение обучающей выборки должно соответственно менять и правило нормирования данных. Выбор способа нормализации и значений зависит от конкретной обучающей выборки и выбирается экспериментально. Для денормализации данных используются обратные преобразования, выполняемые по формулам 3.20, 3.21, 3.22: Диапазон от 0 до 1. }) min{ } (max{ } min{ 0 i i i i i x x x x x ; (3.20) Диапазон от минус 1 до 1. }) min{ } (max{ 5 0 }) min{ } (max{ 5 0 0 i i i i i i x x x x x x , (3.21) Диапазон от минус 0,5 до 0,5. }) min{ } (max{ }) min{ } (max{ 5 0 0 i i i i i i x x x x x x . (3.22) 60 Обратное распространение – это самый популярный алгоритм для обучения НС с помощью изменения весов связей. Ошибка распространяется от выходного слоя к входному, т. е. в направлении противоположном направлению прохождения сигнала при нормальном функционировании сети. Выполнение алгоритма начинается с генерации произвольных весов для многослойной сети. Затем процесс, описанный ниже, повторяется до тех пор, пока средняя ошибка на входе не будет признана достаточно малой: 1. Берётся пример входного сигнала с соответствующим правильным значением выхода, т. е. входной и выходной векторы. 2. Рассчитывается прямое распространение сигнала через сеть (определяются весовые суммы Si и активаторы ui для каждого нейрона). 3. Начиная с выходов, выполняется обратное движение через ячейки выходного и промежуточного слоя, при этом программа рассчитывает значения ошибок по формуле (3.23) и (3.24): для нейрона выходного слоя 0 = (Ci-u5)*u5*(1-u5) (3.23) для всех нейронов скрытого слоя i = ( mm>i*w mj * 0 )*u i *(1- u i ) (3.24) Здесь m обозначает все нейроны, связанные со скрытым узлом, w – заданный вектор веса, u – выход активационной функции. 4. Веса в сети обновляются следующим образом по формуле (3.25) и (3.26): W*ij= wij - p* 0 *ui, (3.25) для весов синапсов между скрытым и выходным слоем. W*ij= wij - p* i*ui, (3.26) для весов синапсов между скрытым и входным слоем. 61 Здесь параметр p характеризует коэффициент скорости обучения (или размер шага). Это небольшое значение ограничивает изменение, которое может произойти на каждом шаге. Параметр p можно определить таким образом, чтобы он характеризовал скорость продвижения алгоритма обратного распространения к решению. Лучше начать обучение с небольшого значения (p=0,1) и затем постепенно его повышать. Продвижение вперёд по сети соответствует активации нейронов, а продвижение назад – коррекции весов синапсов и весов смещений нейронов. Затем веса обновляются таким образом, чтобы минимизировать ошибку для данного входного вектора. Если коэффициент обучения слишком велик, сеть может никогда не сойтись, т. е. не будут найдены нужные веса синапсов при минимальной среднеквадратичной ошибке обучения. При малом значении коэффициента обучения увеличивается время обучения сети. Пример расчёта. Проход вперёд. Сначала выполняется расчёт движения входного сигнала по сети для примера, приведенного на рис.3.1. U3=f(w3,1*u1+w3,2*u2+wb*смещение) U3=f(0*1+0,5*1+ 1*1=f(1,5) f(s)=1/(1+e –α*s ) U3=0,81757 (при α=1) 62 U3 U4 U5 Y=1 Входы U1=0 U2=1 Входной слой Скрытый слой Выходной слой W1,3=1 W2,4=2 W2,3=0,5 W1,4=-1 W3,5=1,5 W4,5=-1 W3,b=1 W4,b=1 W5,b=1 1 1 1 Желаемый сигнал ∑ f ∑ f ∑ f Рис.3.1. Пример архитектуры нейронной сети Пример расчёта. Проход вперёд. Сначала выполняется расчёт движения входного сигнала по сети (рис.3.1). U3=f(w3,1*u1+w3,2*u2+wb*смещение) U3=f(0*1+0,5*1+ 1*1=f(1,5) f(s)=1/(1+e –α*s ) U3=0,81757 (при α=1) U4=f(w4,1*u1+w4,2*u2+wb*смещение) U4=f (-1*0+2*1+ 1*1=f (3) f(s)=1/(1+e –α*s ) U4=0, 952574 (при α=1) 63 Теперь сигнал дошёл до скрытого слоя. Конечный шаг – переместить сигнал в выходной слой и рассчитать значение на выходе сети: U5=f(w5,3*u3+w5,4*u4+wb*смещение) U5=f (0, 81757*1, 5+0, 952574*(-1) + 1*1=f (1, 2195) f(s)=1/(1+e –α*s ) U5=0, 78139 (при α=1) Правильный реакцией НС на входной сигнал является значение 1,0; значение рассчитанное сетью, составляет 0, 78139. Для коррекции весовых коэффициентов обычно используется среднеквадратичная ошибка, вычисляемая по формуле среднеквадратичной ошибки Е=0,5* (у эталонное – у расчётное ) 2 . Здесь у эталонное берётся из обучающей выборки, а у расчётное вычисляется после подачи на входы нейронной сети входного вектора. Е=0,5*(1.0 – 0,78139) 2 =0,023895. Обратный проход. По формуле (1) рассчитаем ошибку в выходном узле: 0 = (Ci-u5) *u5*(1-u5) =(1,0-0,78139) * 0,78139*(1- 0,78139) =0,0373 Теперь следует рассчитать ошибку для двух скрытых нейронов. u4 = ( 0 * w5,4)*u4 *(1- u4) u4 =(0,0373* (-1)* 0,952574*(1 - 0,952574)= - 0,0016851 u3 = ( 0 * w5,3)*u3 *(1- u3) u3 = (0,0373* 1,5* 0,81757 * (1 - 0,81757)= 0, 0083449 Изменение весов соединений. 1. Сначала обновляются веса между выходным и скрытым слоем. w*ij= wij + p* 0 *ui w5,4 = w 5,4 + (p*0,0373*u4) 64 w5, 4 = -1, 0 + (0, 5*0, 0373*0, 952574) = -0, 9882 w5, 3 = w 5, 3 + (p*0, 0373*u3) w5, 3 = 1, 5 + (0, 5*0, 0373*0, 81757) = 1, 51525 2. Теперь нужно обновить смещение для выходного нейрона w5,b = w 5,b + (p*0,0373*смещение5) w5, b = 1 + (0, 5*0, 0373*1) =1, 01865 Для w5,4 вес изменён с -1 до -0,9882, а для w5,3 увеличен с 1,5 до 1,51525. Смещение обновлено для повышения возбуждения нейрона. 3. Теперь обновляются веса между входным и скрытым слоем: w4,2 = w 4,2 + (p*- 0,0016851*u2) w4,2 = 2 + (0,5*- 0,0016851*1)=1,999916 w4,1 = w4,1 + (0,5*- 0,0016851*u1) w4,1 = -1,0 + (0,5*- 0,0016851*0)= -1,0 w3,2 = w 3,2 + (p*0, 0083449*u2) w3, 2 = 0, 5 + (0, 5*0, 0083449*1) = 0, 50417 w3, 1 = w3, 1 + (0, 5*0, 0083449*u1) w3, 1 = 1, 0 + (0, 5*0, 0083449*0) = 1, 0 4. Теперь обновляются смещения для скрытых нейронов: W4,b = w 4,b + (p*- 0,0016851*смещение4) W4,b = 1 + (0,5*- 0,0016851*1)=0,99915 65 W3,b = w 3,b + (p*0, 0083449 *смещение3) W3, b = 1 + (0, 5*0, 0083449*1) =1, 00417 5. Обновление весов для скрытого слоя завершается. Выполним ещё один проход вперёд. U3=f(w3,1*u1+w3,2*u2+wb*смещение) U3=f(0*1+0,50417*1+ 1,00417*1=f(1,50834) f(s)=1/(1+e –α*s ) U3=0,8188 (при α=1) U4=f(w4,1*u1+w4,2*u2+wb*смещение) U4=f(-1*0+1,99916*1+ 1,99916*1=f(2,99831) U4=0,952497 U5=f(w5,3*u3+w5,4*u4+wb*смещение) U5=f(1,51525*0,81888+( -0,9822)*0,952497 + 1,01865*1=f(1,32379) f(s)=1/(1+e –α*s ) U5=0, 7898 (при α=1) Е=0,5*(1,0 – 0,7898) 2 = 0,022 На первой итерации ошибка была равна 0,023895, а на второй сократилась до 0,022. Следовательно, алгоритм обратного распространения ошибки обеспечивает уменьшение среднеквадратичной ошибки обучения НС. 3.5. Недостатки алгоритма обратного распространения ошибки Рассматриваемая НС имеет несколько "узких мест" [1-6]. Во-первых, в процессе обучения может возникнуть ситуация, когда большие положительные или отрицательные значения весовых 66 коэффициентов сместят рабочую точку на сигмоидах многих нейронов в область насыщения. Малые величины производной от логистической функции приведут к остановке обучения, что парализует НС. Во-вторых, применение метода градиентного спуска не гарантирует, что будет найден глобальный, а не локальный минимум целевой функции. Эта проблема связана еще с одной, а именно – с выбором величины скорости обучения. Доказательство сходимости обучения в процессе обратного распространения основано на производных, то есть приращения весов и, следовательно, скорость обучения должны быть бесконечно малыми, однако в этом случае обучение будет происходить неприемлемо медленно. С другой стороны, слишком большие коррекции весов могут привести к постоянной неустойчивости процесса обучения. Поэтому в качестве p обычно выбирается число меньше 1, но не очень маленькое, например, 0.1, и оно, вообще говоря, может постепенно уменьшаться в процессе обучения. Кроме того, для исключения случайных попаданий в локальные минимумы иногда, после того как значения весовых коэффициентов стабилизируются, p кратковременно сильно увеличивают, чтобы начать градиентный спуск из новой точки. Если повторение этой процедуры несколько раз приведет алгоритм в одно и то же состояние НС, можно более или менее уверенно сказать, что найден глобальный максимум, а не какой-то другой. Существует и иной метод исключения локальных минимумов, а заодно и паралича НС, заключающийся в применении стохастических НС, но о них лучше поговорить отдельно. 3.6. Параметры, влияющие на обучение многослойной нейронной сети Исследование влияния параметровна обучение многослойной нейронной сети может быть проведено на учебной инструментальной 67 системе, разработанной на кафедре ЭВМ [7]. Главное меню программы приведено на рис.3.2. Для выявления параметров, влияющих на обучение многослойной нейронной сети, рассматривается задача аппроксимации функции F (x1, x2, x3) =x1*x1-x2/x3. Сформировано 807 примеров обучающей выборки, отвечающих требованиям полноты, равномерности и непротиворечивости. Рис.3.2. Главное меню программы Нормализация очень сильно влияет на эффективность алгоритма ОРО. Если данные подаются на вход сети в ненормализованном виде, то среднеквадратичная ошибка получается очень большой. Для данной выборки большой ошибка получается большой при нормализации на интервалах[-0,5;0,5], [-1;1]. Намного меньшей ошибка получается при нормализации [0;1]. Вторым исследуемым параметром является порядок выбора примеров из обучающей выборки (последовательный или случайный). Установлено, что при случайном выборе и при нормализации [0;1] 68 среднеквадратичная ошибка меньше. Случайный метод выбора примеров из выборки не вызывает привыкания НС к выбираемым примерам Далее было выявлено, что сигмоидальная функция с большим коэффициентом крутизны, обеспечивает наименьшую среднеквадратичную ошибку. Исследования демонстрировали следующую закономерность: чем больше величина смещения, тем среднеквадратичная ошибка меньше. В результате было выбрано смещение близкое к единице. Скорость обучения сети влияет на скорость обучения и сходимость алгоритма обучения. По результатам экспериментов выбран параметр скорости обучения, равный единице, обеспечивающий меньшую среднеквадратичную ошибку и, естественно, меньшее время обучения сети. Архитектура нейронной сети является одним из важнейших характеристик. Были исследованы НС с различным числом слоёв и нейронов в слое и выбрана структура 3-5-1(рис.3.3), предусматривающая 3 нейрона во входном слое, 5 нейронов – в скрытом слое и один нейрон – в выходном слое. Одним из способов выхода из локального экстремума является применение параметра момента, значение которого выбрано 0,5. Входной слой Скрытый слой Выходной слой Х1 Х2 Х3 Y Рис.3.3. Структура нейронной сети (3-5-1) 69 3.7. Выполнение режима трассировки нейронной сети Условия останова обучения нейронной сети: Циклов обучения: 1000 Инициализация весов синапсов случайным образом... Нейрон[1][1] W [1, 1, 1] = 0,392 W [1, 1, 2] = 0,696 W [1, 1, 3] = -0,746 Вес смещения: W [1, 1, 4] = 1 Нейрон[1][2] W [1, 2, 1] = 0,128 W [1, 2, 2] = -0,528 W [1, 2, 3] = 0,178 Вес смещения: W [1, 2, 4] = 1 Нейрон[1][3] W [1, 3, 1] = 0,356 W [1, 3, 2] = 0,332 W [1, 3, 3] = -0,208 Вес смещения: W [1, 3, 4] = 1 Нейрон[1][4] W [1, 4, 1] = -0,962 70 W [1, 4, 2] = 0,102 W [1, 4, 3] = 0,522 Вес смещения: W [1, 4, 4] = 1 Нейрон[1][5] W [1, 5, 1] = 0,756 W [1, 5, 2] = 0,922 W [1, 5, 3] = 0,184 Вес смещения: W [1, 5, 4] = 1 Нейрон[2][1] W [2, 1, 1] = 0,238 W [2, 1, 2] = -0,464 W [2, 1, 3] = -0,34 W [2, 1, 4] = -0,406 W [2, 1, 5] = -0,598 Вес смещения: W [2, 1, 6] = 1 Выбирается допустимый образ из обучающего множества. 0,246 0,254 0,260572 0,255454 Подаем сигнал на вход нейронной сети... Нейрон[0][1] Аксон = 0,246 71 Нейрон[0][2] Аксон = 0,254 Нейрон[0][3] Аксон = 0,260572 Прямая волна алгоритма. Выходы нейронов скрытого слоя. Нейрон[1][1] Взвешенная сумма = 1,078829288 Аксон = 0,6316762385 Нейрон[1][2] Взвешенная сумма = 0,943757816 Аксон = 0,6158283722 Нейрон[1][3] Взвешенная сумма = 1,117705024 Аксон = 0,6361869922 Нейрон[1][4] Взвешенная сумма = 0,925274584 Аксон = 0,6136396283 Нейрон[1][5] Взвешенная сумма = 1,468109248 Аксон = 0,6756944005 Нейрон[2][1] Взвешенная сумма = -0,004911937868 Аксон = 0,4993860081 Обратная волна алгоритма. Подсчёт локальной ошибки нейронов. 72 Подсчет локальной ошибки нейронов на выходе нейронной сети... Желаемый сигнал на выходе: 0,255454 Прогнозируемый сигнал на выходе нейронной сети: 0,4993860081 Нейрон[2][1] Локальная ошибка = 0,03049145503 Подсчет локальной ошибки нейронов в скрытом слое нейронной сети... Нейрон[1][1] Локальная ошибка = 0,0008442078539 Нейрон[1][2] Локальная ошибка = -0,001673597874 Нейрон[1][3] Локальная ошибка = -0,001199748121 Нейрон[1][4] Локальная ошибка = -0,001467506929 Нейрон[1][5] Локальная ошибка = -0,001997809641 Коррекция весов синапсов... W [1, 1, 1] = 0,3923182664 W [1, 1, 2] = 0,6963148895 W [1, 1, 3] = -0,7456878845 Вес смещения: W [1, 1, 4] = 1 W [1, 2, 1] = 0,1273690536 W [1, 2, 2] = -0,528624252 W [1, 2, 3] = 0,1773812474 Вес смещения: 73 W [1, 2, 4] = 1 W [1, 3, 1] = 0,355547695 W [1, 3, 2] = 0,331552494 W [1, 3, 3] = -0,2084435637 Вес смещения: W [1, 3, 4] = 1 W [1, 4, 1] = -0,9625532501 W [1, 4, 2] = 0,1014526199 W [1, 4, 3] = 0,5214574421 Вес смещения: W [1, 4, 4] = 1 W [1, 5, 1] = 0,7552468258 W [1, 5, 2] = 0,921254817 W [1, 5, 3] = 0,1832613818 Вес смещения: W [1, 5, 4] = 1 W [2, 1, 1] = 0,2436153637 W [2, 1, 2] = -0,458143024 W [2, 1, 3] = -0,334453406 W [2, 1, 4] = -0,4001096551 W [2, 1, 5] = -0,5930557252 Вес смещения: W [2, 1, 6] = 1 Выполняется вычисление синапсов НС (табл.3.1) аналогично алгоритму, проведённому в п 3.4. В качестве активационной функции использована сигмоидальная функция с коэффициентом крутизны α=0,5 74 i s i e 1 1 ) s ( F , где α=0,5 – оптимальный для конкретной задачи коэффициент крутизны функции; s i – взвешенная сумма входов i-го нейрона. Вес смещения и значение самого смещения взяты равные единице. Среднеквадратичная ошибка выходного слоя рассчитывается по формуле i N 1 i 2 i i 0 ) d y ( 2 1 , где y i – рассчитанное значение выхода i-го нейрона в выходном слое; d i – требуемое значение выхода i-го нейрона в выходном слое; N i – количество нейронов в выходном слое. В нашем случае. В качестве активационной функции использована сигмоидальная функция с коэффициентом крутизны α=0,5. Для расчёта обратной волны алгоритма (табл.3.2) необходимо вычислить производную активационной функции, формула которой приведена ниже. 2 s s i ) e 1 ( e ) s ( F i i Расчёт весов и смещений выполняется по формулам j i i ij ij x s F p t w t w ) ( ) ( ) 1 ( , ) ( ) ( ) 1 ( i i j j s F p t T t T Параметр скорости обучения принят равный 0,5, вес смещения равный единице. 75 Таблица 3.1. Расчет параметров для «прямой волны» алгоритма Н омер слоя Н омер ней ро на Н омер входа Вх од но й си гн ал, xj Весо во й ко эф фи ц иен т w ij wij*xj Взв ешен ная су мма , S i Выхо д ней ро на , y i = F(S i) Вх од но й слой 1 1 0,246 - - - 0,246 2 1 0,254 - - - 0,254 3 1 0,26057 - - - 0,26057 2 Скр ы ты й сл ой 1 1 0,246 0,392 0,0964 1,078829 2 0,63167 6 2 0,254 0,696 0,1767 3 0,26057 -0,746 -0,1943 2 1 0,246 0,128 0,0314 0,943757 8 0,61582 8 2 0,254 -0,528 -0,1341 3 0,260572 0,178 0,0463 3 1 0,246 0,356 0,0875 1,117705 0,63618 6 2 0,254 0,332 0,0843 3 0,260572 -0,208 -0,0541 4 1 0,246 -0,962 -0,2366 0,925274 0,61363 9 2 0,254 0,102 0,0259 3 0,260572 0,522 0,1360 5 1 0,246 0,756 0,1859 1,468109 0,67569 4 2 0,254 0,922 0,2341 3 0,260572 0,184 0,0479 Выхо дн ой слой 1 1 0,631676 0,238 0,1503 - 0,004911 0,49938 6 2 0,615828 -0,464 -0,2857 3 0,636186 -0,34 -0,2163 4 0,613639 -0,406 -0,2491 4 0,675694 -0,598 -0,4040 Все расчеты совпали с результатами работы программы в режиме трассировки с точностью до 10 -3 –10 -6 , лишь при расчете весов смещений точность снизилась до 10 -3 из-за погрешности округления ручных вычислений. 76 Таблица 3.2. Расчет параметров для «обратной волны» алгоритма Эталонный результат, на выходе 0,25545 Среднеквадратичная ошибка: 0,02975 Сло й Номе р нейро на Этало н di Прогн оз, yi δm (k+1) εi (k) Si F'(Si) Вых од 1 0,2554 0,499 - 0,316503 2,186540 0,094000 1 1 - - 0,02975 0,007080 1,078829 0,116330 2 - - 0,02975 -0,01380 0,943757 0,118291 3 - - 0,02975 -0,01011 1,117705 0,115726 4 - - 0,02975 -0,01207 0,925274 0,118543 5 - - 0,0297 -0,01779 1,468109 0,109565 Из расчёта параметров весов синапсов на обратной «волне» следует, что ошибка (по модулю) уменьшается в направлении от выходного слоя к первому скрытому. После расчёта ошибок было выполнено изменение весовых коэффициентов и весов смещения. 77 Таблица 3.3. Расчет весов синапсов и смещений обратной «волны» Н омер н ей ро на Н омер в хо да Входно й сигнал xj Весово й коэфф ициент wij(t) Si F'(Si) δi Вес wij(t+ 1) Веc смеще ния Тj(t+1) 1 1 0,246 0,392 1,078 0,11633 0,00082 0,3920 0,9999 2 0,254 0,696 0,6959 3 0,2605 -0,746 -0,746 2 1 0,246 0,128 0,943 0,11829 -0,00163 0,1280 1,0000 2 0,254 -0,528 -0,527 3 0,2605 0,178 0,1780 3 1 0,246 0,356 1,117 0,11572 -0,00117 0,3560 1,0000 2 0,254 0,332 0,3320 3 0,2605 -0,208 -0,207 4 1 0,246 -0,962 0,925 2 0,11854 3 -0,00143 -0,961 1,0000 2 0,254 0,102 0,1020 3 0,2605 0,522 0,5220 5 1 0,246 0,756 1,468 0,10956 -0,00194 0,7560 1,0001 2 0,254 0,922 0,9220 3 0,2605 0,184 0,1840 1 1 0,6316 0,238 2,186 0,09400 0,02975 0,2371 0,9986 2 0,6158 -0,464 -0,464 3 0,6361 -0,34 -0,340 4 0,6136 -0,406 -0,406 4 0,6756 -0,598 -0,598 |