Мухамедиев Равиль Ильгизович - Введение в машинное обучение стр 8.

Шрифт
Фон

[0

a

1

[0

a

2

[0

a

1

[l]


На вход сети, таким образом, подается вектор [1,0,1], а на выходе сети необходимо получить y=1.

Шаг 1. Прямое прохождение сигнала.

Рассмотрим прямое прохождение сигнала от входа к выходу:



Выход нейронной сети:



Шаг 2. Расчет ошибки выходного слоя.

Сеть должна давать значение y

(1)



Шаг 3. Обратное распространение ошибки.

Полученную ошибку нужно «распространить обратно» для того, чтобы скорректировать веса сети. Для этого рассчитаем градиенты ошибок нейронов скрытого слоя, используя выражение



Получим



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

Шаг 4. Коррекция весов нейронной сети.

Установим для нашего учебного примера большой коэффициент обучения (learning rate) ro = 0.5. Отметим, что в реальных случаях ro редко превышает 0.1. Здесь мы использовали относительно большое значение, чтобы увидеть значимые изменения весов уже на первой итерации.

Используем выражение (Eq. 2.18) для расчета измененных весов сети:



для скрытого слоя:



Используя скорректированные значения весов, повторим расчет прямого прохождения сигнала и получим значение ошибки выходного слоя:



Видно, что ошибка стала значительно меньше.

После третьей итерации dz

1

[2

Примечание. Расчет двух итераций алгоритма BPE с применением Python-numpy приведен в MLF_Example_Of_BPE https://www.dropbox.com/s/tw6zwht3d5pd4zf/MLF_Example_Of_BPE.html?dl=0

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





где W[i] матрица весов i-го слоя нейронной сети; X матрица обучающих примеров размерностью n x m (n число параметров, m количество обучающих примеров).

Расчет алгоритма градиентного спуска для нейронной сети в матричном виде:





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

Выражения, приведеные выше, говорят о том, что на вход сети подаются все обучающие примеры «одновременно» и значения градиентов ошибки рассчитываются сразу для всех примеров. Этот процесс составляет одну эпоху обучения. Batch Gradient Descent это процесс обучения, когда все обучающие примеры используются одновременно. Нескольких десятков или сотен эпох обычно достаточно для достижения оптимальных значений весов матриц W[i].

Однако, когда количество примеров очень велико, примеры разбиваются на группы, которые можно поместить в оперативную память компьютера, и эпоха обучения включает последовательную подачу этих групп. При этом возможны два подхода [[56]]:

Stochastic Batch Gradient Descent когда группа включает лишь один пример, выбираемый случайно из множества обучающих примеров.

Mini Batch Gradient Descent когда группа включает некоторое количество примеров.

Примечание. Для ускорения обучения рекомендуется подбирать размер группы равный степени двойки 8, 16, 32, , 1024 в идеале так, чтобы пакет примеров мог быть помещен в кэш-память процессора.

При применении современных пакетов машинного обучения программисту не приходится заботиться о выполнении алгоритма BPE. Он реализуется путем выбора того или иного оптимизационного алгоритма (solver). Часто применяются lbfs, adam. Например, загрузка многослойного персептрона (multilayer perceptron MLP) и создание объекта классификатора осуществляются следующим образом:

from sklearn.neural_network import MLPClassifier

clf = MLPClassifier(hidden_layer_sizes = [10, 10], alpha = 5, random_state = 0, solver='lbfgs')


Пример применения MLPClassifier приведен в разделе 2.8 Пример простого классификатора.

2.6.5. Активационные функции

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






Рисунок 2.12. Активационные функции, применяемые в нейронных сетях


Резонный вопрос: «Почему исследователи используют несколько видов активационных функций?» Ответ, следующий: вычислительные затраты на расчеты результатов весьма велики, особенно в крупномасштабных сетях. Как известно, расчет выхода каждого слоя нейронной сети выполняется с использованием активационной функции. А в процессе выполнения алгоритма обратного распространения ошибки используется производная активационной функции. И в том, и в другом случае ReLU имеет большое преимущество с точки зрения вычислительных затрат. Следовательно, нейронная сеть будет обучаться значительно быстрее. С другой стороны, использование сигмоидальной функции для выходного слоя нейронной сети позволяет вычислять оценку вероятности принадлежности к классу, поскольку она принимает значения в диапазоне от 0 до 1.

2.7. Контрольные вопросы

Какие ученые оказали существенное влияние на развитие коннективизма?

Коннективизм или коннекционизм в чем отличие этих двух терминов?

Приведите схему классического нейрона.

Приведите схему многослойной сети прямого распространения.

Как вычисляется выход многослойной нейронной сети прямого распространения?

Приведите функцию стоимости многослойной сети прямого распространения.

Сколько основных шагов в алгоритме обратного распространения? В чем их назначение?

Каково назначение кэша в процессе выполнения алгоритма обратного распространения ошибки?

Что такое эпоха обучения нейронной сети?

Укажите, какие виды процессов обучения нейронной сети применяются на практике.

В чем заключается сходство и отличие активационных функций, применяемых в нейронных сетях?

В чем заключается сходство активационных функций, применяемых в нейронных сетях?

В чем заключается преимущество активационной функции ReLU?

Какая активационная функция удобна для реализации бинарного классификатора?

Какими должны быть начальные значения весов и смещений в нейронной сети?

2.8. Пример простого классификатора

Рассмотрим интересную задачу классификации изображений, представленную в качестве примера применения TensorFlow [[57]]. TensorFlow в нашем решении мы используем лишь для загрузки данных, а в качестве классификатора применим упомянутый выше MLPClassifier. Суть задачи заключается в том, что необходимо классифицировать предметы одежды по их монохромным изображениям в низком разрешении (28 х 28). Набор данных Fashion-MNIST содержит 60 000 изображений для обучения и 10 000 для тестирования, начиная от футболок и брюк и заканчивая сумками и туфлями. Всего 10 классов изображений. Классы, пронумерованные от 0 до 9, и их описание показаны на рисунке 2.13.

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке

Скачать книгу

Если нет возможности читать онлайн, скачайте книгу файлом для электронной книжки и читайте офлайн.

fb2.zip txt txt.zip rtf.zip a4.pdf a6.pdf mobi.prc epub ios.epub fb3