пятница, 12 февраля 2016 г.
В этой статье мы поговорим о методах обучения классификатора на основе искусственных нейронных сетей прямого распространения, т.е. сетей не имеющих обратных связей.
Построив формальное пространство признаков мы можем применить математические методы классификации для разделения множества объектов на части или классы.
Формально это можно записать следующим образом. $$ f : O \rightarrow X $$ $$ h : X \rightarrow C $$ где
Далее мы рассмотрим задачу обучения классификатора.
Настройка определённым способом параметров классификатора на основе набора данных называют обучением классификатора .
Для обучения классификатора нам понадобится размеченный (учебный) набор данных, т.е. множество пар $(X,C)_L$. Классификатору предъявляются по очереди учебные примеры из $X$, ответ классификатора $Y$ сравнивается с правильным ответом $C$ и по результатам сравнения корректируются параметры классификатора. Такая схема настройки классификатора называется "обучение с учителем" , более строго это выглядит так.
При таком подходе может проявится эффект переобучения (overfitting), когда классификатор хорошо обрабатывает только учебное множество, но на остальных объектах результаты значительно хуже (плохое обобщение).
Для борьбы с переобучением набор для тренировки классификатора разделяют на три части: учебный, контрольный, тестовый.
Для улучшения результатов можно применять различные стратегии коррекции параметров: полную, частичную или стохастическую, т.е. на каждом цикле обучения (эпохе) можно обрабатывать не все примеры а только их часть. Эти стратегии можно описать следующим образом:
В следующем разделе мы разберём её подробней.
На вход нейрона поступают сигналы $x_1,\ldots x_n$, каждый вход имеет вес $w_i$, при этом $x_0\equiv 1$ и $w_0$ называют сдвигом . Линейная комбинация входов $s$ называется состоянием нейрона .
|
|
Рис.1:
схема многослойной нейронной сети
прямого распространения. |
Рис.2: схема искусственного нейрона. |
Рис.: гиперболический тангенс (сигмоид) $\ y=\tanh(s)=\frac{\exp(s) - \exp(-s)}{\exp(s)+\exp(-s)}$ |
Рис.: экспоненциальный сигмоид $\ y=\frac{1}{1+\exp(-s)}=\frac{\exp(0)}{\exp(0)+\exp(-s)}$ |
Рис.: пороговая функция $\ y=[ s\gt0 ]$ |
Рис.: rectified linear unit (ReLU) $\ y=max(0,s)$ |
Нейроны, составляющие сеть, разбиты на группы называемые слоями . В сетях прямого распространения сигнал проходит послойно в одном направлении - от входа к выходу. Нейроны одного слоя активируются одновременно, каждый нейрон может иметь связи с нейронами следующего слоя, связь нейрона на самого себя (петли) и/или связи с предыдущими слоями (обратные связи) в этой схеме отсутствуют.
Первый слой называется входным или распределительным , нейроны этого слоя не изменяют сигнал и просто распределяют его нейронам второго слоя. Второй и следующие за ним слои называются обрабатывающими и выполняют работу по преобразованию входного сигнала.
Кроме функций активации нейронов, описанных выше, можно использовать совместную активацию нейронов слоя, например функция активации softmax (экспоненциальная нормализация), её обычно используют для выходного слоя. $$ (y_1,\ldots,y_m) = softmax(s_1,\ldots,s_m) = \frac{\exp(s)}{\sum\limits_j \exp(s_j)} $$
Также стоит упомянуть стохастическую модель, здесь функция активации $f(s)$ принимает значение $1$ с вероятностью $p=1/(1+\exp(-s))$ или соответственно значение $0$ с вероятностью $1-p$.
Далее мы рассмотрим методы обучения многослойной нейронной сети.
В качестве функции потери для нейронных сетей обычно используется среднеквадратичная ошибка (MSQE) $$ E=\frac{1}{2}\sum\limits_j (y_j-c_j)^2 $$ где $y_j$ - выход сети номер $j$, $c_j$ - правильный ответ для выхода $j$
Но MSQE это не единственный вариант, для сетей с выходным слоем softmax обычно используют среднюю кросс-энтропию по всем учебным примерам. $$ E= \frac{1}{k}\sum\limits_{i=1}^k\left(-log(p_i)\right); $$ где $k$ - количество примеров, $p_i$ - выданная классификатором вероятность принадлежности примера $X_i$ к своему классу $C_i$.
Введя функцию потери $E$, мы теперь можем формально поставить задачу обучения классификатора $h$ следующим образом - процедура обучения нейронной сети это минимизация функции потери в пространстве весов. \begin{equation} \min_W E(h(X,W),C) \label{eq:ermin} \end{equation}
Во второй части этой статьи мы займёмся решением этой задачи.