Однослойные сети RBF для решения задач регрессии (пример)

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
(Пример 3)
(Исходный код)
 
(25 промежуточных версий не показаны.)
Строка 1: Строка 1:
-
'''Радиальная функция''' это функция <tex>f(x)</tex>, зависящая только от расстояния между <tex>x</tex> и фиксированной точкой пространства <tex>X</tex>.
+
Цель работы - решить задачу регрессии с помощью сети радиальных базисных функций и исследовать некоторые свойства алгоритма.
 +
 
 +
'''Радиальная функция''' - это функция <tex>f(x)</tex>, зависящая только от расстояния между <tex>x</tex> и фиксированной точкой пространства <tex>X</tex>.
В данной работе используются гауссианы <tex>p_j(x) = N(x; \mu _j ,\Sigma _j)</tex>, которые можно представить в виде <tex>p_j(x) = N_j exp(-\frac{1}{2} \rho _j (x, \mu _j)</tex> <br />
В данной работе используются гауссианы <tex>p_j(x) = N(x; \mu _j ,\Sigma _j)</tex>, которые можно представить в виде <tex>p_j(x) = N_j exp(-\frac{1}{2} \rho _j (x, \mu _j)</tex> <br />
-
где <tex>N_j = (2\pi)^ {-\frac{n}{2}}(\sigma _{j1}, \dots ,\sigma _{jn})^{-1}</tex> нормировочный множитель,<br />
+
где <tex>N_j = (2\pi)^ {-\frac{n}{2}}(\sigma _{j1}, \dots ,\sigma _{jn})^{-1}</tex> - нормировочный множитель,<br />
-
<tex>\rho _j(x, x')</tex> взвешенная евклидова метрика в <tex>n</tex>-мерном пространстве <tex>X</tex>:<br />
+
<tex>\rho _j(x, x')</tex> - взвешенная евклидова метрика в <tex>n</tex>-мерном пространстве <tex>X</tex>:<br />
<tex>~\rho (x, x') = \sum ^n _{d = 1} \sigma ^{-2} _{jd} |\xi _d - \xi _d '| </tex>, <br />
<tex>~\rho (x, x') = \sum ^n _{d = 1} \sigma ^{-2} _{jd} |\xi _d - \xi _d '| </tex>, <br />
<tex> x = (\xi _1, . . . ,\xi _n), x' = (\xi _1 ', . . . , \xi _n')</tex>. <br />
<tex> x = (\xi _1, . . . ,\xi _n), x' = (\xi _1 ', . . . , \xi _n')</tex>. <br />
Строка 11: Строка 13:
Задана выборка — множество <tex>X^N=\{{x}_1,\ldots,{x}_N|x\in\R^M\}</tex> значений свободных переменных и множество <tex>\{y_1,\ldots, y_N| y\in\R\}</tex> соответствующих им значений зависимой переменной. Предполагается, что на множестве объектов задана плотность распределения <tex>p(x)</tex>, представимая в виде смеси распределений - <tex>k</tex> гауссиан с параметрами
Задана выборка — множество <tex>X^N=\{{x}_1,\ldots,{x}_N|x\in\R^M\}</tex> значений свободных переменных и множество <tex>\{y_1,\ldots, y_N| y\in\R\}</tex> соответствующих им значений зависимой переменной. Предполагается, что на множестве объектов задана плотность распределения <tex>p(x)</tex>, представимая в виде смеси распределений - <tex>k</tex> гауссиан с параметрами
<tex>\mu_j</tex> и <tex>\Sigma_j</tex>:
<tex>\mu_j</tex> и <tex>\Sigma_j</tex>:
-
<tex>p(x) = \sum_{i=1}^k w_jp_j(x) = \sum_{i=1}^k w_jN(x;\mu_j,\Sigma_j).</tex> <br />
+
<tex>p(x) = \sum_{j=1}^k w_jp_j(x) = \sum_{j=1}^k w_jN(x;\mu_j,\Sigma_j).</tex> <br />
<tex>N(x;\mu_j,\Sigma_j) = \frac{1}{\sqrt{(2\pi)^ndet\Sigma_j}}e^{-\frac{1}{2}(x-\mu_j)\Sigma_j^{-1}(x-\mu_j)^{T}}</tex> <br />
<tex>N(x;\mu_j,\Sigma_j) = \frac{1}{\sqrt{(2\pi)^ndet\Sigma_j}}e^{-\frac{1}{2}(x-\mu_j)\Sigma_j^{-1}(x-\mu_j)^{T}}</tex> <br />
Требуется решить задачу регрессии с помощью однослойной сети RBF, параметрами которой являются <br />
Требуется решить задачу регрессии с помощью однослойной сети RBF, параметрами которой являются <br />
Строка 30: Строка 32:
Если число компонент смеси заранее неизвестно, то применяется EM-алгоритм с последовательным добавлением компонент. Его идея заключается в том, что если данные описаны смесью <tex>k</tex> компонент, то можно добавить в смесь <tex>(k+1)</tex>-ю компоненту, построенную на плохо описанных элементах. <br />
Если число компонент смеси заранее неизвестно, то применяется EM-алгоритм с последовательным добавлением компонент. Его идея заключается в том, что если данные описаны смесью <tex>k</tex> компонент, то можно добавить в смесь <tex>(k+1)</tex>-ю компоненту, построенную на плохо описанных элементах. <br />
-
Элемент <tex>x_i</tex> считается плохо описанным, если его правдободобие <tex>p(x_i)<=\frac{\max_i {\{p(x_i)\}}}{R}</tex>, <tex>R</tex> - параметр. <br />
+
Элемент <tex>x_i</tex> считается плохо описанным, если его правдободобие <tex>p(x_i)<\frac{\max_i {\{p(x_i)\}}}{R}</tex>, <tex>R</tex> - параметр. <br />
Далее на смеси из <tex>(k+1)</tex>-ой компоненты запускается EM-алгоритм.
Далее на смеси из <tex>(k+1)</tex>-ой компоненты запускается EM-алгоритм.
Строка 58: Строка 60:
[[Изображение:regression1.png|500px]]
[[Изображение:regression1.png|500px]]
-
Результат разделения смеси распределений(середина полосы-центр класса, полуширина - корень из дисперсии класса):
+
Результат разделения смеси распределений (середина полосы-центр компоненты <tex>\mu_j</tex>, полуширина - корень из дисперсии компоненты <tex>\sigma_j</tex>, координата по оси <tex>y</tex> - значение зависимой переменной в центре компоненты <tex>Y_j</tex>):
[[Изображение:components1.png|500px]]
[[Изображение:components1.png|500px]]
Строка 67: Строка 69:
[0.2257; 0.1908; 0.3537; 0.2299] - веса. <br />
[0.2257; 0.1908; 0.3537; 0.2299] - веса. <br />
-
Вторая и третяя компоненты совпадают, т.е. на самом дела найдено всего 3 компоненты, одна из которых разбита на 2. Дальнейшее разделение смеси приводит только к большему разделению этой компоненты. <br />
+
Вторая и третья компоненты совпадают, т.е. на самом дела найдено всего 3 компоненты, одна из которых разбита на 2. Дальнейшее разделение смеси приводит только к большему разделению этой компоненты. <br />
Плохо описанные элементы на следующем шаге(синим цветом):
Плохо описанные элементы на следующем шаге(синим цветом):
[[Изображение:bad elements.png|500px]]
[[Изображение:bad elements.png|500px]]
 +
 +
Видно, что центр новой компоненты из плохо описанных элементов попадает в точку <tex>2.5</tex>, и в результате EM-итераций новя компонента не отделяется от уже существующих там второй и третей компонент.
===Пример 2===
===Пример 2===
Строка 86: Строка 90:
[[Изображение:bad elements2.png|500px]]
[[Изображение:bad elements2.png|500px]]
-
Как видно, совпадения компонент уже нет. Но дальнейшее разделение смеси невозможно, т.к. ковариационная матрица оказалась вырожденной, а для подсчета правдободобия требуется ее обращать.
+
Как видно, совпадения компонент уже нет. Но дальнейшее разделение смеси невозможно, т.к. ковариационная матрица одной из компонент <tex>\Sigma_j</tex> оказалась вырожденной, а для подсчета правдободобия требуется ее обращать.
===Пример 3===
===Пример 3===
Строка 99: Строка 103:
[[Изображение:components3.png|500px]]
[[Изображение:components3.png|500px]]
-
На следующей диаграмме покажем кластеризацию на основе разделения смеси: каждый элемент <tex>x_i</tex> отнесен к компоненте <tex>j_i</tex>, вероятность принадлежности которой максимальная с учетом весов, т.е.
+
На следующем графике покажем кластеризацию на основе разделения смеси: каждый элемент <tex>x_i</tex> отнесен к компоненте <br />
 +
<tex>j_i</tex>, вероятность принадлежности к которой максимальна с учетом весов, т.е. <br />
<tex>j_i=arg \max_{j=1\ldots k} \{w_jp_j(x_i)\}</tex>, <tex>i=1\ldots N</tex>.
<tex>j_i=arg \max_{j=1\ldots k} \{w_jp_j(x_i)\}</tex>, <tex>i=1\ldots N</tex>.
[[Изображение:clasterization3.png|500px]]
[[Изображение:clasterization3.png|500px]]
 +
 +
Видно, что для лучшего восстановления регрессии требуется продолжить разделение смеси, в частности, разделить изображенные на рисунке красным и желтым цветом компоненты на несколько.
== Исходный код ==
== Исходный код ==
Скачать код MATLAB можно здесь:
Скачать код MATLAB можно здесь:
-
[https://mlalgorithms.svn.sourceforge.net/svnroot/mlalgorithms/Single-layer_RBF/RBFlearn.m RBFlearn.m ],
+
[https://mlalgorithms.svn.sourceforge.net/svnroot/mlalgorithms/Group774/Kononenko2010SingleLayerRBF/RBFlearn.m]
-
[https://mlalgorithms.svn.sourceforge.net/svnroot/mlalgorithms/Single-layer_RBF/calculationYm.m calculationYm.m ],
+
-
[https://mlalgorithms.svn.sourceforge.net/svnroot/mlalgorithms/Single-layer_RBF/EMk.m EMk.m ],
+
-
[https://mlalgorithms.svn.sourceforge.net/svnroot/mlalgorithms/Single-layer_RBF/probabilityCalculation.m probabilityCalculation.m ],
+
-
[https://mlalgorithms.svn.sourceforge.net/svnroot/mlalgorithms/Single-layer_RBF/RBFregression.m RBFregression.m]
+
== См. также ==
== См. также ==
Строка 122: Строка 125:
== Литература ==
== Литература ==
* Хайкин, Саймон. Нейронные сети: полный курс, 2-е изд., испр. : Пер. с англ. - М. : ООО "И.Д. Вильямс", 2006. - 1104 с. : ил. - Парал. тит. англ. ISBN 5-8459-0890-6 (рус.)
* Хайкин, Саймон. Нейронные сети: полный курс, 2-е изд., испр. : Пер. с англ. - М. : ООО "И.Д. Вильямс", 2006. - 1104 с. : ил. - Парал. тит. англ. ISBN 5-8459-0890-6 (рус.)
-
* К. В. Воронцов, Лекции по линейным алгоритмам классификации и регрессии
+
* К. В. Воронцов, Лекции по линейным алгоритмам классификации и регрессии[[http://www.machinelearning.ru/wiki/index.php?title=%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%28%D0%BA%D1%83%D1%80%D1%81_%D0%BB%D0%B5%D0%BA%D1%86%D0%B8%D0%B9%2C_%D0%9A.%D0%92.%D0%92%D0%BE%D1%80%D0%BE%D0%BD%D1%86%D0%BE%D0%B2%29]]
-
{{Задание|Кононенко Даниил|В.В.Стрижов|28 мая 2010}}
+
{{ЗаданиеВыполнено|Кононенко Даниил|В.В.Стрижов|28 мая 2010}}
[[Категория:Нейронные сети]]
[[Категория:Нейронные сети]]
[[Категория:Практика и вычислительные эксперименты]]
[[Категория:Практика и вычислительные эксперименты]]

Текущая версия

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

Радиальная функция - это функция f(x), зависящая только от расстояния между x и фиксированной точкой пространства X. В данной работе используются гауссианы p_j(x) = N(x; \mu _j ,\Sigma _j), которые можно представить в виде p_j(x) = N_j exp(-\frac{1}{2} \rho  _j (x, \mu _j)
где N_j = (2\pi)^ {-\frac{n}{2}}(\sigma _{j1}, \dots ,\sigma _{jn})^{-1} - нормировочный множитель,
\rho _j(x, x') - взвешенная евклидова метрика в n-мерном пространстве X:
~\rho (x, x') = \sum ^n _{d = 1} \sigma ^{-2} _{jd} |\xi _d - \xi _d '| ,
 x = (\xi _1, . . . ,\xi _n), x' = (\xi _1 ', . . . , \xi _n').
Сеть радиальных базисных функций - нейронная сеть прямого распространения сигнала, которая содержит промежуточный (скрытый) слой радиально симметричных нейронов. Такой нейрон преобразовывает расстояние от данного входного вектора до соответствующей ему фиксированной точки пространства X по некоторому нелинейному закону, заданному радиальной функцией. В данной статье мы рассмотрим применение этой нейронной сети к решению задачи регрессии с помощью восстановления смесей распределений.

Содержание

Постановка задачи

Задана выборка — множество X^N=\{{x}_1,\ldots,{x}_N|x\in\R^M\} значений свободных переменных и множество \{y_1,\ldots, y_N| y\in\R\} соответствующих им значений зависимой переменной. Предполагается, что на множестве объектов задана плотность распределения p(x), представимая в виде смеси распределений - k гауссиан с параметрами \mu_j и \Sigma_j: p(x) = \sum_{j=1}^k w_jp_j(x) = \sum_{j=1}^k w_jN(x;\mu_j,\Sigma_j).
N(x;\mu_j,\Sigma_j) = \frac{1}{\sqrt{(2\pi)^ndet\Sigma_j}}e^{-\frac{1}{2}(x-\mu_j)\Sigma_j^{-1}(x-\mu_j)^{T}}
Требуется решить задачу регрессии с помощью однослойной сети RBF, параметрами которой являются
k - число компонент смеси,
w_j- веса компонент,
\theta_j=(\mu_j,\Sigma_j) - центры и дисперсия компонент,
y(\mu_j)=Y_j - значения зависимой переменной в центрах компонент.
Смесь распределений требуется восстановить с помощью EM-алгоритма с добавлением компонент.
Таким образом решается задача регрессии с помощью однослойной сети RBF, обучаемой с помощью EM-алгоритма с добавлением компонент.

Описание алгоритма

Разделение смеси рапределений

Настройка параметров RBF-сети происходит с помощью EM-алгоритма с добавлением компонент. Идея EM-алгоритма заключается во введении вспомогательного вектора скрытых переменных G: g_{ij} = P(\theta_j |x_i). С одной стороны, он может быть вычислен, если известны значения вектора параметров \theta, с другой стороны, поиск максимума правдоподобия сильно упрощается, если известны значения скрытых переменных. EM-алгоритм состоит из итерационного повторения двух шагов. На E-шаге вычисляется ожидаемое значение (expectation) вектора скрытых переменных G по текущему приближению вектора параметров \theta. На М-шаге решается задача максимизации правдоподобия (maximization) и находится следующее приближение вектора \theta по текущим значениям векторов G и \theta.

Если число компонент смеси заранее неизвестно, то применяется EM-алгоритм с последовательным добавлением компонент. Его идея заключается в том, что если данные описаны смесью k компонент, то можно добавить в смесь (k+1)-ю компоненту, построенную на плохо описанных элементах.
Элемент x_i считается плохо описанным, если его правдободобие p(x_i)<\frac{\max_i {\{p(x_i)\}}}{R}, R - параметр.
Далее на смеси из (k+1)-ой компоненты запускается EM-алгоритм.

Для более подробного описания см.

Восстановление регрессии

Значения зависимой переменной в центрах компонент
Y_j=y(\mu_j)=\frac{\sum_{i=1}^N y_ip_j(x_i)}{\sum_{i=1}^N p_j(x_i)}
Значение a(x) для произвольного x \in R^m получим, используя формулу Надарая-Ватсона
a(x)=\frac{\sum_{j=1}^k Y_jw_jp_j(x)}{\sum_{j=1}^k w_jp_j(x)}
Эта формула интуитивно очевидна: значение a(x) есть среднее Y_j по центрам компонент с учетом вероятности того, что объект x принадлежит j-ой компоненте смеси.

Вычислительный эксперимент

Эксперименты проводились на модельных данных. x \in R, т.е. один признак. Цель эксперимента - проверить работу описанного алгоритма, исследовать его сходимость.

Пример 1

Задана функция y=x. Выборка X^N сгенерирована случайно согласно следующему распределению: несколько нормальных классов с центрами в точках \mu_j=j, j=1\ldots4 и нормальной дисперсией \sigma_j=0.03. В каждом классе 150 объектов. К значениям y_1,\ldots, y_N добавлен нормальный шум с дисперсией 0.05
Красный цвет - данные, синий - полученная в результате работы алгоритма зависимость y(x)

Результат разделения смеси распределений (середина полосы-центр компоненты \mu_j, полуширина - корень из дисперсии компоненты \sigma_j, координата по оси y - значение зависимой переменной в центре компоненты Y_j):

Найдено 4 компоненты
[4.0402; 2.5110; 2.5089; 0.9861] - центры,
[0.0271; 0.4256; 0.4257; 0.0188] - дисперсии ,
[0.2257; 0.1908; 0.3537; 0.2299] - веса.

Вторая и третья компоненты совпадают, т.е. на самом дела найдено всего 3 компоненты, одна из которых разбита на 2. Дальнейшее разделение смеси приводит только к большему разделению этой компоненты.
Плохо описанные элементы на следующем шаге(синим цветом):

Видно, что центр новой компоненты из плохо описанных элементов попадает в точку 2.5, и в результате EM-итераций новя компонента не отделяется от уже существующих там второй и третей компонент.

Пример 2

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

Результат разделения смеси распределений

Плохо описанные элементы:

Как видно, совпадения компонент уже нет. Но дальнейшее разделение смеси невозможно, т.к. ковариационная матрица одной из компонент \Sigma_j оказалась вырожденной, а для подсчета правдободобия требуется ее обращать.

Пример 3

Выборка X^N сгенерирована случайно согласно равномерному распределению. К значениям y_1,\ldots, y_N добавлен нормальный шум с дисперсией 0.01

Результат разделения смеси распределений

На следующем графике покажем кластеризацию на основе разделения смеси: каждый элемент x_i отнесен к компоненте
j_i, вероятность принадлежности к которой максимальна с учетом весов, т.е.
j_i=arg \max_{j=1\ldots k} \{w_jp_j(x_i)\}, i=1\ldots N.

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

Исходный код

Скачать код MATLAB можно здесь: [1]

См. также

Литература

  • Хайкин, Саймон. Нейронные сети: полный курс, 2-е изд., испр. : Пер. с англ. - М. : ООО "И.Д. Вильямс", 2006. - 1104 с. : ил. - Парал. тит. англ. ISBN 5-8459-0890-6 (рус.)
  • К. В. Воронцов, Лекции по линейным алгоритмам классификации и регрессии[[2]]



Данная статья была создана в рамках учебного задания.
Студент: Участник:Кононенко Даниил
Преподаватель: Участник:В.В.Стрижов
Срок: 28 мая 2010


В настоящее время задание завершено и проверено. Данная страница может свободно правиться другими участниками проекта MachineLearning.ru.

См. также методические указания по использованию Ресурса MachineLearning.ru в учебном процессе.

Личные инструменты