Зачастую, во время работы с нейронными сетями, перед нами встает задача в построении линейных решающих функций (ЛРФ) для разделения классов, содержащих наши образы.
![Алгоритм НСКО (алгоритм Хо-Кашьяпа) - 1 Алгоритм НСКО (алгоритм Хо-Кашьяпа) - 1](https://www.pvsm.ru/images/2016/10/13/algoritm-nsko-algoritm-ho-kashyapa.jpg)
Рисунок 1. двумерный случай
Один из методов, позволяющих решить нашу проблему, это алгоритм наименьшей среднеквадратичной ошибки (НСКО алгоритм).
Интерес данный алгоритм представляет не только в том, что он помогает построить необходимые нам ЛРФ, а в том, что при возникновении ситуации, когда классы линейно неразделимы, мы можем построить ЛРФ, где ошибка неправильной классификации стремится к минимуму.
![Алгоритм НСКО (алгоритм Хо-Кашьяпа) - 2 Алгоритм НСКО (алгоритм Хо-Кашьяпа) - 2](https://www.pvsm.ru/images/2016/10/13/algoritm-nsko-algoritm-ho-kashyapa-2.jpg)
Рисунок 2. линейно неразделимые классы
Далее перечислим исходные данные:
— обозначение класса (i — номер класса)
— обучающая выборка
— метки( номер класса к которому относится образ
)
— скорость обучения (произвольная величина)
Этой информации нам более чем достаточно для построения ЛРФ.
Перейдем непосредственно к самому алгоритму.
Алгоритм
1 шаг
а) переводим в систему
, где
равен
, у которого в конце приписан класс образа
Например:
Пусть задан образ .
Тогда
, если
из 1 класса
, если
из 2 класса
б) строим матрицу размерностью Nx3 которая состоит из наших векторов
в) строим
г) считаем где
произвольный вектор(по умолчанию единичный)
д) (номер итерации)
2 шаг
Проверяем условие останова:
Если то «СТОП»
иначе — переходим к шагу 3
3 шаг
а) (где + это функция Хэвисайда)
Например(функция Хэвисайда):
(если
)
(если
или
)
После подсчетов меняем номер итерации:
б) переходим на шаг 2
Пример работы алгоритма НСКО
принадлежат 1 классу
принадлежат 2 классу
а)
б)
в)
г)
д)
, т.к. все элементы
«СТОП»
Завершили работу алгоритма, и теперь можно подсчитать нашу ЛРФ.
Спасибо parpalak за онлайн редактор.
Спасибо за внимание.
Автор: nairnbru007