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

Мы рассмотрим процедуру обучения машин на основе методов потенциальных функций, который изложен в отличной книге М.А. Айзерман, Э.М. Браверман, Л.И. Розоноэр, «Метод потенциальных функций в теории обучения машин», М.: «Наука», 1970.

potential

Заметим, что есть два принципиальных способов обучения:

  • обучение с учителем
  • самообучение

Метод потенциальных функций работает в задачах автоматической классификации, распознавания образов. Предполагается, что каждый объект описывается точкой в некотором пространстве X. Мы будем предполагать, что множество X является метрическим пространством, т.е. для любой пары точек в этом пространстве определено расстояние (метрика) r(x,y). При этом каждая точка этого множества принадлежит одному из классов — A или B. Задача состоит в том, чтобы научить программу определять класс любой точки.

Введем функцию P(r), которая будет напоминать по своим свойства потенциал. Эта функция будет зависеть от неотрицательного аргумента r и обладать свойствами:

  • при r=0 функция P имеет глобальный максимум
  • с ростом r функция быстро убывает до нуля

Примерами таких функций могут быть функции вида

CodeCogsEqn

Далее мы строим функцию

CodeCogsEqn (2)

Рассмотрим процесс обучения с учителем. В этом случае мы сообщаем машине два множества элементов: ZA, содержащее некоторое количество элементов из класса A и ZB, содержащее элементы из множества B. Количество элементов в этих множествах может быть различным, но чем богаче эти множества, тем лучше будет результат обучения.

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

CodeCogsEqn (3)

Если новый элемент x принадлежит классу A, то более вероятно, что этот элемент будет близким в элементам множества ZA, и  соответственно первая функция будет иметь большее значение, чем вторая. Поэтому для проведения процедуры автоматической классификации мы введем сепараторную функцию по формуле

CodeCogsEqn (4)

И будем относить элемент x к классу A, если сепараторная функция положительна, и к классу B, если она отрицательная.

Рассмотрим простейший пример использования этого подхода. В качестве множества X возьмем отрезок [-1,1], в котором будет два класса A — положительные числа и класс B — отрицательные числа. Множества для обучения сформируем, использую генератор случайных чисел. Реализацию этой схемы Вы можете скачать по ссылкам:

проект на языке C#

готовая программа

В этой программе можно задать значение параметра a, которое по умолчанию = 1, после обучения можно тестировать числа.

В следующих наших заметках мы расскажем о самообучении машин.