Линейная модель

Линейная модель

Шокуров Антон В.
shokurov.anton.v@yandex.ru
http://машинноезрение.рф

18 марта 2017 г.

Версия: 0.10

Аннотация

Линейная регрессия. Показан традиционный способ. Вводится понятие классификации и соответствующая модель – персептрон.

Предварительная версия!

1 Линейная модель

В первом подразделе описывается линейная регрессия. Во втором основа нейронной сети – персептрон.

1.1 Линейная регрессия

Целью является приближение данных линейной функцией.

Линейной пространство Искомое параметрическое множество функций задается как g(x,𝜃) = j=1j=m𝜃jej(x), 𝜃 = (𝜃1,...,𝜃m). В качестве функций ej можно взять любые функции. Например ej(x) = xj1 или ej(x) = sin((j 1)x).

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

Также можно считать, что они с самого начала были выбраны экспертом при построении параметрического пространства, т.е. они есть суть функции φ. В последнем случае уравнение сводится просто к линейной функции:

g(x,𝜃) = j=1j=n𝜃 jxj,

где 𝜃 = (𝜃1,...,𝜃m).

Если подставить обучающее множество в исходное уравнение, то получим систему уравнений: yi = j=0j=m𝜃jej(xi). Замечу, что выражение ej(xj) является числом, поэтому – это система линейных уравнений относительно параметров 𝜃j.

При определенных условия – что является предметом изучения курса по линейной алгебры – данная система имеет решение.

Если m = n, то это задача интерполяции. При интерполяции построенная функция f̃ проходит через исконное множество точек точно. т.е. функция качества будет равна 0. Насколько это важно вопрос спорный. Может быть так, что как раз на тестовом множестве будет достигнут худший вариант.

Если взять ej(x) = xj, то получим задачу поиска многочлена проходящего через заданные точки. Вместо того, чтобы составлять систему уравнений и её решать, что подразумевает обращение матрицы – задача крайней неблагодарная – можно решить задачу иначе ... можно построить решение явным образом.

Например, используя интерполяционные многочлены Лагранжа. Положим ej(x) = kj xxk xjxk, тогда она будет себя вести как индикаторная функция, а именно – при ji получим ej(xi) = 0, в тоже время ej(xj) = 1. Поэтому 𝜃 = (y1,...,yn), т.е. g(x,𝜃) = L(x) = j=0m1yjej(x).

Неудобна...

Формула Ньютона...

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

1.2 Аппроксимация

Традиционно, пусть минимизация будет производится в среднеквадратичном смысле.

Двумерный случай Рассмотрим самый простой случай. Пусть e0(x) = a, e1(x) = ax, т.е. будем приближать данные линейной функцией. Причем, у нас один единственный признак (n = 1). Данными являются пары числе (xi,yi)i=1i=l, где xi,yi R. С геометрической точки зрения это точки на плоскости.

В таком случае мы хотим минимизировать:

(X,Y ;a,b) = i=1i=l(a + bx i yi)2.

Таким образом мы используем среднеквадратичное расстояние. Известно, что его можно решить точно. Более того это можно сделать используя школьный уровень, а именно –

(X,Y ;a,b) = i=1i=la2+ i=1i=l(bx i)2+ i=1i=ly i2+2 i=1i=labx i2 i=1i=lay i2 i=1i=lbx iyi =

= na2+b2 i=1i=lx i2+ i=1i=ly i2+2ab i=1i=lx i2a i=1i=ly i2b i=1i=lx iyi.

Пусть

x̄ = i=1i=lxi l ,ȳ = i=1i=lyi l ,z̄ = i=1i=lxiyi l

и

x̂ = i=1i=lxi2 l ,ŷ = i=1i=lyi2 l .

Тогда

(X,Y ;a,b) = la2 + b2lx̂ + lŷ + 2ablx̄ 2alȳ 2blz̄.

Следовательно

(X,Y ;a,b) l = a2 + b2x̂ + ŷ + 2abx̄ 2aȳ 2bz̄.

Дополнив выражение константами можно выделить полный квадрат относительно каждой из переменных. Последнее позволит минимизировать выражение относительно двух переменных.

Относительно a (считаем b константой):

(a + bx̄ ȳ)2.

Последнее означает, что если для параметра b уже найдено оптимальное выражение, то a нужно выбрать минимизировав данный квадрат, т.е. потребовав

a + bx̄ ȳ = 0.

По аналогии, относительно b (считаем a константой):

x̂(b + ax̄ z̄ x̂ )2

и соответственно:

b + ax̄ z̄ x̂ = 0.

Последние два требования сводятся к линейной системе

a + x̄b ȳ = 0 x ̂ b + x ̄ a z ̄ = 0.

Решив систему, находим значения a и b.

Общий случай Есть точки в n-мерном пространстве. Есть значение ассоциированное с каждой из точек. Необходимо построить линейную функцию приближающую эти данные.

На математическом языке, есть уравнение: Ax = bAx b = 0. Хотим решить в среднеквадратичном смысле, т.е. минимизировать (Ax b)T(Ax b) = 0.

Напомним правило взятия производной у матриц....

Возьмем производную по x: AT(Ax b) + AT(Ax b) = 2C, где C = AT(Ax b). Тогда из равенства производной 0 следует, что 2C = 0 = C = 0. Следовательно верно:

AT(Ax b) = 0ATAx ATb = 0ATAx = ATb.

Тогда x = (ATA)1ATb. Пусть A+ = (ATA)1AT, искомый ответ представляется в виде x = A+b. Напомню, что для обычных уравнений ответ записывается в виде: x = A1b. В этом смысле матрица A+ считается псевдо обратной к A.

Общий Сначала для общего случае. Тогда справедливо:

min𝜃 i=1i=l(y i g(xi,𝜃))2 i=1i=l2(y i g(xi,𝜃))g(xi,𝜃) 𝜃j = 0.

Если

g(xi,𝜃) 𝜃j const

то тогда описанный данный подход не применим. Нужно действовать иначе: градиент.

В более общем случае не получится:

1.3 Классификация

В первой лекции было указано, что признак соответствующий классам задаются конечным множеством элементов. Например: {1,...,N}. Такой подход неизбежно приводит к тому, что классы обрабатываются не равнозначно/равносильно. Так, 1 самое маленькое число, а N – большое. У крайних чисел чисел (1 и N) по одному непосредственному соседу, а у других чисел (классов) их 2. Можно применить к классам операцию больше и меньше, в частности, можно выделить два суперкласса: {1...k} и {k + 1...N}, что опять же будет препятствовать честному обучению.

Итог. Лучше заменить данный признак на N бинарных, каждый их которых способен отделить друг от друга только два класса. Фактически дать ответ на вопрос Да/Нет относительно принадлежности данному классу. Конечно может быть неоднозначность, когда два или более бинарных признаков дадут ответ Да.

Итого, классификация сводится к изучению бинарных классификаторов. Без ограничения общности, можно считать, что обучающая выборка будет содержать y из множества {1,1} и в соответствии с этим при f(x) > 0 ответ Да, а при f(x) < 0 ответ Нет. Тогда нетрудно видеть, что для правильно спрогнозированного ответа верно:yf(x) > 0.

1.4 Персептрон

Модель: семейство функций и алгоритм поиска минимума. Из биологии.

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

Опишем устройство мозга в рамках вышесказанного. Мозг состоит из так называемых нейронов – узлов, которые передают друг другу электро-импульсы. Вся суть заключается в топологи – устройстве соединения нейронов друг с другом – и способе преобразования входных импульсов в выходные.

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

Внутреннее устройство нейрона является черной коробкой, но считается крайне простым. Считается, что нейрон комбинируя входные нейроны выстреливает свой сигнал в выходное.

Обучение за счет соединений, точнее адаптации силы подсоединения к другим нейронам. В биологии все устроено сложнее, но нам это не важно как уже было сказано ранее.

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

f(x1,x2,...,xn).

А в учитывая то, что мы хотим получить максимально простую функцию, то нет ничего проще линейной функции:

f(x1,x2,...,xn) = i=1i=nω ixi + ω0,

где ω = (ω0,ω1,...,ωn) – параметр характеризующий функцию. Ответ нейрона мы будет интерпретировать знаком функции. В случае положительного знака считаем, что нейрон относит данный объект к + объектам, в случае отрицательного – к - объектам. При равенстве функции – считаем что имеет место неопределенность.

Для упрощения записи функции, можно считать, что например есть фиктивный признак (x0) всегда равный 1, тогда формулу можно записать в виде:

f(x1,x2,...,xn) = i=1i=nω ixi + ω0x0 = i=0i=nω ixi =< ω,x >,

где последнее является скалярным произведением векторов x = (x0,x1,...,xn) и (ω0,ω1,...,ωn). Иногда будет использована такая форма для сокращения записи.

Семейство функций есть. Как же устроен алгоритм обучения. Их может быть много. Рассмотрим традиционный.

Как было уже написано выше, знак величины

f(x1,x2,...,xn) = i=1i=nω ixi + ω0,

определяет принадлежность к определенному классу. Если взять пример пары (xj,yj), где xj – вектор признаков j-примера, а yj – ответ для j-примера (т.е. значение + 1 или 1). Тогда согласно ранее описанному в случае, если персептрон не ошибается будет истинно:

f(x1j,x 2j,...,x nj)yj > 0.

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


Algorithm 1: Шаг персептрона
 a i=1i=nωixij + ω0j
 if ayj 0 then
  ω w + yjxj
  ω0 ω0 + yj
 end if

Данные алгоритм вызывается для всех точек. Порядок пока будем считать не важным.

Покажем, что при таком обучении действительно можно ожидать настройки параметров под модель. Без ограничения общности можно считать, что нашим примером является (x,1). Тогда a < 0. Что будет если посчитать значение этого примера на обновленных параметрах? Будет следующее:

á = i=1i=nώ ixi+ώ0 = i=1i=n(ω i+xi)xi+ω0+1 = i=1i=nω ixi+ω0+ i=1i=nx i2+1 =

= a + i=1i=nx i2 + 1 > a.

Последнее показывает, что á увеличивается как минимум на 1 относительно a. Поэтому есть шанс того, что оно может стать больше 0 и тогда нейрон будет правильно классифицировать данный пример. Но конечно не ясно, какой будет результат давать нейрон при новых параметрах на других примерах, в частности тех, на которых ранее давался правильный ответ.

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

Пусть пока w0 = 0. Рассмотрим некое ω = (ω1,...,ωn). Построим множество x = (x1,...,xn)ов:

= {x| i=1i=nω ixi = 0}.

Учитывая, что i=1i=nωixi есть < w,x >, и вспоминая смысл равенства скаляра 0 следует, что множество состоит из векторов перпендикулярных вектору ω:

ω, = {x|x ω}.

В двумерном случае, есть вектор перпендикулярный вектору ω, в трехмерном (как и выше) это уже называется плоскостью (гиперплоскостью).

Заметим, что ω 2ω, т.е. определение множества не зависит от масштаба вектора ω. Поэтому для определенности можно положить его норму равной 1:ω = 1.

Если ω = 1, то a =< x,ω > есть величина проекции вектора x на ω. Тогда все вектора x, в частности, все входные данные подвергаются данной проекции. Фактически мы строи новый признак равный некоторой взвешенной сумме имеющихся признаков. В таком случае задачу разделения двух множеств будет сводится к поиску точки раздела на оси ω. Эта точка и задается величиной w0.

Сходимость алгоритма Сходимость зависит от данных. Если в принципе такой разделяющей плоскости провести нельзя, то не алгоритм сойдется никогда.

Крайние случаи.

Пример 1. Признаков нет. Тогда можно менять только ω0, которая и будет задавать знак. Если все-таки объекты принадлежать к разным классам, то такое b, чтобы эти два класса разделить, подобрать не удасться.

Пример 2. Нельзя разделить прямой объекты:

+

+

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

δ(X,w) = minj=1j=lyj(< w,xj > +ω 0),если ω линейно разделяет X., иначе .

δ = δ(X) = supωδ(X,w).

Ясно, что если X не разделима, то δ = .

Теорема. Если δ > 0, x X x 1, то предложенный ранее алгоритм сойдется за не более чем за 1 δ2 обновлений.

Док-во. Раз δ > 0, то x и ω, которые реализуют δ, т.е.

x X,w < w,x > +ω0 δ =< w,x > +ω 0.

Пусть ω(0) начальное значение вектора параметра итерационного процесса алгоритма. Тогда на k шаге раз w(k) обновили, то была ошибка на прошлом шаге на неком примере x, т.е. y < w(k1),x >< 0. По построению алгоритма w(k) = w(k1) + yx. Вычислим

< w,w(k) >=< w,w(k1) + yx >=< w,w(k1) > + < w,yx >

< w,w(k1) > +δ,

т.е. проекция вектора wk на правильный вектор постепенно увеличивается:

< w,w(k) >> kδ.

Теперь необходимо понять вектор w(k) увеличивает свой размер вдоль вектора w или нет. Для этого оценим скорость роста самого вектора ω(k).

w(k)2 = ω(k1) + yx2 = ω(k1)2 + y2x2 + 2y < ω(k1),x >

учитывая, что |y| = 1, x 1 и вспоминая, что y < ω(k1),x >< 0:

ω(k1)2 + 1 + 0.

Откуда ω(k)2 k.

Тогда

k ω(k)< w,w(k) > kδ.

Откуда k kδ. Следовательно k 1 δ2 . ЧТД.