Искусственная нейронная сеть (ИНС) имитирует работу естественной нейронной сети - человеческого мозга. ИНС - это программа, которая повторяет модель человеческих нейронных связей.
Однослойная ИНС(выходной слой - 1 нейрон) [0][1]
[0],[1], ... - номер слоя
- входной сигнал -
Эти входные сигналы, в совокупности обозначаемые вектором X, соответствуют сигналам,
приходящим в синапсы биологического нейрона.
(нижний индекс - номер сигнала в слое)
Входной слой ([0]) содержит нейроны, которые принимают входные данные.
Входной слой является начальным слоем сети и не выполняет никаких вычислений, а просто передает
данные на следующий слой.
Размерность входного слоя увеличивают на единицу за счет нейрона смещения
().
Смещение - особый нейрон, не имеющий входного синапса (связи).
Его входное значение, как правило, равно либо +1, либо -1.
Смещение изменяется весами, поэтому выбор +/-1 не накладывает жестких ограничений.
вес соединения входного нейрона данного слоя (входящего сигнала, если речь идет о входящем слое)
с выходным нейроном следующего слоя - степень взаимосвязи двух нейронов -
эквивалент синаптической связи.
Эти коэффициенты могут быть как положительными (возбуждающими), так и отрицательными
(тормозящими). Вес (представленный в виде действительного числа) влияет на силу
передаваемого сигнала.
Нулевой вес означает, что изменения входа не повлияют на выход.
Отрицательный вес показывает, что увеличение входа уменьшит выход, положительный - увеличит.
Вес определяет влияние ввода на вывод.
- вес соединения между входным и выходным узлом
(нижний индекс: первая цифра - номер нейрона в выходном слое, вторая цифра - номер нейрона во входном слое; верхний индекс:номер слоя)
- функция активации нейрона - это функция, которая вычисляет
выходной сигнал нейрона.
Активационная функция применяется к сумме взвешенных входов нейрона.
- искусственный нейрон - это такая функция, которая преобразует несколько
входных параметров в один выходной
(нижний индекс - номер нейрона в слое, верхний индекс - номер слоя)
- выходной сигнал нейрона.
Выходной (последний) слой содержит нейроны, которые выдают конечный результат.
Для однослойных сетей:
При решении задач классификации выходной слой - слой, каждый нейрон которого отвечает за конкретный
класс, т.е. принимает решение об отнесении к конкретному классу.
Слой содержит столько нейронов, сколько классов представлено в обучающей выборке.
[Если класса два, то можно использовать два выходных нейрона или ограничиться одним].
Входной вектор:
, n - количество сигналов (признаков) - пространство признаков.
Входной вектор может быть расширен дополнительной единицей -
(смещение).
И тогда результатом будет (n+1) размерный вектор.
Вектор весов:
, где
- вес смещения.
Нейрон представляет из себя элемент, который вычисляет выходной сигнал из совокупности входных
сигналов.
Последовательность действий нейрона:
- прием сигналов от предыдущих элементов сети.
У нейрона есть несколько входов, у каждого из которого есть вес, на который умножается сигнал,
проходящий по связи.
- комбинирование входных сигналов.
Так как к каждому нейрону могут приходить несколько входных сигналов, то при моделировании
нейронной сети необходимо задать определенное правило комбинирования всех этих сигналов.
Как правило, используется правило суммирования взвешенных сигналов.
Суммируя все взвешенные входные сигналы, мы получаем комбинированный ввод элемента сети -
взвешенную сумму (S).
- вычисление выходного сигнала
Просто так передавать взвешенную сумму на выход достаточно бессмысленно — нейрон должен ее
как-то обработать и сформировать адекватный выходной сигнал.
Для каждого элемента сети имеется определенное правило, в соответствии с которым из
значения комбинированного ввода элемента вычисляется его выходное значение.
Это правило называется функцией активации.
Функция активации определяет выходное значение нейрона в зависимости от результата взвешенной
суммы входов и порогового значения.
Для выходных слоев задача функции активации – помочь принять локальное решение в каждом из нейронов -
Выходной слой — это слой, каждый нейрон которого отвечает за конкретный класс.
Слой содержит столько нейронов, сколько классов представлено в обучающей выборке.
Если класса два, то можно использовать два выходных нейрона или ограничиться всего одним.
Задача выходного нейрона -
определить принадлежность к классу (задачи бинарной классификации - "да"/"нет" - выход: 1/0) /
определить вероятность принадлежности к классу (выход: 0.3, 0.5 и т.д).
Функция активации нейронов выходного слоя помогает нормализовать вывод любого входа в диапазоне от 0 до 1.
Например,
Пороговая функция
Пороговая функция преобразовывает значения при их накоплении выше установленного порога.
Применяется для отображения состояния нейрона: его возбудимости или спокойствия.
Может отображать только два значения: 0 и 1.
Сигмоидальная функция
Сигмоидальные функции применяются для сглаживания значений.
Сигмоида позволяет усиливать слабые сигналы и не насыщаться от сильных сигналов.
,
где - характеризует степень крутизны функции;
При больших значениях форма сигмоиды приближается к обычной
пороговой функции, а при значениях параметра "кривизны" близких к 1,
она напоминает прямую линию. Такая сигмоидная функция (логистическая функция)
() наиболее распространена.
В отличие от пороговой, сигмоидная активационная функция непрерывна, что позволяет точнее
оценить ошибку на выходе сети.
Также сигмоида непрерывно дифференцируемая, что позволяет применять градиентные
методы оптимизации при обучении ИНС.
Для скрытых (промежуточных) слоев задача функции активации - решить, следует ли активировать нейрон
или нет (0), какое влияние будет оказывать нейрон: тормозящее (-), возбуждающее (+).
Функция активации скрытых слоев помогает нормализовать вывод любого входа, как правило,
в диапазоне от 1 до -1 или от 0 до 1.
Например,
Гиперболический тангенс
Эта функция на выходе дает значение в интервале от -1 до 1.
В отличие от сигмоиды выход данной функции центрирован относительно нуля.
,
где - характеризует степень крутизны функции;
Выпрямленные линейные единицы или ReLU
Функция ReLu отсекает только отрицательные значения.
Задача функции активации - помочь принять локальное решение в каждом из нейронов.
Сеть является множеством соединенных между собой нейронов. Возможны различные способы соединения и, следовательно, различные архитектуры сети. Но суть работы нейронной сети остается всегда одной и той же. По совокупности поступающих на вход сети сигналов на выходе формируется выходной сигнал (или несколько выходных сигналов). Рассмотрим полносвязные сети прямого распространения. "Полносвязная" — означает, что каждый нейрон предыдущего слоя соединён с каждым нейроном следующего слоя. "Прямого распространения" — означает, что сигнал проходит через нейронную сеть в одном направлении от входного к выходному слою.
Однослойная ИНС(выходной слой - 2 нейрона) [0][1]
Обучение нейронной сети
Задача ИНС - по входным признакам (входному сигналу) принять решение.
При рассмотрении ИНС как классификатора принять решение означает решить
задачу классификации правильно. Для того, чтобы нейросеть была способна выполнить поставленную
задачу, ее необходимо обучить.
Этого можно добиться путем постоянного добавления примеров -
объектов, каждый из которых описывается набором своих характеристик, называемых признаками.
Такой процесс называется обучением.
Машина учится, пытаясь на разных примерах найти признаки, по которым одно можно отличить от другого.
Необходим обучающий набор данных (обучающая выборка) для того, чтобы ИНС могла выявить
определенные закономерности в данных.
Обучающая выборка - набор объектов, каждый из которых характеризуется набором признаков.
Мы ждем от сети способности обобщать какие-то признаки и решать задачу на различных входных данных.
Именно с этой целью и создаются обучающие выборки.
Обучать нейронные сети выполнению задач можно по-разному: процесс развития навыков возможен
с учителем, или без него, а также с подкреплением.
Обучение с учителем - подход, при котором машине заранее дают понять, какой ответ будет
считаться правильным.
Для каждого примера в обучающем наборе ИНС знает, какой результат является правильным.
Т.е. каждый "вход" (набор признаков входящего объекта - учебного примера) связан с
правильным "выходом" (известный класс).
ИНС использует эти знания, чтобы попытаться обобщить их на новые примеры,
которые сеть никогда раньше не видела;
т.е. на новых данных после обучения, она попрежнему способна находить установленные
закономерности.
Так происходит настройка параметров (весововые коэффициенты) для минимизации ошибок между
собственными предположениями и "правильными ответами" (метками).
Сопоставляя их из раза в раз, ИНС будет самостоятельно обучаться отвечать и на последующие
запросы правильно уже без помощи человека.
Когда, например, ребенок увидит ряд разных кошек и ему на каждую кошку скажут, что это "кошка",
в то время как другие объекты увиденные им будут относиться к другим классам ("собака", "медведь" и т.д -
"не кошка" - ему также скажут об этом), то после n-ой по счету кошки он уже будет готов сам без подсказки
отличить "кошку", от "не кошки"; равно как и другие классы животных.
Каждый объект (в данном случае животное) будет обладать набором отличительных признаков (форма головы,
ушей, окрас, рост, вес и т.д).
В данном случае (обучение с учителем) решается задача классификации -
отнесение объектов к одному из заранее известных классов
Обучение может происходить и без учителя.
Обучение без учителя - подход, при котором машине заранее не дают понять, какой ответ
будет считаться правильным. Обучение без учителя особенно полезно в ситуациях, когда у нас
нет заранее известной информации о категориях или метках данных.
При обучении без учителя обучающее множество состоит только из "входа"
(набор признаков входящего объекта - учебного примера).
Основная цель обучения без учителя — обнаружение скрытых паттернов и группировок в данных.
Процесс обучения выделяет статистические свойства обучающего множества и группирует
сходные объекты в классы.
В алгоритмах обучения без учителя выходная ошибка модели на обучающем множестве
не вычисляется. Вместо нее используется информация о текущем состоянии параметров модели
и примеров обучающего множества.
Например, это может быть Евклидово расстояние между вектором признаков примера и вектором
весов нейрона, которое и будет управлять коррекцией параметров модели в ходе обучения.
В данном случае (обучение без учителя) решается задача кластеризации -
деление большого массива данных на группы.
Как и человек, нейросеть учится за счет изменения связей между нейронами.
В любом варианте обучения веса и смещения играют ключевую роль в обучении
нейронной сети, так как они определяют как входные данные преобразуются в выходные.
Остановимся на обучении с учителем - решение задачи классификации.
При обучении ИНС как классификатора после слоя извлечения признаков добавляется полносвязный слой,
активации нейронов которые нормируются функцией активации и представляют собой оценки
вероятности принадлежности объекта соответствующим классам (каждому классу соответствует один нейрон).
[или решение о принадлежности объекта к конкретному классу - если в качестве функции активации
нейронов выходного слоя выбрана пороговая функция.]
В ходе обучения ИНС должна обнаружить в данных присущие им закономерности и приобрести свойства,
необходимые для отражения этих закономерностей. Что значит приобрести свойства?
Подобрать весовые коэффициенты таким образом, чтобы решить задачу классификации правильно.
Входные данные передаются в сеть, и её топология (структура межнейронных связей и выбранный вид
функций активации нейронов) фиксированы и не изменяются после создания сети.
Как именно реагировать на входящие данные, определяют весовые коэффициенты — эти значения определят
влияние входных данных на выходной продукт. В процессе обучения будут изменяться только веса
нейронов и смещения.
Обучение нейронной сети — поиск такого набора весовых коэффициентов, при котором входной сигнал
после прохода по сети преобразуется в нужный нам выходной.
Каждый образец обучающей выборки подается на входы сети, затем проходит обработку внутри
структуры ИНС, вычисляется выходной сигнал сети, который сравнивается с соответствующим
значением целевого вектора, представляющего собой требуемый выход сети.
Затем по определенному правилу вычисляется ошибка, и происходит изменение весовых
коэффициентов связей внутри сети в зависимости от выбранного алгоритма обучения.
Векторы обучающего множества предъявляются последовательно, вычисляются ошибки и
веса подстраиваются для каждого вектора до тех пор, пока ошибка по всему обучающему
массиву не достигнет приемлимо низкого уровня.
Рассмотрим один из самых используемых алгоритмов обучения нейронных сетей - градиентный спуск.
В режиме обучения для весов и порогов ИНС первоначально устанавливаются случайные значения.
Пока у сети нет данных. Потом на вход поступает первый пример (объект) из обучающей выборки.
Есть набор признаков объекта (входящий сигнал - X) и есть установленный истинный класс этого
объекта ().
Сеть исходя из своих весовых коэффициентов (для начала установленных случайным образом - K) и
входящего сигнала (X) выдала ответ (решение - Y).
Для начала нужно определить как оценивать этот ответ. У нас есть правильный ответ
() и ответ сети (Y).
Для этого мы определяем функцию потерь.
Функция потерь — функция, которая в теории статистических решений характеризует потери при
неправильном принятии решений на основе наблюдаемых данных.
В статистике функция потерь обычно используется для оценки параметров моделей, а рассматриваемое
событие является разностью между оцененным и истинным значениями для каждого наблюдения набора данных.
Наиболее часто используемой является квадратичная функция потерь:
,
где
где C — константа,
— истинное значение выхода модели (которое должно быть получено в идеальном случае),
Y — фактический выход модели.
[Для обучения ИНС константу С часто принимают равной 1/2 для удобства дифференцирования
(взятия производной)]
Значит, потери при неправильном решении теперь уже можно оценить.
Надо определить допустимый уровень этих потерь - допустимый уровень ошибки ИНС.
Далее, необходимо понять что делать если потери имеются и они превышают допустимый уровень.
Иными словами каким образом нужно откорректировать веса, чтобы уменьшить потери.
Задача - подобрать такие весовые коэффициенты, чтобы свести суммарную погрешность -
ошибку сети (пока у нас только один пример, но впоследствии из будет больше) ниже
допустимого уровня ошибки сети.
На какую величину нужно изменить каждый из весов?
Для ответа на этот вопрос надо взять частную производную функции потерь по каждому из весов.
[частную производную можно найти, зафиксировав все переменные, кроме одной, считая их постоянными]
Производная - скорость изменения функции относительно изменения ее аргумента.
Геометрический смысл производной - производная функции в точке есть угловой коэффициент
касательной к графику этой функции в этой точке.
-
+
- Если производная в точке положительна это означает, что функция возрастает в этой точке,
и наклон касательной направлен вверх
- Если производная в точке отрицательна это означает, что функция убывает в этой точке,
и наклон касательной направлен вниз.
Если производная положительна, увеличение веса приведет к увеличению потерь, и мы
должны уменьшить вес.
Если производная отрицательна, увеличение веса уменьшит потери, и мы должны увеличить вес.
Градиент функции, то есть вектор, который аналитически выражается геометрической суммой частных производных.
Градиент указывает направление наибольшего возрастания функции в каждой точке и используется
в оптимизации функций и векторном анализе.
Градиент функции в точке
:
Прооизводную функции одной переменной можно назвать производной по направлению -
она характеризует скорость изменения функции
в направлении оси соответствующей переменной.
Можно сказать, что производная по направлению дает скорость изменения функции в этом направлении.
Идея градиентного спуска заключается в том, что производная функции потерь относительно
каждого веса покажет его направление и влияние на функцию потерь.
Оптимизируемая функция:
функция потерь
Точка для расчета градиента:
весовой вектор
на t-ой итерации вдоль антиградиента
[η - параметр шага (сходимости)]
Т.о., обновление всех весов дает движение в направлении антиградиента функции потерь.
В данном методе движение в направлении антиградиента продолжается до достижения минимума целевой функции.
По мере приближения к оптимуму вектор градиента уменьшается по величине, стремясь к нулю,
поэтому длина шага постепенно уменьшается. Вблизи оптимума длина вектора градиента стремится к нулю.
Функция потерь относительно каждого из весовых коэффициентов
является сложной функцией, т.е. представлена как композиция нескольких вложенных функций.
Функция потерь (E) зависит от фактического выхода (Y);
фактический выход, в свою очередь, определяется как результат функции активации (F) нейрона
последнего выводного слоя;
результат функции активации зависит от входа нейрона, т.е. взвешенной суммы выходов
нейронов предыдущего слоя (S).
Т.о., производная сложной функции:
Для удобства записи:
-
градиент ошибки - частная производная, представляет собой скорость
изменения функции относительно определенной переменной в определенной точке .
Он измеряет, как изменяется значение функции при изменении выбранной переменной,
при этом все остальные переменные остаются постоянными.
- поправка нейрона данного уровня.
Если нейрон в первом слое после входного, то
— это просто x - входной сигнал
при соответствующем весе k.
Если нет, то
- выход нейрона предыдущего слоя (), который связан с данным нейроном
по связи k.
Для нейронов скрытых (промежуточных) слоев (если сеть состоит более чем из одного
выходного слоя) цепочка функций (функций активаций), ведущих их к выходному слою будет
возрастать, а следовательно увеличиваться и цепочка производных.
Поэтому удобно начинать с нейронов выходного слоя и двигаться вглубь сети, выражая
поправку для узла более низкого уровня через поправки более высокого.
Отсюда и название алгоритма - алгоритм обратного распространения ошибки
Мы рассмотели пока один пример из обучающей выборки, но каждый новый учебный пример
будет добавлять свою "лепту" в потери.
Под обычным градиентным спуском (по умолчанию) обычно понимается "градиентный спуск со
сменой коэффициентов после обсчёта всей выборки", то есть потери и градиент рассчитываются
с использованием всех элементов набора данных.
Такой градиентный спуск называется пакетным.
Пакетный градиентный спуск (Batch gradient descent) — реализация градиентного спуска, когда на
каждой итерации обучающая выборка просматривается целиком, и только после этого изменяются веса модели.
Возможен стохастический градиентный спуск - выбор одного случайно определенного примера из
обучающей выборки на каждой итерации.
Стохастический градиентный спуск (stochastic gradient descent) − оптимизационный
алгоритм, отличающийся от обычного градиентного спуска тем, что градиент оптимизируемой
функции считается на каждом шаге не как сумма градиентов от каждого элемента выборки,
а как градиент от одного, случайно выбранного элемента.
Возможен компромиссный вариант - мини-пакетный градиентный спуск.
Мини-пакетный градиентный спуск (Mini-batch gradient descent) - это разновидность алгоритма
градиентного спуска, который разбивает обучающий набор данных на небольшие партии, которые используются
для расчета ошибки модели и обновления коэффициентов модели.
Каждая итерация алгоритма пакетного градиентного спуска включает в себя вычисление среднего значения
градиентов функции потерь по всей обучающей выборке.
Одна итерация, называется эпохой.
Эпоха - одна итерация в процессе обучения, включающая предъявление всех примеров из обучающего множества.
Каждая возможная конфигурация весов определяет точку поверхности ошибки.
Поверхность ошибки представляет собой кумулятивную ошибку на всем наборе данных как
функцию потерь от весов сети.
Имея определенную изначальную конфигурацию весов (точку отсчета), с помощью алгоритма
обучения можно найти направление на этой поверхности, вдоль которого происходит наиболее
быстрое уменьшение функции потерь (антиградиент).
Происходит обновление весовых коэффициентов искусственной нейронной сети на каждой итерации
обучения.
Алгоритм градиентного спуска обновляет веса на каждом шаге, используя в качестве параметров
значения градиента и скорости обучения.
- параметр сходимости.
- множитель, задающий скорость "движения"
[Когда мы берем частную производную функции потерь по каждому из весовых коэффициентов, мы
определяем скорость изменения функции потерь в зависимости от изменения каждого из весов.
Но в данном случае мы корректируем сам вес, поэтому нужен некий масштабирующий параметр.
Значение производной может быть достаточно большим и алгоритм попросту "перескочит"
через локальный минимум; или, наоборот, слишком маленьким -
тогда будет слишком много шагов (больше, чем могло бы быть).]
[ - величина шага которым мы движемся по направлению к локальному
минимуму функции потерь; он не должен быть слишком большим - иначе мы просто проскочим этот
минимум и будем бесконечно "топтаться" около него; он не должен быть слишком маленьким -
иначе мы будем очень медленно "плестись" к этому минимуму.
Если шаг выбирается малым (чтобы гарантировать сходимость), то метод сходится медленно.
]
Коэффициент обучения () определяет насколько сильно будут
изменяться веса на каждой итерации.
Цели обратного распространения: отрегулировать каждый вес пропорционально тому, насколько он способствует общей ошибке.
Целью обратного распространения ошибки (backpropagation) является обновление весов связи между
всеми нейронами сети так, чтобы они привели к тому, чтобы фактический результат стал ближе к желаемому
(целевому) результату, минимизировав тем самым ошибку предсказания, как для каждого выходного нейрона,
так и сети в целом. Работа алгоритма backpropagation идет в обратном направлении: сначала на
выходном слое, а затем на скрытом.
Однослойная ИНС(выходной слой - 1 нейрон)
Обратное распространение ошибки
[0][1]
Обучение ИНС может быть реализовано различными алгоритмами оптимизации.
Градиентный спуск – один из алгоритмов оптимизации, широко используемый в обучении
искусственных нейронных сетей.
Градиентный спуск, метод градиентного спуска — численный метод нахождения локального минимума
или максимума функции с помощью движения вдоль градиента, один из основных численных методов
современной оптимизации.
В обучении ИНС движение идет в направлении противоположном градиенту (антиградиент) -
поиск локального минимума функции потерь.
Параметры нейрона - множество, состоящее из порогового уровня и всех весов. Сначала нейрон вычисляет взвешенную сумму:
( – число входов нейрона, – значение i-го входа нейрона, – вес i-го входа нейрона - величина смещения нейрона), далее применяя функцию активации вычисляет выходной сигнал Y
Взвешенная сумма - скалярное произведение весового вектора и входного вектора . Получаем уравнение гиперплоскости (в евклидовом n-мерном пространстве): Размерность гиперплоскости (гиперповерхности) на единицу меньше рассматриваемого пространства (Например, для трехмерного пространства гиперплоскостью является плоскость, для двухмерного пространства - прямая на плоскости)
-
Гиперплоскость делит пространство (соответствующей размерности) на два полупространства.
Все точки каждого из них определяются неравенствами.
- одно полупространство:
- другое полупространство:
- гиперплоскость в :
→ Т.о. уравнение разделяющей гиперплоскости ():
Смещения (bias=x0) добавляются к каждому нейрону для настройки порога активации.
Нейроны смещения не имеют входных синапсов (связей), его входное значение постоянно для всех наборов входных сигналов, выходные синапсы (связи) нейрона смещения настраиваются также как и для остальных входных сигналов. →Т.о., если значение линейной комбинации (S) равно пороговому значению функции активации (threshold), то точка (набор входных сигналов) принадлежит разделяющей гиперплоскости - граница решений.
→Если
точка лежит по одну сторону разделяющей гиперплоскости (в одном подпространстве);
→Если
точка ледит по другую сторону разделяющей гиперплоскости (в другом подпространстве).
Чем дальше от разделяющей гиперплоскости находится точка, тем больше будет разница (по модулю) между значением линейной комбинации и пороговым значением функции активации. Система координат в n-мерном аффинном пространстве состоит из некоторой точки O, начала координат, и из базиса. Любую гиперплоскость можно определить зная координаты ее нормального вектора и расстояние от начала координат до плоскости.
Нормальный вектор гиперплоскости:
Расстояние от начала координат до плоскости: , где
- нормирующий множитель;
Порог (threshold) служит для смещения пороговой функции активации. Величина этого смещения корректируется в процессе обучения с помощью настройки весового коэффициента . Изменение параметра сдвигает плоскость параллельным образом в пространстве. Если уменьшается, то плоскость смещается в направлении нормали, а если увеличивается - плоскость смещается против вектора нормали. Параметры нейрона [ ] определяют направление нормали гиперплоскости, а связан со смещением плоскости вдоль вектора нормали. [Во многих случаях удобнее всего иметь дело с нулевой пороговой функцией ()]. Иинтуитивно трудно представить себе n-мерное пространство. Геометрическую интерпретацию можно визуально представить в 3-х мерном и 2-х мерном пространстве. Рассмотрим 2-х мерное пространство (2 признака) (). Гиперплоскость в 2-х мерном пространстве - прямая; ее уравнение Первый этап - нормальный вектор гиперплоскости
Нормальный вектор плоскости - это любой ненулевой вектор, лежащий на прямой перпендикулярной к данной плоскости. Любой нормальный вектор плоскости можно рассматривать как направляющий вектор прямой, перпендикулярной к этой плоскости. Второй этап - расстояние от начала координат до плоскости
Для общего случая гиперплоскости в n-мерном пространстве будет все тоже самое, с поправкой на количество компонент в векторах. Т.о., во время обучения ИНС (обновления весовых коэффициентов в направлениии антиградиента) гиперплоскость меняет свое положение (угол наклона и расстояние от начала координат) пока не найдет правильное положение в пространстве (формируется такая конфигурация весовых коэффициентов, которая обеспечивает допустимый уровень средней ошибки ИНС). Рассмотрим следующий пример: Однослойная ИНС(выходной слой - 1 нейрон) [0][1] Пороговая функция threshold=5
| Ввод | x0 | x1 | x2 | Класс | Выход |
|---|---|---|---|---|---|
| Объект_1 | 1 | 1 | 2 | 0 | -5*1+2*1+1*2=-1<5→0 |
| Объект_2 | 1 | 2 | 3 | 0 | -5*1+2*2+1*3=2<5→0 |
| Объект_3 | 1 | 1 | 5 | 0 | -5*1+2*1+1*5=2<5→0 |
| Объект_4 | 1 | 3 | 1 | 0 | -5*1+2*3+1*1=2<5→0 |
| Объект_5 | 1 | 6 | 4 | 1 | -5*1+2*6+1*4=11>5→1 |
| Объект_6 | 1 | 4 | 6 | 1 | -5*1+2*4+1*6=9>5→1 |
| Объект_7 | 1 | 7 | 1 | 1 | -5*1+2*7+1*1=10>5→1 |
Нормальный вектор:
Уравнение разделяющей поверхности - граница решений:
Если входящие наборы данных (признаков) [т.е. точки в n-мерном пространстве ] являются линейно разделимыми [т.е. существует (n-1)-мерная гиперплоскость такая, что одни точки лежат по одну сторону от нее, другие - по другую], то достаточно входного слоя и выходного слоя ИНС (однослойная ИНС). Задача ИНС - найти такую гиперплоскость, т.е подобрать соответствующие весовые коэффициенты () [зададут ориентацию гиперплоскости в пространстве] и правильно задать пороговое значения (при необходимости добавить нейрон смещения) [зададут расстояние от плоскости до начала координат - это расстояние также будет изменяться в процессе обучения за счет веса ]. Пороговое значение, также нейрон смещения () - гиперпараметр ИНС. [Гиперпараметр — параметр машинного обучения, значение которого используется для управления процессом обучения. Его значение устанавливается перед началом обучения, в отличие от значений других параметров (весов), которые определяются во время обучения.] Каждый нейрон сети интерпретируется как разделяющая гиперплоскость (параметры: весовой вектор и порог (threshold)) в многомерном пространстве входов (входной вектор: ). Во время обучения гиперплоскость движется то в одну сторону, то в другую, пока не найдет правильное положение в пространстве, после чего она уже не будет значительно изменяться. Однослойные ИНС могут решить узкий круг линейно разделимых задач. Если проблема классификации сепарабельна (линейно разделимая), то пороговый блок (активация нейрона на выходном слое) будет классифицировать входящие данные правильно. Т.е, каждый выходной нейрон должен найти оптимальную разделяющую гиперплоскость (отделяющую "свой" класс от других) в векторном пространстве, размерность которого соответствует количеству признаков. Но с одним только выходным слоем (однослойная ИНС) это можно сделать невсегда. Многие проблемы классификации не являются линейно разделимыми. Мы можем решать такие задачи путем введения большего количества гиперплоскостей, а именно за счет введения более чем одного порогового блока. Обычно это осуществляется добавлением дополнительного (скрытого) слоя нейронов, каждый из которых производит частичную классификацию входных данных и посылает выводные данные на последний уровень (выходной слой). На выходном слое собираются все частичные классификации для составления окончательной - принятия решения. Такие сети называют многослойными ИНС. Скрытые слои находятся между входным и выходным слоями. Каждый такой слой сети преобразует входное пространство признаков в некоторое другое пространство, возможно с иной размерностью. Такое нелинейное преобразование происходит до тех пор, пока классы не оказываются линейно разделимыми нейронами выходного уровня. Скрытые слои выполняют основную работу по извлечению признаков и преобразованию данных. Можно сказать, что каждый новый слой подготавливает новый (более высокоуровневый) вектор признаков для следующего слоя. Скрытые слои преобразуют вход в некоторые промежуточные результаты. Нейроны скрытого слоя можно рассматривать как промежуточный выход, это также набор признаков объекта, только более обобщенный (если количество нейронов данного слоя меньше чем предыдущего), или, наоборот, более детальный (если количество нейронов данного слоя больше чем предыдущего). Потом эти промежуточные классификации предпоследнего слоя группируются и позволяют выходным нейронам разделить линейно неразделимые множества. Рассмотрим следующие данные. Многослойная (2-х) ИНС(выходной слой - 1 нейрон) [0] [1] [2] Пороговая функция threshold1=5 (скрытый слой[1]) threshold2=0 (выходной слой [2])
| Ввод | x0 | x1 | x2 | Класс |
|---|---|---|---|---|
| Объект_1 | 1 | 2 | 5 | 0 |
| Объект_2 | 1 | 1 | 3 | 0 |
| Объект_3 | 1 | 3 | 2 | 0 |
| Объект_4 | 1 | 4 | 4 | 0 |
| Объект_5 | 1 | 2 | 2 | 1 |
| Объект_6 | 1 | 4 | 3 | 1 |
| Объект_7 | 1 | 3 | 4 | 1 |
| Промежуточный выход №1 |
|---|
| -2.5*1+1*2+1*5=4.5<5→0 |
| -2.5*1+1*1+1*3=1.5<5→0 |
| -2.5*1+1*3+1*2=2.5<5→0 |
| -2.5*1+1*4+1*4=5.5>5→1 |
| -2.5*1+1*2+1*2=1.5<5→0 |
| -2.5*1+1*4+1*3=4.5<5→0 |
| -2.5*1+1*3+1*4=4.5<5→0 |
| Промежуточный выход №2 |
|---|
| 6.1*1+0.37*2-1*5=1.84<5→0 |
| 6.1*1+0.37*1-1*3=3.47<5→0 |
| 6.1*1+0.37*3-1*2=5.21>5→1 |
| 6.1*1+0.37*4-1*4=3.58<5→0 |
| 6.1*1+0.37*2-1*2=4.84<5→0 |
| 6.1*1+0.37*4-1*3=4.58<5→0 |
| 6.1*1+0.37*3-1*4=3.21<5→0 |
| Промежуточный выход №3 |
|---|
| 4.64*1+1.92*2-1*5=3.48<5→0 |
| 4.64*1+1.92*1-1*3=3.56<5→0 |
| 4.64*1+1.92*3-1*2=8.4>5→1 |
| 4.64*1+1.92*4-1*4=8.32>5→1 |
| 4.64*1+1.92*2-1*2=6.48>5→1 |
| 4.64*1+1.92*4-1*3=9.32>5→1 |
| 4.64*1+1.92*3-1*4=6.4>5→1 |
Промежуточный нейрон :
Весовой вектор:
Нормальный вектор:
Уравнение разделяющей поверхности (прямая) - граница решений: Веса после обучения ИНС
Промежуточный нейрон :
Весовой вектор:
Нормальный вектор:
Уравнение разделяющей поверхности (прямая) - граница решений: Веса после обучения ИНС
Промежуточный нейрон :
Весовой вектор:
Нормальный вектор:
Уравнение разделяющей поверхности (прямая) - граница решений:
| Ввод | a0 | a1 | a2 | a3 | Класс | Выход |
|---|---|---|---|---|---|---|
| Объект_1 | 1 | 0 | 0 | 0 | 0 | -0.5*1-1*0-1*0+1*0=-0.5<0→0 |
| Объект_2 | 1 | 0 | 0 | 0 | 0 | -0.5*1-1*0-1*0+1*0=-0.5<0→0 |
| Объект_3 | 1 | 0 | 1 | 1 | 0 | -0.5*1-1*0-1*1+1*1=-0.5<0→0 |
| Объект_4 | 1 | 1 | 0 | 1 | 0 | -0.5*1-1*1-1*0+1*1=-0.5<0→0 |
| Объект_5 | 1 | 0 | 0 | 1 | 1 | -0.5*1-1*0-1*0+1*1=0.5>0→1 |
| Объект_6 | 1 | 0 | 0 | 1 | 1 | -0.5*1-1*0-1*0+1*1=0.5>0→1 |
| Объект_7 | 1 | 0 | 0 | 1 | 1 | -0.5*1-1*0-1*0+1*1=0.5>0→1 |
Выходной нейрон :
Весовой вектор:
Нормальный вектор:
Уравнение разделяющей поверхности (плоскость) - граница решений: ➤
Например, добавим в пример точку [6,3] - тогда: ➤ Тогда, нужно построить трехслойный персептрон следующим образом. Нейроны первого слоя разделяют пространство признаков на полиэдры одного класса и отображают их в вершины гиперкуба. Нейроны второго слоя отсекают вершины гиперкуба. Нейрон третьего слоя собственно осуществляет классификацию через оператор логического сложения. Трехслойная нейронная сеть позволяет описать любые разделения объединений полиэдров. 1 На первом этапе формируются гиперплоскости, которые разбивают пространство признаков на полиэдры. Основная задача - чтобы ни в каком полиэдре не было пары точек из разных классов (т.к каждая вершина гиперкуба на следующем слое должна отвечать только за свой класс). В нашем примере этот этап сделан - пространство признаков разбито на многоугольники (полиэдр в 2-мерном пространстве) прямыми (гиперплоскость в 2-мерном пространстве).
Параметры уравнения прямых задают параметры нейронов первого слоя (веса и смещение):
Выход нейронов первого слоя: 0 или 1. 2. Первый слой отображает полиэдры в вершины p-мерного единичного гиперкуба. p - количество нейронов первого слоя. Так как пространство признаков разбито таким образом, что с каждым полиэдром связаны образы одного класса, то и с каждой вершиной гиперкуба связан только один класс. Таким образом, если гиперкуб можно разделить одной гиперплоскостью так, чтобы вершины с разными классами находились по разные стороны разделяющей гиперплоскости, то задача решена и двух слоев достаточно. Параметры уравнения разделяющей гиперплоскости задают параметры нейрона второго слоя (веса и смещение). Если вершины гиперкуба с разными классами нельзя разделить одной гиперплоскостью тогда каждая вершина гиперкуба со своим классом отсекается гиперплоскостью. Поскольку число вершин в гиперкубе , число нейронов второго слоя также равно . Таким образом, выход нейронов второго слоя - вектор размерности , у которого всегда лишь одно значение равно 1, а остальные равны нулю. Параметры гиперплоскостей, отсекающих вершины куба зададут параметры нейронов 2-го слоя. Уравнение гиперплоскости, отсекающей вершину гиперкуба:
, где:
- направляющий вектор разделяющей гиперплоскости (нормальный вектор)
, где - отделяемая вершина;
- диагонально противоположная вершина.
, где - p-мерный вектор, состоящий из единиц.
- точка через которую проходит гиперплоскость.
Пример
В нашем примере,-
Добавляется точка [6,3] - Объект_8:
- :
- :
- : → (1,1,1)
матрица диагонально противоположных вершина куба ():
матрица направляющих векторов ():
Матрица (точка через которую проходит гиперплоскость ):
Матрица :
Уравнения плоскостей, отсекающтх вершины куба (параметры нейронов второго слоя):
-
нейрон второго слоя: -
нейрон второго слоя: -
нейрон второго слоя: -
нейрон второго слоя: -
нейрон второго слоя: -
нейрон второго слоя: -
нейрон второго слоя: -
нейрон второго слоя:
Пример
Таким образом, разделяющая гиперплоскость выходного нейрона задается уравнением:,
где
Т.о, в нашем примере:
| Вход: | класс | 1-ый слой | 2-ой слой | Выход | |
| Вершина куба, соответствующая входу | Плоскость, отсекающая данную вершину: параметры нейрона 2-го слоя | Вес связи нейрона 3-го уровня (выходной) | |||
| 2 | 5 | 0 | (0,0,0) | a1: весовой вектор K=(0.28,-1,-1,-1) | 0 |
| 1 | 3 | 0 | (0,0,0) | a1: весовой вектор K=(0.28,-1,-1,-1) | 0 |
| 3 | 2 | 0 | (0,1,1) | a7: весовой вектор K=(-1.72,-1,1,1) | 0 |
| 4 | 4 | 0 | (1,0,1) | a4: весовой вектор K=(-1.72,1,-1,1) | 0 |
| 2 | 2 | 1 | (0,0,1) | a3: весовой вектор K=(-0.72,-1,-1,1) | 1 |
| 4 | 3 | 1 | (0,0,1) | a3: весовой вектор K=(-0.72,-1,-1,1) | 1 |
| 3 | 4 | 1 | (0,0,1) | a3: весовой вектор K=(-0.72,-1,-1,1) | 1 |
| 6 | 3 | 1 | (1,1,1) | a8: весовой вектор K=(-2.72,1,1,1) | 1 |
| В вершинах соответствующим нейронам a2 [K=(-0.72,1,-1,-1)], a5 [K=(-0.72,-1,1,-1)], a6 [K=(-1.72,1,1,-1)] - нет входных точек, поэтому их выходные веса связи =0 | |||||
(выходной слой - 1 нейрон)
Обратное распространение ошибки [0][1][2][3]
1-ый слой
2-ой слой
3-ий слой
-
Алгоритм обучения ИНС:
- Задается желаемая среднеквадратичная ошибка - допустимый уровень ошибки сети.
- Задается гиперпараметр - шаг обучения (скорость с которой будем двигаться в направлении антиградиента функции потерь)
- Инициализируются случайным образом весовые коэффициенты (вектор K) и пороговые значения (изначальная точка откуда будет осуществляться градиентный спуск)
- Подаются последовательно образы из обучающей выборки на вход ИНС. При этом для каждого образца выполняются следующие действия: - производится фаза прямого распространения входных сигналов по ИНС. Вычисляется выходное значение всех нейронов (выходного и скрытых слоев). На этом этапе каждый нейрон вычисляет взвешенную сумму своих входов и применяет активационную функцию. - вычисляются ошибки нейронов выходного и скрытых слоев. Этот этап включает вычисление частных производных функции потерь по отношению к весам сети. Вычислятся поправка для узлов последнего уровня, далее поправки для узлов более низкого уровня выражаются через поправки узлов более высокого уровня (т.е происходит обратное распространение ошибки). Веса корректируются на основе вычисленных градиентов и заданного коэффициента обучения. - производится изменение весовых коэффициентов нейронов для каждого слоя сети
- Этот процесс повторяется до тех пор, пока ошибка не станет достаточно малой (меньше допустимого установленного уровня ошибки). Градиентные алгоритмы обучения ИНС предполагают использование непрерывных дифференцируемых функций активации нейронов. Есть и другие алгоритмы оптимизации, которые предполагают минимизацию функции потерь независимо от вида активационной функции.
Мы учимся лишь на собственном опыте, вернее, на опыте собственных ошибок.(Артур Джонс) Так устроен наш мозг.