Создание простой нейросетиРефераты >> Кибернетика >> Создание простой нейросети
Элементарная теория процесса обучения нейросетей
Аннотация
Задача представимости функции многих переменных в виде суперпозиции нескольких функций меньшего числа переменных поставленная еще Гильбертом получила новую жизнь благодаря теореме Хехт-Нильсена “об аппроксимации функции многих переменных двухслойной однородной нейросетью”. Нейросети на сегодняшний день являются важным инструментом при решении многих прикладных задач, а потому представляет большой интерес процесс обучения сетей. В работе сделана попытка анализировать этот процесс и представить его максимально просто и наглядно.
Искусственные (формализованные) нейросети построены по схеме близкой к естественной нервной системе человека, т.е. достаточно простые структурные единицы, объединяясь в определенной последовательности, образуют сложную систему, способную решать огромные классы задач.
Формализованный нейрон – это математическая модель естественного нейрона человека. Он включает в себя невырожденные линейные преобразования, а также некоторую нелинейную функцию, называемую функцией активации, как правило, сигмоидального типа:
s =1/(1+ ехр(-a)) , (1)
где s- непрерывная, всюду дифференцируемая возрастающая ограниченная функция. Графически формализованный нейрон (далее просто нейрон) показан на рис.1:
Рис.1 Схема формализованного нейрона. Х1, Х2,…, Хn- координаты входного
вектора – исходная информация. Числа w1,w2,…,wn – так называемые веса синапсов (входов нейрона) или сила связи данного входа с нейроном, b – дополнительный вход, называемый сдвигом, его значения, как правило, +1, 0. Знак Sозначает операцию линейных преобразований. Каждый вход умножается на соответствующий ему вес и все суммируется, далее полученная величина рассматривается как аргумент функции (1), значение значение которой является выходом нейрона.
Искусственная нейросеть представляет из себя группу связанных определенным образом нейронов. Простейший случай – это однослойная нейросеть. Аналитически ее можно записать следующим образом:
У= s(ХW), (2)
где Х,Y – вектор-строки.
Активационная функция многослойной сети должна быть нелинейной. Если эта функция будет линейной, легко показать, что любую многослойную сеть можно свести к однослойной.
В однородной нейросети все нейроны по отдельности выполняют одинаковые функции. Основным существенным отличием их друг от друга являются веса синапсов, которые и играют главную роль в работе нейросетей. От правильного подбора весовых коэффициентов зависит, корректность работы сети. Процесс их подбора и называется обучением.
Процесс обучения можно сравнить с настройкой.
Известно 2 класса обучающих методов: детерминистские и стохастические. Детерминистский метод состоит в том, что шаг за шагом осуществляется процедура коррекции весов сети, основанная на использовании их текущих значений, а также величин входов и выходов (фактических и ожидаемых). Стохастические методы по определению предполагают выполнение псевдослучайных изменений, которые ведут к улучшению результата.
Наиболее распространенным алгоритмом обучения нейросетей является алгоритм обратного распространения ошибки, основанный на методе градиентного спуска. Обучение при этом проходит в два этапа. Вначале сеть работает в обычном режиме, т.е. прямым потоком: на вход подаются начальные данные, и вычисляется вектор выхода. Затем находят функцию ошибки:
, (3)
где yj,p – реальная, а tj,p – ожидаемая j-тая координата выхода, при подаче на вход р-го образа. А уменьшают ее, напрявляя данные по сети в обратном порядке, работа проходит через определенные этапы следующим образом:
1. Подача на вход сети один из возможных образов и в режиме обычного функционирования нейросети, когда сигнал распространяется от входа к выходу, рассчет значения последнего.
2. Рассчет ошибок dN и DwN слоя N.
3. Рассчет ошибок dn и Dwn для всех остальных слоев, n=N-1,…,1.
4. Корректировка всех весов в сети.
5. Проверка ошибки сети и переход на шаг 1 или в конец.
Сети на шаге 1 попеременно в случайном порядке предъявляются все образы из обучающего множества, чтобы сеть не “забывала” одни по мере “запоминания” других.
Этот алгоритм, после предварительной подготовки, может быть представлен более наглядно и интерпретирован геометрически.
Пусть Еn – n-мерное евклидово пространство. Множества Х, Y, Т – области пространства Еn – множества векторов. Причем, такие что " ÎХ $! соответствующий ему вектор ÎT. Y такое что
= G, (4)
где Gпринадлежит пространству непрерывных операторов. Пусть W - пространство матриц n´n dim=2, где wÎW рассматривается как совокупность вектор-строк, составляющих матрицу w:
(w11 w12 …w1n)
(w21 w22 …w2n) (5)
………
(wn1 wn2 …wnn)
Это делается для геометрической представимости.
Определим вид оператора G½ G: X®Y. Этот оператор есть ни что иное как суперпозиция двух операторов G = S°s. Рассмотрим подробнее каждый из составляющих операторов:
1. Первый оператор:
S = wх (6)
Оператор линейных преобразований, где wÎW, x – вектор-столбец из X,
S – результат умножения – вектор-строка.
В развернутом виде матричное умножение выглядит следующим образом:
(w11 w12 … w1n) х1
(w21 w22 …w2n) ´ х2 =||(w11x1+…+w1nxn)…(wn1x1+…+wnnxn)|| =S (7)
……… :
(wn1 wn2 …wnn) хn
Т.е.
, i=1,…,n. (8)
2. Второй оператор - нелинейная функция.
Функция s(см. формулу (1)) называется также сжимающей.
Для последующих операций нормализуем вектора множества Х:
х¢ = х/|х|, где |х| =, х¢ - нормализованный вектор. Аналогичную операцию произведем над множеством Т. Поскольку wÎW совокупность вектор-строк, нормализуем и эти вектора:
wi : wi = (wi1 wi2 … win ), wi¢ = wi /|wi|.