logo
Романов В

Кодирование выходных значений

Задача классификации при наличии двух классов может быть решена на сети с одним нейроном в выходном слое, который может принимать одно из двух значений 0 или 1 в зависимости от того, к какому классу принад­лежит образец. При наличии нескольких классов возникает проблема, свя­занная с представлением этих данных для выхода сети. Наиболее простым способом представления выходных данных в таком случае является вектор, компоненты которого соответствуют различным номерам классов. При этом i-я компонента вектора соответствует i-му классу. Все остальные компоненты при этом устанавливаются в О. Тогда, например, второму классу будет соответствовать 1 на 2 выходе сети и 0 на остальных. При интерпретации результата обычно считается, что номер класса определяет­ся номером выхода сети, на котором появилось максимальное значение. Например, если в сети с тремя выходами, мы имеем вектор выходных зна­чений (0,2; 0,6; 0,4), и видим, что максимальное значение имеет вторая

компонента вектора, значит класс, к которому относится этот пример, - 2.

При таком способе кодирования иногда вводится также понятие уверенно­сти сети в том, что пример относится к этому классу. Наиболее простой способ определения уверенности заключается в определении разности ме­жду максимальным значением выхода и значением другого выхода, кото­рое является ближайшим к максимальному. Например, для рассмотренного выше примера уверенность сети в том, что пример относится ко второму классу, определится как разность между второй и третьей компонентой вектора и равна 0.6-0.4=0.2. Соответственно, чем выше уверенность, тем больше вероятность того, что сеть дала правильный ответ. Этот метод ко­дирования является самым простым, но не всегда самым оптимальным способом представления данных.

Известны и другие способы. Например, выходной вектор представляет собой номер кластера, записанный в двоичной форме. Тогда при наличии 8 классов нам потребуется вектор из 3 элементов, и, скажем, 3 классу будет соответствовать вектор 011. Но при этом в случае получения неверного зна­чения на одном из выходов мы можем получить неверную классификацию (неверный номер кластера), поэтому имеет смысл увеличить расстояние ме­жду двумя кластерами за счет использования кодирования выхода по коду Хемминга, который повысит надежность классификации.

Другой подход состоит в разбиении задачи с k классами на k*(k-I)/2 подзадач с двумя классами (2 на 2 кодирование) каждая. Под подзадачей в данном случае понимается то, что сеть определяет наличие одной из ком­понент вектора. Т.е. исходный вектор разбивается на группы по два ком­понента в каждой таким образом, чтобы в них вошли все возможные ком­бинации компонент выходного вектора. Число этих групп можно опреде­лить как количество неупорядоченных выборок по два из исходных ком­понент

Тогда, например, для задачи с четырьмя классами мы имеем 6 выходов (подзадач), распределенных следующим образом:

№подзадач и (выхода)

Компоненты выхода

1

1-2

2

1-3

3

1-4

4

2-3

5

2-4

6

3-4

Где 1 на выходе говорит о наличии одной из компонент. Тогда мы можем перейти к номеру класса по результату расчета сетью следующим образом: определяем, какие комбинации получили единичное (точнее близкое к еди­нице) значение выхода (т.е. какие подзадач и у нас активировались), и счита­ем, что номер класса будет тот, который вошел в наибольшее количество активированных подзадач (см. таблицу).

№ класса

Акт. выходы

1

1,2,3

2

1,4,5

3

2,4,6

5

3,5,6

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