АЛГОРИТМЫ НЕЙРОННЫХ СЕТЕЙ: ТЕОРЕТИЧЕСКИЕ ОСНОВЫ И МЕХАНИЗМЫ РАБОТЫ

АЛГОРИТМЫ НЕЙРОННЫХ СЕТЕЙ: ТЕОРЕТИЧЕСКИЕ ОСНОВЫ И МЕХАНИЗМЫ РАБОТЫ

Авторы публикации

Рубрика

Информационные технологии

Просмотры

327

Журнал

Журнал «Научный лидер» выпуск # 3 (204), Январь ‘25

Поделиться

Статья посвящена теоретическим основам и практическому применению нейронных сетей, их структуре и ключевым алгоритмам обучения. Рассмотрены основные компоненты нейронных сетей, такие как функции активации, стоимости и методы оптимизации. Особое внимание уделено алгоритмам градиентного спуска и обратного распространения ошибки, а также концепции свёрточных нейронных сетей, их архитектуре и преимуществам. Работа иллюстрирует ключевые принципы машинного обучения с использованием нейронных сетей и демонстрирует их значимость для решения сложных задач, включая обработку изображений.

Машинное обучение – раздел искусственного интеллекта, изучающий алгоритмы, способные обучаться. Очень распространёнными при решении задач машинного обучения являются нейронные сети. Подход с использованием нейронных заключается в использовании большого набора тренировочных данных и разработке системы (модели), которая сможет обучиться на основе предоставленных тренировочных данных.

 

Главная задача при обучении нейронной сети сделать так, чтобы обученная модель давала верный или близкий к верному результат на других данные, а не только на тех, которые использовались при тренировке. Эффект, когда нейронная сеть обучается слишком сильно на тренировочных данных и теряет качество на реальных тестовых данных, называется переобучением. Переобучение является одной из основных проблем машинного обучения.

 

Искусственная нейронная сеть (ИНС) — математическая модель, а также её программное воплощение, построенная по принципу организации и работы биологических нейронных сетей — сетей нервных клеток живого организма.

 

Скрытые слои представляют структуру обучающего алгоритма. Цель нейронной сети – приблизить некоторою функцию f(x).

 

Вход – вектор столбец , где n – количество элементов входа. Веса, соединяющие слой l и l+1, задаются матрицей ,

где n – количество нейронов слоя l+1; m – количество нейронов слоя l.

То есть – вес между нейронами i и j слоев l+1 и l соответственно.

Смещение слоя l задаёт вектор столбец , где n – количество нейронов в слое l. Введем обозначение y1= w1x1+b1, чтобы получить значения первого скрытого слоя необходимо воспользоваться формулой (1.1) или другой функцией активации, которые будут описаны далее. Значения нейронов первого скрытого слоя обозначим через α1=f(y1). Итоговый выход из нейронной сети будет:

                                                                                                  (1.1)

Общий процесс вычисления значений нейронной сети можно представить в следующем виде:

                                                                                          (1.2)

где 𝑔 – некоторая функция, преобразующая один слой в другой. Это может быть, как перцептрон, так и другая функция.

Функция стоимости

 

Функция стоимости используется при обучении нейронной сети и помогает понять, насколько хорошо обучена сеть. Задача обучения заключается в минимизации функции стоимости.

 

C(W,b) – функция стоимости, W – весовые коэффициенты модели, b – коэффициент смещения, X – входные данные для нейронной сети, α – выходные данные нейронной сети, y(x) – истинный результат для выходных данных x. Необходимо подобрать такие значения W и b, чтобы C(W,b)min.

 

Одна из наиболее простых функций стоимости (1.3) mean squared error (MSE) или средняя квадратичная ошибка:

                                                                           (1.3)

                                                                           

Если результат обучения a близок к значению y(x), то функция стоимости C(W,b)≈0, т.е в этом случае алгоритм правильно отработал и нейронная сеть хорошо приближает требуемую функцию, напротив если C(W,b) будет большим, значит y(x) и α сильно отличаются, и нужно продолжать обучать нейронную сеть.

 

Другой пример функции стоимости – функция потерь:

                                                             (1.4)

где yj,αj элементы вектора истинного значения и выхода нейронной сети соответственно для входных данных x. Можно заметить, что C(W,b)>0, также, если истинный результат yj=1 или yj=0 и значение выхода нейронной сети близко к необходимому значению, следует C(W,b)→0. Функция потерь имеет преимущество, что в отличие от MSE, она позволяет избежать проблем замедления обучения.

 

Функция активации

 

Значения нейронов скрытых слоёв вычисляются с помощью некоторой функции. Выбор такой функции сильно влияет на результат сети. Эта функция называется функцией активации, можно сказать, что она активирует (задаёт значение) последующим нейронам. Тренировка сети и проверка на валидационном множестве позволяют выявить результат и выбрать лучший. Одна из наиболее часто используемых функций – сигмоида:

                                                                                         (1.5)

Сигмоида – непрерывная, дифференцируемая, при этом ограничена горизонтальными асимптотами y = 1, y = 0 (рис. 1).

 

Рисунок 1. Графическое представление сигмоиды

Подходит в случаях, когда необходимо задавать вероятность некоторого события.

Другая функция, похожая на сигмоид – гиперболический тангенс:

                                                                                    (1.6)

где

th(x)=2σ(2x)-1 — является сдвинутой и масштабированной версией сигмоиды.

 

Базовые алгоритмы нейронных сетей

 

Градиентный спуск

 

Задача обучения нейронной сети – минимизация функции стоимости, т.е. минимизация функции многих переменных. Сперва нужно подсчитать производные первого порядка, решить систему уравнений и найти точки, подозрительные на экстремум. Затем, для того чтобы проверить, какая из точек является локальным минимум, нужно вычислить производные второго порядка.

 

Рассмотрим алгоритм градиентного спуска. Для простоты вычислений выберем функцию стоимости (1.3).

 

Пусть наша задача состоит в минимизации функции f:RnR. Для минимизации функции fмы хотим найти направление, в котором f уменьшается быстрее всего. Т.е. необходимо найти , считая длину вектора постоянной, выражение сведётся к min cosθ, θ=π, т.е. значение производной по направлению минимально если её направление противоположно направлению вектора градиента.

 

Таким образом мы можем уменьшать нашу функцию в направлении обратную градиенту. По следующему правилу:

                                                                                            (2.1)

где 𝜂learning rate, скорость обучения, положительное число, задающее размер шага, с которым заданная функция уменьшается.

Перенесём (2.1) на функцию стоимости, получим:

                                                                                               (2.2)

Например, всё множество входных данных X случайно разбивается на несколько подмножеств: X1, X2,…,Xk пусть при этом размер каждого подмножества m. Далее алгоритм тренируется на каждом из этих подмножеств, то есть:

                                                                                             (2.3)

где CXj - функция, усреднённая по набору Xj. Значения весов и смещений будут изменяться после каждой тренировки на наборах Xj.. После того как одна эпоха закончилась данные снова разделяются на подмножества и происходит обучение на каждом из подмножеств, т.е. начинается следующая эпоха. На рис. 2 представлена функция одной переменной с несколькими минимумами.

 

Рисунок 2. Графическое представление функции одной переменной с несколькими минимумами

Если при работе алгоритма градиентного спуска начальное положение значения весов и смещения были выбраны рядом с одним из локальных минимумов, то существует вероятность того, что мы не сможем выбраться из этого локального минимума. И если значение этого локального минимума сильно отличается от глобального, то и результат работы нейронной сети будет далёк от желаемого.

 

Алгоритм обратного распространения ошибки

 

В то время, когда алгоритм градиентного спуска служит для минимизации функции, алгоритм обратного распространения ошибки предназначен для быстрого вычисления градиента. Для вычисления градиента необходимо вычислять частные производные . Вычислять их каждый раз вручную – трудная задача, так как нейронная сеть может быть глубокая и иметь множество параметров. Для быстрого вычисления градиента функции стоимости был придуман алгоритм обратного распространения ошибки. Рассмотрим его далее.

 

Символом будем обозначать операцию Адамара.

 

Воспользуемся обозначениями (1.2) данными выше. В качестве функции стоимости используем среднюю квадратичную ошибку (1.3), в качестве функции активации – сигмоид (1.5). Введём ошибку нейрона j слоя l:

                                                                                   (2.4)

Тогда общий алгоритм будет следующим.

 

Алгоритм называется обратным распространением ошибки, так как ошибка распространяется назад, на первые слои сети. Мы вычисляем ошибку, начиная с последнего слоя и заканчивая первым. И вычисляем все необходимые параметры нейронной сети за два прохода.

 

Когда мы используем стохастический градиентный спуск, таких входов несколько. В этом случае мы вычисляем ошибку (2.4) для каждого входа сети. И в конце изменяем веса и смещения по следующему правилу:

                                                                                  (2.5)

где m – количество элементов в мини батче.

 

Теперь, когда мы знаем базовые обучающие алгоритмы нейронных сетей, сделаем несколько выводов из полученных знаний.

 

Сверточные нейронный сети

 

Свёрточные сети получили такое название, т.к. используют внутри операцию свёртки. Далее будем рассматривать свёрточные нейронные сети применительно к изображениям. Один слой свёрточной нейронной сети лучше воспринимать как квадрат нейронов размером n×n.

Свёртка – особый вид интегрального преобразования. Пусть f и g – две интегрируемые функции RR, тогда свёрткой называется:

                                                                           (2.6)

Рассмотрим операцию свёртки на примере. Пусть стоит задача вычислить количество нерастаявшего снега в определённый момент времени. Сложность заключается в том, что во время выпадения нового снега, старый может таять. При этом нам известно f(t) – количество снега, которое выпадает в конкретный момент времени и g(∆t) – доля нерастаявшего снега через промежуток времени t. Доля от количества снега f(t). Введём другие обозначения: x – момент времени, в который мы хотим узнать количество оставшегося снега, t – момент выпадения конкретной порции снега. Необходимо построить функцию s(x).

 

Тогда, например, если нам необходимо найти количество снега в момент времени x, оставшееся от снега выпавшего в момент времени t, то s(x)=f(t)∙g(x-t) и, если мы просуммируем по всему выпавшему ранее снегу, мы получим в точности формулу (2.6).

 

Очень часто данные представляются через определённый временной интервал, например, одна секунда. В этом случае мы работаем с дискретной свёрткой:

                                                                                  (2.7)

Теперь рассмотрим основные принципы, на которых основаны свёрточные нейронные сети. Затем вернёмся к применению операции свёртки для изображений.

 

Локальные области

 

Как и в сетях прямого распространения, мы соединяем нейроны входа с нейронами скрытого слоя. Однако вместо того, чтобы соединять каждый нейрон входа с каждым нейроном скрытого слоя, будем соединять только нейроны из конкретной маленькой области входа с одним нейроном скрытого слоя. При этом каждая связь имеет вес, и нейрон скрытого слоя имеет своё смещение.

 

 

Рисунок 3. Графическое представление связи нейронов локальной области входного изображения

На рис. 3 показаны связи нейронов локальной области входного изображения с одним нейроном скрытого слоя. Здесь размер локальной области равен 3×3. Для остальных связей локальная область смещается, например, на один нейрон вправо или вниз и соединяется с другим нейроном скрытого слоя. Так происходит до тех пор, пока все нейроны не будут соединены, так же определяются связи других свёрточных слоёв нейронной сети.

 

В терминологии свёрточной сети мы называем результат операции свёртки, т.е. результат отображения входного слоя в скрытый – feature map. Веса и смещения являются общими и вместе называются kernel или filter. Для того, чтобы распознать изображение хорошо, нам необходима больше, чем одна feature map. Поэтому целиком один слой свёрточной нейронной сети состоит из нескольких feature map.

 

Определим активацию нейрона исходя из данных свойств и рис. 3:

                                                                        (2.8)

где g(z) – функция активации, , n и m от 1 до 3 – общие веса,  – общее смещение.

Воспользуемся (2.7), где определим функции f и gравными 0 на всей области определения кроме конечного множества точек и поскольку мы работаем с изображениями, то вход имеет размерность два. Мы можем переписать (2.7) к виду:

                                                                  (2.9)

где

lизображение;

Kkernel.

 

Тогда (2.8) для в общем виде преобразуется к (2.10):

                                                                                   (2.10)

Тут определена активация для выделения одного свойства. При определении нескольких feature map будет выделено несколько групп общих весов и смещений. Полное представление скрытого слоя свёрточной нейронной сети представлено на рис. 4.

 

Рисунок 4. Графическое представление скрытого слоя нейронной сети

 

На данном рисунке для одного входного слоя нейронной сети генерируется 6 feature map. Например, для рис. 5 у нас будет 1960 параметров, против 65 792 для обычной сети. Получаем улучшение почти в 30 раз, что даёт выигрыш в памяти и скорости обучения.

 

Таким образом, нейронные сети представляют собой мощный инструмент, способный решать широкий спектр задач, начиная от классификации данных и заканчивая обработкой изображений. Их обучение основано на математически строгих алгоритмах, которые обеспечивают точное приближение сложных функций. Выбор правильной архитектуры, функций активации и методов обучения является ключевым шагом в создании эффективной модели.

Список литературы

  1. Kim, C. Multiple Hypothesis Tracking Revisited / C. Kim, F. Li, A. Ciptadi, J.M. Rehg // International Conference on Computer Vision, 2015. – P. 4696-4704. DOI: 10.1109/ ICCV.2015.533
  2. Bewley, A. Simple online and realtime tracking / A. Bewley, G. Zongyuan, F. Ramos, B. Upcroft // ICIP. – 2016. – P. 3464-3468
  3. Wojke, N. Simple online and realtime tracking with a deep association metric / N. Wojke, A. Bewley, D. Paulus // arXiv preprint, 2017. – arXiv:1703.07402
Справка о публикации и препринт статьи
предоставляется сразу после оплаты
Прием материалов
c по
Остался последний день
Размещение электронной версии
Загрузка материалов в elibrary
Публикация за 24 часа
Узнать подробнее
Акция
Cкидка 20% на размещение статьи, начиная со второй
Бонусная программа
Узнать подробнее