Процесс обучения нейронных сетей представляет собой сложный процесс обработки данных, который включает в себя последовательное предъявление данных на вход нейронной сети и сравнение выходных данных с их истинным значением, после чего вносится коррекция весовых коэффициентов нейронов в сторону уменьшения ошибки выходных данных. Этот процесс производится многократно с использованием данных из датасета. В процессе обучения используется часть датасета, которая носит название тренировочный набор. При этом данные из датасета могут предъявляться последовательно несколько раз.
К общим рекомендациям состава датасета относятся увеличение количества изображений с отмеченными целевыми объектами, а также включение в датасет изображений с возможными вариантами фона (частей изображения, не относящихся к целевым объектам). Большие по размерам и общему объему изображения увеличивают время обучения и работы классификатора. Для каждой сетевой модели рекомендуется подавать на вход изображения различных размеров. В экспериментах было установлено, что обучение сети на изображениях, повернутых относительно исходных на 90°, производится быстрее, чем на изображениях исходной видеопоследовательности.
Один цикл обучения с использованием всего датасета носит название эпоха. Как правило, для качественного обучения сети требуется много эпох. Процесс обучения нейронных сетей, имеющих много скрытых слоев, часто носит название глубокого обучения.
Процесс обучения с учителем представляет собой предъявление сети выборки обучающих примеров. Каждый образец подается на входы сети, затем проходит обработку внутри структуры НС, вычисляется выходной сигнал сети, который сравнивается с соответствующим значением целевого вектора, представляющего собой требуемый выход сети. Затем по определенному правилу вычисляется ошибка, и происходит изменение весовых коэффициентов связей внутри сети в зависимости от выбранного алгоритма. Векторы обучающего множества предъявляются последовательно, вычисляются ошибки и веса подстраиваются для каждого вектора до тех пор, пока ошибка по всему обучающему массиву не достигнет приемлемо низкого уровня (рисунок 2.7).
Рисунок 2.7 Схема обучения нейронной сети
При обучении без учителя обучающее множество состоит лишь из входных векторов. Обучающий алгоритм подстраивает веса сети так, чтобы получались согласованные выходные векторы, т. е. чтобы предъявление достаточно близких входных векторов давало одинаковые выходы. Процесс обучения, следовательно, выделяет статистические свойства обучающего множества и группирует сходные векторы в классы. Предъявление на вход вектора из данного класса даст определенный выходной вектор, но до обучения невозможно предсказать, какой выход будет производиться данным классом входных векторов. Следовательно, выходы подобной сети должны трансформироваться в некоторую понятную форму, обусловленную процессом обучения. Это не является серьезной проблемой. Обычно не сложно идентифицировать связь между входом и выходом, установленную сетью. Для обучения нейронных сетей без учителя применяются сигнальные метод обучения Хебба и Ойа.
Математически процесс обучения можно описать следующим образом. В процессе функционирования нейронная сеть формирует выходной сигнал Y, реализуя некоторую функцию Y=G(X). Если архитектура сети задана, то вид функции G определяется значениями синаптических весов и смещенной сети.
Пусть решением некоторой задачи является функция Y=F(X), заданная параметрами входных-выходных данных (X1, Y1), (X2, Y2), , (XN, YN), для которых Yk=F(Xk), где k=1, 2, , N.
Обучение состоит в поиске (синтезе) функции G, близкой к F в смысле некоторой функции ошибки E.
Если выбрано множество обучающих примеров пар (XN, YN), где k=1, 2, , N) и способ вычисления функции ошибки E, то обучение нейронной сети превращается в задачу многомерной оптимизации, имеющую очень большую размерность, при этом, поскольку функция E может иметь произвольный вид, обучение в общем случае многоэкстремальная невыпуклая задача оптимизации.
Для решения этой задачи могут использоваться следующие (итерационные) алгоритмы:
1. Алгоритмы локальной оптимизации с вычислением частных производных первого порядка:
градиентный алгоритм (метод наискорейшего спуска),
методы с одномерной и двумерной оптимизацией целевой функции в направлении антиградиента,
метод сопряженных градиентов,
методы, учитывающие направление антиградиента на нескольких шагах алгоритма.
2. Алгоритмы локальной оптимизации с вычислением частных производных первого и второго порядка:
метод Ньютона,
методы оптимизации с разреженными матрицами Гессе,
квазиньютоновские методы,
метод Гаусса Ньютона,
метод Левенберга Марквардта и др.
3. Стохастические алгоритмы оптимизации:
поиск в случайном направлении,
имитация отжига,
метод Монте-Карло (численный метод статистических испытаний).
4. Алгоритмы глобальной оптимизации (задачи глобальной оптимизации решаются с помощью перебора значений переменных, от которых зависит целевая функция).
2.8. Алгоритм обучения однослойного нейрона
Обучение нейронной сети в задачах классификации происходит на наборе обучающих примеров X(1), X(2), , X(Р), в которых ответ принадлежность к классу А или B известен. Определим индикатор D следующим образом: положим D(X)=1, если X из класса А, и положим D(X)=0, если X из класса B, то есть
где всякий вектор X состоит из n компонент: X=(x1, x2 ., xn).
Задача обучения персептрона состоит в нахождении таких параметров w1, w2, , wn и h, что на каждом обучающем примере персептрон выдавал бы правильный ответ, то есть
Если персептрон обучен на большом числе корректно подобранных примеров и равенство (2.2) выполнено для почти всех X(i),i=1,Р, то в дальнейшем персептрон будет с близкой к единице вероятностью проводить правильную классификацию для остальных примеров. Этот интуитивно очевидный факт был впервые математически доказан (при некоторых предположениях) в основополагающей работе наших соотечественников В. Вапника и А. Червоненскиса еще в 1960-х годах.
На практике, однако, оценки по теории Вапника Червоненскиса иногда не очень удобны, особенно для сложных моделей нейронных сетей. Поэтому практически, чтобы оценить ошибку классификации, часто поступают следующим образом: множество обучающих примеров разбивают на два случайно выбранных подмножества, при этом обучение идет на одном множестве, а проверка обученного персептрона на другом.
Рассмотрим подробнее алгоритм обучения персептрона.
Шаг 1. Инициализация синаптических весов и смещения.
Значения всех синаптических весов модели полагают равными нулю: wi=0, i=1,n; смещение нейрона h устанавливают равны некоторому малому случайному числу. Ниже, из соображений удобства изложения и проведения операций будем пользоваться обозначением w0= h.
Обозначим через wi(t), i=1,n вес связи от i-го элемента входного сигнала к нейрону в момент времени t.
Шаг 2. Предъявление сети нового входного и желаемого выходного сигналов.
Входной сигнал X=(x1, x2 ., xn) предъявляется нейрону вместе с желаемым выходным сигналом D.
Шаг 3. Адаптация (настройка) значений синаптических весов. Вычисление выходного сигнала нейрона.
Перенастройка (адаптация) синаптических весов проводится по следующей формуле:
где D(t) индикатор, определенный равенством (2.1), а r параметр обучения, принимающий значения меньшие 1.
Описанный выше алгоритм это алгоритм градиентного спуска, который ищет параметры, чтобы минимизировать ошибку. Алгоритм итеративный. Формула итераций выводится следующим образом.
Введем риск
где суммирование идет по числу опытов (t номер опыта), при этом задано максимальное число опытов Т.
Подставим вместо F формулу для персептрона, вычислим градиент по w. В результате мы получим указанную выше формулу перенастройки весов.
В процессе обучения вычисляется ошибка δ(t)=D(t) y(t).
Рисунок 2.8 График изменения ошибки в процессе обучения нейросети
На рисунке 2.8 изображен график, показывающий, как меняется ошибка в ходе обучения сети и адаптации весов. На нем хорошо видно, что, начиная с некоторого шага, величина δ(t) равна нулю. Это означает, что персептрон обучен.
2.9. Дешифрирование объектов с помощью технологий искусственного интеллекта
При автоматизированном (автоматическом) дешифрировании изображений решаются задачи, которые по классификации Гонсалеса и Вудса делятся на задачи высокого и низкого уровня. К задачам высокого уровня относятся: