Нейрокомпьютерные системы

Самоорганизация (самообучение) нейронных сетей

Разбить на страницы
Показывать лекцию целиком

Классификация без учителя

Задан набор объектов, каждому объекту поставлен в соответствие вектор значений признаков (строка таблицы). Требуется разбить эти объекты на классы эквивалентности. Для каждого нового объекта нужно:

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

    Простейшая мера близости объектов - квадрат евклидова расстояния между векторами значений их признаков (чем меньше расстояние, тем ближе объекты). Соответствующее определение признаков типичного объекта - среднее арифметическое значение признаков по выборке, представляющей класс. Другая мера близости, возникающая при обработке сигналов, изображений и т.п. - квадрат коэффициента корреляции (чем он больше, тем ближе объекты). Возможны и иные варианты.

    Если число классов $$m$$ заранее определено, то задачу классификации без учителя можно поставить следующим образом.

    Метод динамических ядер в классификации без учителя

    Пусть задана выборка предобработанных векторов данных $$\{x\}\subseteq E,E$$ - пространство векторов данных. Каждому классу будет соответствовать некоторое ядро $$w \subseteq W,W$$ - пространство ядер.

    Для любых $$x \in E$$ и $$w \in W$$ определим меру близости $$d(x,w)$$, а для каждого набора из $$k$$ ядер $$w_1, \ldots w_k$$ и любого разбиения $$\{x\}$$ на $$k$$ классов $$\{x\}=P_1 \smile P_2 \smile \ldots \smile P_k$$ определим критерий качества

    $$\begin{equation} D=D(w_1, \ldots, w_k,P_1, \ldots, P_k)= \sum_{i=1}^k \sum_{x \in P_i} d (x,w_i). \end{equation}$$

    Требуется найти набор $$w_1, \ldots, w_k$$ и разбиение $$P_1, \ldots, P_k$$, минимизирующие $$D.$$ Шаг алгоритма разбиваем на $$2$$ этапа:

    1) Для фиксированного набора ядер $$w_1, \ldots, w_k$$ ищем минимизирующее $$D$$ разбиение $$P_1 , \ldots, P_k$$ ; оно дается следующим решающим правилом: $$x \in P_i$$, если $$d(x,w_i) < d(x,w_j)$$ при $$i \neq j$$ (когда для $$x$$ минимум $$d(x,w_i)$$ достигается при нескольких значениях $$i$$, выбор между ними может быть сделан произвольно).

    2) Для каждого $$P_i,i \in 1, \ldots, k$$, полученного на первом этапе, отыскивается $$w_i \in W$$, минимизирующее критерий качества

    $$\begin{align*} D_i = \sum_{x \in P_i} d(x,w_i). \end{align*} $$

    Начальные значения $$w_1, \ldots, w_k$$, $$P_1, \ldots, P_k$$ выбираются произвольно либо по какому-нибудь эвристическому правилу. Если ядру $$w_i$$ ставится в соответствие элемент сети, вычисляющей по входному сигналу $$x$$ функцию $$d(x,w_i)$$, то решающее правило для классификации дается интерпретатором "проигравший забирает все": элемент $$x$$ принадлежит классу $$P_i$$, если выходной сигнал $$i$$ -го элемента $$d(x,w_i)$$ меньше всех остальных. Мера близости $$d$$ выбирается такой, чтобы легко можно было найти ядро $$w_i$$, минимизирущее $$D_i$$ для данного $$P_i.$$

    В простейшем случае пространство ядер $$W$$ совпадает с $$E$$, а $$d(x,w_i)$$ - положительно определенная квадратичная форма от $$x - w_i$$, например, квадрат евклидова расстояния. Тогда ядро $$w_i$$, минимизирущее $$D_i$$, есть центр масс класса $$P_i$$:

    $$\begin{align*} w_i=(1/|P_i|)\sum_{x \in P_i} x, \end{align*} $$

    где $$|P_i|$$ - число элементов в $$P_i.$$

    Пусть векторы пространства $$E$$ нормированы. Тогда

    $$\begin{equation} (x,x)=(w_i,w_i)=1. \end{equation}$$

    Так как $$d(x,w_i)=(x - w_i, x - w_i)=(x,x)- 2(x,w_i) + (w_i,w_i)$$, то с учетом (2) упрощается решающее правило, разделяющее классы:

    $$\begin{align*} x \in P_i, \mbox{ если }(x, w_i) > (x, w_j)\mbox{ при } i \neq j, \end{align*} $$

    поскольку минимум $$d(x,w_i)$$ достигается при максимуме $$(x,w_i).$$ Такое решающее правило реализуется с помощью $$k$$ сумматоров, вычисляющих $$(x,w_i)$$, и интерпретатора, выбирающего сумматор с максимальным выходным сигналом. Номер этого сумматора и есть номер класса, к которому относится $$x.$$

    Задача поиска ядра $$w_i$$ для класса $$P_i$$ превращается в поиск вектора $$w$$, максимизирующего

    $$\begin{align*} D_i = \sum_{x \in P_i}(x,w). \end{align*} $$

    Этот максимум достигается в точке

    $$\begin{align*} w = \sum_{x \in P_i}x/ \| \sum_{x \in P_i}x \| \end{align*} $$

    где $$\|\ldots\|$$ - евклидова норма.

    В тех простейших случаях, когда ядро класса точно определяется как среднее арифметическое (или нормированное среднее арифметическое) элементов класса, а решающее правило основано на сравнении выходных сигналов линейных адаптивных сумматоров, нейронную сеть, реализующую метод динамических ядер, называют сетью Кохонена. В определение ядра $$w_i$$ для сетей Кохонена входят суммы $$\sum_{x \in P_i} x.$$ Это позволит накапливать новые динамические ядра, обрабатывая по одному примеру и пересчитывая $$w_i$$ после получения в $$P_i$$ нового примера.

    Если число классов заранее не определено, то полезен критерий слияния классов: классы $$Y_i$$ и $$Y_j$$ сливаются, если расстояние между их ядрами меньше, чем среднее расстояние от элемента класса до ядра в одном из них:

    $$\begin{align*} (y^i,y^j) < \max[(1/|Y_i|)\sum_{x \in Y_i} \rho(x,y^i),(1/|Y_j|)\sum_{x \in Y_j} \rho(x,y^j)], \end{align*} $$

    где $$|Y|$$ - число элементов в $$Y.$$ Использовать критерий слияния классов можно так: сначала принимаем гипотезу о достаточном числе классов, строим их, минимизируя $$D$$, затем некоторые $$Y_i$$ объединяем, повторяем минимизацию $$D$$ с новым числом классов и т.д.

    Алгоритмы обучения сетей с самоорганизацией

    Целью обучения сети с самоорганизацией на основе конкуренции нейронов считается такое упорядочение нейронов (подбор значений их весов), которое минимизирует значение ожидаемого искажения, оцениваемого погрешностью аппроксимации входного вектора $$x$$ значениями весов нейрона-победителя. При $$p$$ входных векторах $$x$$ и применении евклидовой метрики эта погрешность, называемая также погрешностью квантования, может быть выражена в виде

    $$\begin{equation} E = (1/p)\sum_{i=1}^p \|x^i - w_{win}\|^2, \end{equation}$$

    где $$w_{win}$$ - вес нейрона-победителя при предъявлении вектора $$x^i.$$

    Этот подход также называется векторным квантованием (англ. Vector Quantization - VQ) или кластеризацией. Номера нейронов-победителей при последовательном предъявлении векторов $$x^i$$ образуют так называемую кодовую таблицу. При классическом решении задачи кодирования применяется алгоритм $$K$$ -усреднений (англ. К-means), носящий имя обобщенного алгоритма Ллойда.

    Для нейронных сетей аналогом алгоритма Ллойда считается алгоритм WTA (англ.: Winner Takes All - "победитель получает все"). В соответствии с ним после предъявления вектора $$x$$ рассчитывается активность каждого нейрона. Победителем признается нейрон с самым сильным выходным сигналом, т.е. тот, для которого скалярное произведение $$(x,w)$$ оказывается наибольшим. В предыдущем разделе было показано, что при использовании нормализованных векторов это равнозначно наименьшему эвклидову расстоянию между входным вектором и вектором весов нейронов. Победитель получает право уточнить свои веса в направлении вектора $$x$$ согласно правилу

    $$\begin{align*} w_{win} \longleftarrow w_{win} + \alpha (x - w_{win}), \end{align*} $$

    где $$\alpha$$ - коэффициент обучения. Веса остальных нейронов уточнению не подлежат. Алгоритм позволяет учитывать усталость нейронов путем подсчета количества побед каждого из них и поощрять элементы с наименьшей активностью для выравнивания их шансов. Такая модификация применяется чаще всего на начальной стадии обучения с последующим отключением после активизации всех нейронов. Подобный способ обучения реализован в виде режима CWTA (Conscience Winner Takes All) и считается одним из лучших и наиболее быстрых алгоритмов самоорганизации.

    Помимо алгоритмов WTA, в которых в каждой итерации может обучаться только один нейрон, для обучения сетей с самоорганизацией широко применяются алгоритмы типа WTM (англ.: Winner Takes Most - "победитель получает больше"), в которых, кроме победителя, уточняют значения своих весов и нейроны из его ближайшего окружения. При этом, чем дальше какой-либо нейрон находится от победителя, тем меньше изменяются его веса. Процесс уточнения вектора весов может быть определен обобщенной зависимостью, которая здесь представляется в виде

    $$\begin{align*} w_i \longleftarrow w_i + \alpha G(i,x)[x - w_i] \end{align*} $$

    для всех нейронов, расположенных в окрестности победителя. Если функция $$G(i,x)$$ определяется в форме

    $$\begin{align*} G(i,x) = \{1 \mbox{ для } i=I, 0 \mbox{ для } i \neq I \}, \end{align*} $$

    где $$I$$ обозначает номер победителя, то мы получаем классический алгоритм WTA. Существует множество вариантов алгоритма WTM, отличающихся прежде всего формой функции $$G(i,x).$$ Для дальнейшего изучения выберем классический алгоритм Кохонена.

    Алгоритм Кохонена

    Алгоритм Кохонена относится к наиболее старым алгоритмам обучения сетей с самоорганизацией на основе конкуренции, и в настоящее время существуют различные его версии. В классическом алгоритме Кохонена сеть инициализируется путем приписывания нейронам определенных позиций в пространстве и связывания их с соседями на постоянной основе. Такая сеть называется самоорганизующейся картой признаков (сеть SOFM - Self-Organizing Feature Map). В момент выбора победителя уточняются не только его веса, но также и веса его соседей, находящихся в ближайшей окрестности. Таким образом, нейрон-победитель подвергается адаптации вместе со своими соседями. В классическом алгоритме Кохонена функция соседства $$G(i,x)$$ определяется в виде

    $$G(i,x) = \{1 \mbox{ для }d(i,I)\leqslant L, 0 \mbox{ для }d(i,I) > L \}.$$

    В этом выражении $$d(i,I)$$ обозначает эвклидово расстояние между векторами весов нейрона-победителя $$I$$ и $$i$$ -го нейрона. Коэффициент $$L$$ выступает в роли уровня соседства, его значение уменьшается в процессе обучения до нуля. Соседство такого рода называется прямоугольным.

    Другой тип соседства, часто применяемый в картах Кохонена, - это соседство гауссовского типа, при котором функция $$G(i,x)$$ задается формулой

    $$G(i,x) = exp(-d^2(i,x)/2 \lambda^2).$$

    Степень адаптации нейронов-соседей определяется не только евклидовым расстоянием между $$i$$ -м нейроном и победителем ( $$I$$ -м нейроном), но также и уровнем соседства $$\lambda.$$ В отличие от соседства прямоугольного типа, где каждый нейрон, находящийся в окрестности победителя, адаптировался в равной степени, при соседстве гауссовского типа уровень адаптации различен и зависит от значения функции Гаусса. Как правило, гауссовское соседство дает лучшие результаты обучения и обеспечивает лучшую организацию сети, чем прямоугольное соседство.

    Самоорганизующаяся карта признаков проходит два этапа обучения. На первом этапе элементы упорядочиваются так, чтобы отражать пространство входных элементов, а на втором происходит уточнение их позиций. Как правило, процесс представляется визуально путем использования двумерных данных и построения соответствующей поверхности. Например, входные векторы выбираются случайным образом на основе однородного распределения в некотором квадрате, и начинается обучение карты. В определенные моменты в ходе обучения строятся изображения карты путем использования соответствия, показанного на рис. 1. Элементы соединяются линиями, чтобы показать их относительное размещение. Сначала карта выглядит сильно "измятой", но постепенно в ходе обучения она разворачивается и расправляется. Конечным результатом обучения является карта, покрывающая все входное пространство и являющаяся достаточно регулярной (т.е. элементы оказываются распределенными почти равномерно). Для примера была рассмотрена карта с топологией квадрата из 49 элементов, и для 250 точек данных, взятых из единичного квадрата, было проведено ее обучение, которое начиналось со случайного набора весовых значений, задающих размещение кластерных элементов в центре входного пространства, как показано на рис. 1. На рис. 2 и 3 иллюстрируется процесс разворачивания карты с течением времени. Как и для других типов сетей, в данном случае результат обучения зависит от учебных данных и выбора параметров обучения.

    (рис 2) Весовые векторы инициализируются случайными значениями из диапазона 0.4-0.6(рис 1) Карта по прошествии 20 итераций(рис 3) Карта незадолго до окончания обучения. Элементы теперь упорядочены, и карта станет еще более регулярной по окончании финальной фазы сходимости

    Применение сетей с самоорганизацией

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

    Компрессия данных

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

    Пусть изображение разделяется на одинаковые кадры размером $${n_x \times n_y}$$ пикселов. Образующие кадр пикселы представляют собой компоненты входного вектора $$x.$$

    Сеть с самоорганизацией содержит $$n$$ нейронов, каждый из которых имеет входом вектор $$x.$$ Обучение сети при помощи одного из алгоритмов самоорганизации состоит в подборе таких весов конкретных нейронов, при которых минимизируется погрешность квантования (3). В результате обучения формируется структура сети, при которой вектору $$x$$ каждого кадра соответствует вектор весов нейрона победителя. В процессе предъявления очередного кадра выбирается номер нейрона-победителя. Номера нейронов-победителей образуют кодовую таблицу, а веса этих нейронов представляют средние значения, соответствующим конкретным компонентам вектора $$x$$ (т.е. уровням интенсивности пикселов, составляющих кадр).

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

    $$\begin{align*} K = N \cdot n_x n_y T/(N \cdot \lg_2 n + n \cdot n_x n_y t), \end{align*} $$

    где $$n_x$$ и $$n_y$$ - размеры кадра в осях $$x$$ и $$y, N$$ - количество кадров, $$n$$ - количество нейронов, а $$T$$ и $$t$$ - количество битов для представления соответственно градаций интенсивности пиксела и значений весов. Этот подход позволяет получить степень компрессии изображений порядка 16 при значении коэффициента сигнал/шум (PSNR) около 26-28 дБ.

    Прогнозирование нагрузок энергетической системы

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

    $$\begin{align*} p_j = [p(j,1),p(j,2), \ldots, p(j,24)], \end{align*} $$

    где компонент $$p(j,k)$$ соответствует действительной нагрузке в $$k$$ -й час суток. Множество профильных векторов подается на вход сети Кохонена, состоящей из $$n$$ нейронов. Процесс самоорганизации сети приводит к автоматической кластеризации данных и к сопоставлению каждому кластеру одного из нейронов сети. Этот нейрон считается победителем, а его веса наилучшим образом адаптируются к усредненным весам профильных векторов, составляющих кластер. Характерная особенность состоит в том, что соседние векторы имеют сходные профильные характеристики.

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

    Знание таблицы распределения побед конкретных нейронов сети позволяет относительно легко предвидеть профили часовых нагрузок для произвольного дня года. С этой целью создаются таблицы принадлежности каждого дня года к области доминирования определенного нейрона с обозначением количества его побед для всех дней в прошлом. Для выбора прогнозируемого профиля нагрузок актуального дня в требуемом месяце рассчитываются усредненные значения весов нейронов победителей, которые указывали в прошлом на требуемый день. Если количество побед $$i$$ -го нейрона, соответствующего $$j$$ -му дню, обозначить $$k_{ji}$$, а соответствующие векторы весов класса - $$w_i$$, то прогнозируемый профильный вектор $$j$$ -го дня рассчитывается по формуле

    $$\begin{align*} p_j = \sum_{i=1}^n k_{ji} w_i / \sum_{i=1}^n k_{ji} \end{align*} $$
    Страницы:

    Классификация без учителя

    Задан набор объектов, каждому объекту поставлен в соответствие вектор значений признаков (строка таблицы). Требуется разбить эти объекты на классы эквивалентности. Для каждого нового объекта нужно:

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

    Простейшая мера близости объектов - квадрат евклидова расстояния между векторами значений их признаков (чем меньше расстояние, тем ближе объекты). Соответствующее определение признаков типичного объекта - среднее арифметическое значение признаков по выборке, представляющей класс. Другая мера близости, возникающая при обработке сигналов, изображений и т.п. - квадрат коэффициента корреляции (чем он больше, тем ближе объекты). Возможны и иные варианты.

    Если число классов $$m$$ заранее определено, то задачу классификации без учителя можно поставить следующим образом.

    Метод динамических ядер в классификации без учителя

    Пусть задана выборка предобработанных векторов данных $$\{x\}\subseteq E,E$$ - пространство векторов данных. Каждому классу будет соответствовать некоторое ядро $$w \subseteq W,W$$ - пространство ядер.

    Для любых $$x \in E$$ и $$w \in W$$ определим меру близости $$d(x,w)$$, а для каждого набора из $$k$$ ядер $$w_1, \ldots w_k$$ и любого разбиения $$\{x\}$$ на $$k$$ классов $$\{x\}=P_1 \smile P_2 \smile \ldots \smile P_k$$ определим критерий качества

    $$\begin{equation} D=D(w_1, \ldots, w_k,P_1, \ldots, P_k)= \sum_{i=1}^k \sum_{x \in P_i} d (x,w_i). \end{equation}$$

    Требуется найти набор $$w_1, \ldots, w_k$$ и разбиение $$P_1, \ldots, P_k$$, минимизирующие $$D.$$ Шаг алгоритма разбиваем на $$2$$ этапа:

    1) Для фиксированного набора ядер $$w_1, \ldots, w_k$$ ищем минимизирующее $$D$$ разбиение $$P_1 , \ldots, P_k$$ ; оно дается следующим решающим правилом: $$x \in P_i$$, если $$d(x,w_i) < d(x,w_j)$$ при $$i \neq j$$ (когда для $$x$$ минимум $$d(x,w_i)$$ достигается при нескольких значениях $$i$$, выбор между ними может быть сделан произвольно).

    2) Для каждого $$P_i,i \in 1, \ldots, k$$, полученного на первом этапе, отыскивается $$w_i \in W$$, минимизирующее критерий качества

    $$\begin{align*} D_i = \sum_{x \in P_i} d(x,w_i). \end{align*} $$

    Начальные значения $$w_1, \ldots, w_k$$, $$P_1, \ldots, P_k$$ выбираются произвольно либо по какому-нибудь эвристическому правилу. Если ядру $$w_i$$ ставится в соответствие элемент сети, вычисляющей по входному сигналу $$x$$ функцию $$d(x,w_i)$$, то решающее правило для классификации дается интерпретатором "проигравший забирает все": элемент $$x$$ принадлежит классу $$P_i$$, если выходной сигнал $$i$$ -го элемента $$d(x,w_i)$$ меньше всех остальных. Мера близости $$d$$ выбирается такой, чтобы легко можно было найти ядро $$w_i$$, минимизирущее $$D_i$$ для данного $$P_i.$$

    В простейшем случае пространство ядер $$W$$ совпадает с $$E$$, а $$d(x,w_i)$$ - положительно определенная квадратичная форма от $$x - w_i$$, например, квадрат евклидова расстояния. Тогда ядро $$w_i$$, минимизирущее $$D_i$$, есть центр масс класса $$P_i$$:

    $$\begin{align*} w_i=(1/|P_i|)\sum_{x \in P_i} x, \end{align*} $$

    где $$|P_i|$$ - число элементов в $$P_i.$$

    Пусть векторы пространства $$E$$ нормированы. Тогда

    $$\begin{equation} (x,x)=(w_i,w_i)=1. \end{equation}$$

    Так как $$d(x,w_i)=(x - w_i, x - w_i)=(x,x)- 2(x,w_i) + (w_i,w_i)$$, то с учетом (2) упрощается решающее правило, разделяющее классы:

    $$\begin{align*} x \in P_i, \mbox{ если }(x, w_i) > (x, w_j)\mbox{ при } i \neq j, \end{align*} $$

    поскольку минимум $$d(x,w_i)$$ достигается при максимуме $$(x,w_i).$$ Такое решающее правило реализуется с помощью $$k$$ сумматоров, вычисляющих $$(x,w_i)$$, и интерпретатора, выбирающего сумматор с максимальным выходным сигналом. Номер этого сумматора и есть номер класса, к которому относится $$x.$$

    Задача поиска ядра $$w_i$$ для класса $$P_i$$ превращается в поиск вектора $$w$$, максимизирующего

    $$\begin{align*} D_i = \sum_{x \in P_i}(x,w). \end{align*} $$

    Этот максимум достигается в точке

    $$\begin{align*} w = \sum_{x \in P_i}x/ \| \sum_{x \in P_i}x \| \end{align*} $$

    где $$\|\ldots\|$$ - евклидова норма.

    В тех простейших случаях, когда ядро класса точно определяется как среднее арифметическое (или нормированное среднее арифметическое) элементов класса, а решающее правило основано на сравнении выходных сигналов линейных адаптивных сумматоров, нейронную сеть, реализующую метод динамических ядер, называют сетью Кохонена. В определение ядра $$w_i$$ для сетей Кохонена входят суммы $$\sum_{x \in P_i} x.$$ Это позволит накапливать новые динамические ядра, обрабатывая по одному примеру и пересчитывая $$w_i$$ после получения в $$P_i$$ нового примера.

    Если число классов заранее не определено, то полезен критерий слияния классов: классы $$Y_i$$ и $$Y_j$$ сливаются, если расстояние между их ядрами меньше, чем среднее расстояние от элемента класса до ядра в одном из них:

    $$\begin{align*} (y^i,y^j) < \max[(1/|Y_i|)\sum_{x \in Y_i} \rho(x,y^i),(1/|Y_j|)\sum_{x \in Y_j} \rho(x,y^j)], \end{align*} $$

    где $$|Y|$$ - число элементов в $$Y.$$ Использовать критерий слияния классов можно так: сначала принимаем гипотезу о достаточном числе классов, строим их, минимизируя $$D$$, затем некоторые $$Y_i$$ объединяем, повторяем минимизацию $$D$$ с новым числом классов и т.д.

    Алгоритмы обучения сетей с самоорганизацией

    Целью обучения сети с самоорганизацией на основе конкуренции нейронов считается такое упорядочение нейронов (подбор значений их весов), которое минимизирует значение ожидаемого искажения, оцениваемого погрешностью аппроксимации входного вектора $$x$$ значениями весов нейрона-победителя. При $$p$$ входных векторах $$x$$ и применении евклидовой метрики эта погрешность, называемая также погрешностью квантования, может быть выражена в виде

    $$\begin{equation} E = (1/p)\sum_{i=1}^p \|x^i - w_{win}\|^2, \end{equation}$$

    где $$w_{win}$$ - вес нейрона-победителя при предъявлении вектора $$x^i.$$

    Этот подход также называется векторным квантованием (англ. Vector Quantization - VQ) или кластеризацией. Номера нейронов-победителей при последовательном предъявлении векторов $$x^i$$ образуют так называемую кодовую таблицу. При классическом решении задачи кодирования применяется алгоритм $$K$$ -усреднений (англ. К-means), носящий имя обобщенного алгоритма Ллойда.

    Для нейронных сетей аналогом алгоритма Ллойда считается алгоритм WTA (англ.: Winner Takes All - "победитель получает все"). В соответствии с ним после предъявления вектора $$x$$ рассчитывается активность каждого нейрона. Победителем признается нейрон с самым сильным выходным сигналом, т.е. тот, для которого скалярное произведение $$(x,w)$$ оказывается наибольшим. В предыдущем разделе было показано, что при использовании нормализованных векторов это равнозначно наименьшему эвклидову расстоянию между входным вектором и вектором весов нейронов. Победитель получает право уточнить свои веса в направлении вектора $$x$$ согласно правилу

    $$\begin{align*} w_{win} \longleftarrow w_{win} + \alpha (x - w_{win}), \end{align*} $$

    где $$\alpha$$ - коэффициент обучения. Веса остальных нейронов уточнению не подлежат. Алгоритм позволяет учитывать усталость нейронов путем подсчета количества побед каждого из них и поощрять элементы с наименьшей активностью для выравнивания их шансов. Такая модификация применяется чаще всего на начальной стадии обучения с последующим отключением после активизации всех нейронов. Подобный способ обучения реализован в виде режима CWTA (Conscience Winner Takes All) и считается одним из лучших и наиболее быстрых алгоритмов самоорганизации.

    Помимо алгоритмов WTA, в которых в каждой итерации может обучаться только один нейрон, для обучения сетей с самоорганизацией широко применяются алгоритмы типа WTM (англ.: Winner Takes Most - "победитель получает больше"), в которых, кроме победителя, уточняют значения своих весов и нейроны из его ближайшего окружения. При этом, чем дальше какой-либо нейрон находится от победителя, тем меньше изменяются его веса. Процесс уточнения вектора весов может быть определен обобщенной зависимостью, которая здесь представляется в виде

    $$\begin{align*} w_i \longleftarrow w_i + \alpha G(i,x)[x - w_i] \end{align*} $$

    для всех нейронов, расположенных в окрестности победителя. Если функция $$G(i,x)$$ определяется в форме

    $$\begin{align*} G(i,x) = \{1 \mbox{ для } i=I, 0 \mbox{ для } i \neq I \}, \end{align*} $$

    где $$I$$ обозначает номер победителя, то мы получаем классический алгоритм WTA. Существует множество вариантов алгоритма WTM, отличающихся прежде всего формой функции $$G(i,x).$$ Для дальнейшего изучения выберем классический алгоритм Кохонена.

    Алгоритм Кохонена

    Алгоритм Кохонена относится к наиболее старым алгоритмам обучения сетей с самоорганизацией на основе конкуренции, и в настоящее время существуют различные его версии. В классическом алгоритме Кохонена сеть инициализируется путем приписывания нейронам определенных позиций в пространстве и связывания их с соседями на постоянной основе. Такая сеть называется самоорганизующейся картой признаков (сеть SOFM - Self-Organizing Feature Map). В момент выбора победителя уточняются не только его веса, но также и веса его соседей, находящихся в ближайшей окрестности. Таким образом, нейрон-победитель подвергается адаптации вместе со своими соседями. В классическом алгоритме Кохонена функция соседства $$G(i,x)$$ определяется в виде

    $$G(i,x) = \{1 \mbox{ для }d(i,I)\leqslant L, 0 \mbox{ для }d(i,I) > L \}.$$

    В этом выражении $$d(i,I)$$ обозначает эвклидово расстояние между векторами весов нейрона-победителя $$I$$ и $$i$$ -го нейрона. Коэффициент $$L$$ выступает в роли уровня соседства, его значение уменьшается в процессе обучения до нуля. Соседство такого рода называется прямоугольным.

    Другой тип соседства, часто применяемый в картах Кохонена, - это соседство гауссовского типа, при котором функция $$G(i,x)$$ задается формулой

    $$G(i,x) = exp(-d^2(i,x)/2 \lambda^2).$$

    Степень адаптации нейронов-соседей определяется не только евклидовым расстоянием между $$i$$ -м нейроном и победителем ( $$I$$ -м нейроном), но также и уровнем соседства $$\lambda.$$ В отличие от соседства прямоугольного типа, где каждый нейрон, находящийся в окрестности победителя, адаптировался в равной степени, при соседстве гауссовского типа уровень адаптации различен и зависит от значения функции Гаусса. Как правило, гауссовское соседство дает лучшие результаты обучения и обеспечивает лучшую организацию сети, чем прямоугольное соседство.

    Самоорганизующаяся карта признаков проходит два этапа обучения. На первом этапе элементы упорядочиваются так, чтобы отражать пространство входных элементов, а на втором происходит уточнение их позиций. Как правило, процесс представляется визуально путем использования двумерных данных и построения соответствующей поверхности. Например, входные векторы выбираются случайным образом на основе однородного распределения в некотором квадрате, и начинается обучение карты. В определенные моменты в ходе обучения строятся изображения карты путем использования соответствия, показанного на рис. 1. Элементы соединяются линиями, чтобы показать их относительное размещение. Сначала карта выглядит сильно "измятой", но постепенно в ходе обучения она разворачивается и расправляется. Конечным результатом обучения является карта, покрывающая все входное пространство и являющаяся достаточно регулярной (т.е. элементы оказываются распределенными почти равномерно). Для примера была рассмотрена карта с топологией квадрата из 49 элементов, и для 250 точек данных, взятых из единичного квадрата, было проведено ее обучение, которое начиналось со случайного набора весовых значений, задающих размещение кластерных элементов в центре входного пространства, как показано на рис. 1. На рис. 2 и 3 иллюстрируется процесс разворачивания карты с течением времени. Как и для других типов сетей, в данном случае результат обучения зависит от учебных данных и выбора параметров обучения.

    (рис 2) Весовые векторы инициализируются случайными значениями из диапазона 0.4-0.6(рис 1) Карта по прошествии 20 итераций(рис 3) Карта незадолго до окончания обучения. Элементы теперь упорядочены, и карта станет еще более регулярной по окончании финальной фазы сходимости

    Применение сетей с самоорганизацией

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

    Компрессия данных

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

    Пусть изображение разделяется на одинаковые кадры размером $${n_x \times n_y}$$ пикселов. Образующие кадр пикселы представляют собой компоненты входного вектора $$x.$$

    Сеть с самоорганизацией содержит $$n$$ нейронов, каждый из которых имеет входом вектор $$x.$$ Обучение сети при помощи одного из алгоритмов самоорганизации состоит в подборе таких весов конкретных нейронов, при которых минимизируется погрешность квантования (3). В результате обучения формируется структура сети, при которой вектору $$x$$ каждого кадра соответствует вектор весов нейрона победителя. В процессе предъявления очередного кадра выбирается номер нейрона-победителя. Номера нейронов-победителей образуют кодовую таблицу, а веса этих нейронов представляют средние значения, соответствующим конкретным компонентам вектора $$x$$ (т.е. уровням интенсивности пикселов, составляющих кадр).

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

    $$\begin{align*} K = N \cdot n_x n_y T/(N \cdot \lg_2 n + n \cdot n_x n_y t), \end{align*} $$

    где $$n_x$$ и $$n_y$$ - размеры кадра в осях $$x$$ и $$y, N$$ - количество кадров, $$n$$ - количество нейронов, а $$T$$ и $$t$$ - количество битов для представления соответственно градаций интенсивности пиксела и значений весов. Этот подход позволяет получить степень компрессии изображений порядка 16 при значении коэффициента сигнал/шум (PSNR) около 26-28 дБ.

    Прогнозирование нагрузок энергетической системы

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

    $$\begin{align*} p_j = [p(j,1),p(j,2), \ldots, p(j,24)], \end{align*} $$

    где компонент $$p(j,k)$$ соответствует действительной нагрузке в $$k$$ -й час суток. Множество профильных векторов подается на вход сети Кохонена, состоящей из $$n$$ нейронов. Процесс самоорганизации сети приводит к автоматической кластеризации данных и к сопоставлению каждому кластеру одного из нейронов сети. Этот нейрон считается победителем, а его веса наилучшим образом адаптируются к усредненным весам профильных векторов, составляющих кластер. Характерная особенность состоит в том, что соседние векторы имеют сходные профильные характеристики.

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

    Знание таблицы распределения побед конкретных нейронов сети позволяет относительно легко предвидеть профили часовых нагрузок для произвольного дня года. С этой целью создаются таблицы принадлежности каждого дня года к области доминирования определенного нейрона с обозначением количества его побед для всех дней в прошлом. Для выбора прогнозируемого профиля нагрузок актуального дня в требуемом месяце рассчитываются усредненные значения весов нейронов победителей, которые указывали в прошлом на требуемый день. Если количество побед $$i$$ -го нейрона, соответствующего $$j$$ -му дню, обозначить $$k_{ji}$$, а соответствующие векторы весов класса - $$w_i$$, то прогнозируемый профильный вектор $$j$$ -го дня рассчитывается по формуле

    $$\begin{align*} p_j = \sum_{i=1}^n k_{ji} w_i / \sum_{i=1}^n k_{ji} \end{align*} $$
    Вернуться к учебному плану