Однослойные сети RBF для решения задач регрессии (пример)
Материал из MachineLearning.
(→Исходный код) |
|||
(55 промежуточных версий не показаны.) | |||
Строка 1: | Строка 1: | ||
- | '''Радиальная функция''' | + | Цель работы - решить задачу регрессии с помощью сети радиальных базисных функций и исследовать некоторые свойства алгоритма. |
+ | |||
+ | '''Радиальная функция''' - это функция <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> | + | где <tex>N_j = (2\pi)^ {-\frac{n}{2}}(\sigma _{j1}, \dots ,\sigma _{jn})^{-1}</tex> - нормировочный множитель,<br /> |
- | <tex>\rho _j(x, x')</tex> | + | <tex>\rho _j(x, x')</tex> - взвешенная евклидова метрика в <tex>n</tex>-мерном пространстве <tex>X</tex>:<br /> |
- | + | ||
- | мерном пространстве <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: | Строка 11: | ||
== Постановка задачи == | == Постановка задачи == | ||
- | Задана выборка — множество <tex>\{{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>\ | + | <tex>\mu_j</tex> и <tex>\Sigma_j</tex>: |
- | <tex>p(x) = \sum_{ | + | <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 /> | ||
Строка 31: | Строка 31: | ||
по текущим значениям векторов <tex>G</tex> и <tex>\theta</tex>. | по текущим значениям векторов <tex>G</tex> и <tex>\theta</tex>. | ||
- | Если число компонент смеси заранее неизвестно, то применяется EM-алгоритм с последовательным добавлением компонент. Его идея заключается в том, что если данные описаны смесью <tex>k</tex> компонент, то можно добавить в смесь <tex>(k+1)</tex>-ю компоненту, построенную на элементах, | + | Если число компонент смеси заранее неизвестно, то применяется 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>(k+1)</tex>-ой компоненты запускается EM-алгоритм. | ||
Для более подробного описания см. | Для более подробного описания см. | ||
Строка 48: | Строка 50: | ||
Эксперименты проводились на модельных данных. <tex>x \in R</tex>, т.е. один признак. | Эксперименты проводились на модельных данных. <tex>x \in R</tex>, т.е. один признак. | ||
+ | Цель эксперимента - проверить работу описанного алгоритма, исследовать его сходимость. | ||
===Пример 1=== | ===Пример 1=== | ||
- | + | Задана функция <tex>y=x</tex>. Выборка <tex>X^N</tex> сгенерирована случайно согласно следующему распределению: несколько нормальных классов с центрами в точках <tex>\mu_j=j</tex>, <tex>j=1\ldots4</tex> и нормальной дисперсией <tex>\sigma_j=0.03</tex>. В каждом классе <tex>150</tex> объектов. К значениям <tex>y_1,\ldots, y_N</tex> добавлен нормальный шум с дисперсией | |
+ | <tex>0.05</tex> <br /> | ||
+ | Красный цвет - данные, синий - полученная в результате работы алгоритма зависимость <tex>y(x)</tex> | ||
[[Изображение: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]] | ||
- | 4 компоненты <br /> | + | Найдено 4 компоненты <br /> |
[4.0402; 2.5110; 2.5089; 0.9861] - центры, <br /> | [4.0402; 2.5110; 2.5089; 0.9861] - центры, <br /> | ||
[0.0271; 0.4256; 0.4257; 0.0188] - дисперсии , <br /> | [0.0271; 0.4256; 0.4257; 0.0188] - дисперсии , <br /> | ||
[0.2257; 0.1908; 0.3537; 0.2299] - веса. <br /> | [0.2257; 0.1908; 0.3537; 0.2299] - веса. <br /> | ||
- | + | Вторая и третья компоненты совпадают, т.е. на самом дела найдено всего 3 компоненты, одна из которых разбита на 2. Дальнейшее разделение смеси приводит только к большему разделению этой компоненты. <br /> | |
+ | Плохо описанные элементы на следующем шаге(синим цветом): | ||
[[Изображение:bad elements.png|500px]] | [[Изображение:bad elements.png|500px]] | ||
+ | |||
+ | Видно, что центр новой компоненты из плохо описанных элементов попадает в точку <tex>2.5</tex>, и в результате EM-итераций новя компонента не отделяется от уже существующих там второй и третей компонент. | ||
===Пример 2=== | ===Пример 2=== | ||
- | Те же данные, что и в примере 1, попытка отделить новую компоненту от старой. Если она попадает в то место, где уже есть старая - сдвигаем ее центр на небольшую величину. | + | Те же данные, что и в примере 1, попытка отделить новую компоненту от старой. Если она попадает в то место, где уже есть старая, то перед запуском EM-итераций сдвигаем ее центр на небольшую величину. |
[[Изображение:regression2.png|500px]] | [[Изображение:regression2.png|500px]] | ||
Строка 81: | Строка 89: | ||
[[Изображение:bad elements2.png|500px]] | [[Изображение:bad elements2.png|500px]] | ||
+ | |||
+ | Как видно, совпадения компонент уже нет. Но дальнейшее разделение смеси невозможно, т.к. ковариационная матрица одной из компонент <tex>\Sigma_j</tex> оказалась вырожденной, а для подсчета правдободобия требуется ее обращать. | ||
===Пример 3=== | ===Пример 3=== | ||
- | + | Выборка <tex>X^N</tex> сгенерирована случайно согласно равномерному распределению. К значениям <tex>y_1,\ldots, y_N</tex> добавлен нормальный шум с дисперсией | |
+ | <tex>0.01</tex> <br /> | ||
[[Изображение:regression3.png|500px]] | [[Изображение:regression3.png|500px]] | ||
Строка 92: | Строка 103: | ||
[[Изображение:components3.png|500px]] | [[Изображение:components3.png|500px]] | ||
- | + | На следующем графике покажем кластеризацию на основе разделения смеси: каждый элемент <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>. | ||
[[Изображение:clasterization3.png|500px]] | [[Изображение:clasterization3.png|500px]] | ||
+ | |||
+ | Видно, что для лучшего восстановления регрессии требуется продолжить разделение смеси, в частности, разделить изображенные на рисунке красным и желтым цветом компоненты на несколько. | ||
== Исходный код == | == Исходный код == | ||
Скачать код MATLAB можно здесь: | Скачать код MATLAB можно здесь: | ||
- | [https://mlalgorithms.svn.sourceforge.net/svnroot/mlalgorithms/ | + | [https://mlalgorithms.svn.sourceforge.net/svnroot/mlalgorithms/Group774/Kononenko2010SingleLayerRBF/RBFlearn.m] |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
== См. также == | == См. также == | ||
Строка 114: | Строка 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}} |
[[Категория:Нейронные сети]] | [[Категория:Нейронные сети]] | ||
[[Категория:Практика и вычислительные эксперименты]] | [[Категория:Практика и вычислительные эксперименты]] |
Текущая версия
Цель работы - решить задачу регрессии с помощью сети радиальных базисных функций и исследовать некоторые свойства алгоритма.
Радиальная функция - это функция , зависящая только от расстояния между и фиксированной точкой пространства .
В данной работе используются гауссианы , которые можно представить в виде
где - нормировочный множитель,
- взвешенная евклидова метрика в -мерном пространстве :
,
.
Сеть радиальных базисных функций - нейронная сеть прямого распространения сигнала, которая содержит промежуточный (скрытый) слой радиально симметричных нейронов. Такой нейрон преобразовывает расстояние от данного входного вектора до соответствующей ему фиксированной точки пространства по некоторому нелинейному закону, заданному радиальной функцией. В данной статье мы рассмотрим применение этой нейронной сети к решению задачи регрессии с помощью восстановления смесей распределений.
Содержание |
Постановка задачи
Задана выборка — множество значений свободных переменных и множество соответствующих им значений зависимой переменной. Предполагается, что на множестве объектов задана плотность распределения , представимая в виде смеси распределений - гауссиан с параметрами
и :
Требуется решить задачу регрессии с помощью однослойной сети RBF, параметрами которой являются
- число компонент смеси,
- веса компонент,
- центры и дисперсия компонент,
- значения зависимой переменной в центрах компонент.
Смесь распределений требуется восстановить с помощью EM-алгоритма с добавлением компонент.
Таким образом решается задача регрессии с помощью однослойной сети RBF, обучаемой с помощью EM-алгоритма с добавлением компонент.
Описание алгоритма
Разделение смеси рапределений
Настройка параметров RBF-сети происходит с помощью EM-алгоритма с добавлением компонент. Идея EM-алгоритма заключается во введении вспомогательного вектора скрытых переменных : . С одной стороны, он может быть вычислен, если известны значения вектора параметров , с другой стороны, поиск максимума правдоподобия сильно упрощается, если известны значения скрытых переменных. EM-алгоритм состоит из итерационного повторения двух шагов. На E-шаге вычисляется ожидаемое значение (expectation) вектора скрытых переменных по текущему приближению вектора параметров . На М-шаге решается задача максимизации правдоподобия (maximization) и находится следующее приближение вектора по текущим значениям векторов и .
Если число компонент смеси заранее неизвестно, то применяется EM-алгоритм с последовательным добавлением компонент. Его идея заключается в том, что если данные описаны смесью компонент, то можно добавить в смесь -ю компоненту, построенную на плохо описанных элементах.
Элемент считается плохо описанным, если его правдободобие , - параметр.
Далее на смеси из -ой компоненты запускается EM-алгоритм.
Для более подробного описания см.
Восстановление регрессии
Значения зависимой переменной в центрах компонент
Значение для произвольного получим, используя формулу Надарая-Ватсона
Эта формула интуитивно очевидна: значение есть среднее по центрам компонент с учетом вероятности того, что объект принадлежит -ой компоненте смеси.
Вычислительный эксперимент
Эксперименты проводились на модельных данных. , т.е. один признак. Цель эксперимента - проверить работу описанного алгоритма, исследовать его сходимость.
Пример 1
Задана функция . Выборка сгенерирована случайно согласно следующему распределению: несколько нормальных классов с центрами в точках , и нормальной дисперсией . В каждом классе объектов. К значениям добавлен нормальный шум с дисперсией
Красный цвет - данные, синий - полученная в результате работы алгоритма зависимость
Результат разделения смеси распределений (середина полосы-центр компоненты , полуширина - корень из дисперсии компоненты , координата по оси - значение зависимой переменной в центре компоненты ):
Найдено 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. Дальнейшее разделение смеси приводит только к большему разделению этой компоненты.
Плохо описанные элементы на следующем шаге(синим цветом):
Видно, что центр новой компоненты из плохо описанных элементов попадает в точку , и в результате EM-итераций новя компонента не отделяется от уже существующих там второй и третей компонент.
Пример 2
Те же данные, что и в примере 1, попытка отделить новую компоненту от старой. Если она попадает в то место, где уже есть старая, то перед запуском EM-итераций сдвигаем ее центр на небольшую величину.
Результат разделения смеси распределений
Плохо описанные элементы:
Как видно, совпадения компонент уже нет. Но дальнейшее разделение смеси невозможно, т.к. ковариационная матрица одной из компонент оказалась вырожденной, а для подсчета правдободобия требуется ее обращать.
Пример 3
Выборка сгенерирована случайно согласно равномерному распределению. К значениям добавлен нормальный шум с дисперсией
Результат разделения смеси распределений
На следующем графике покажем кластеризацию на основе разделения смеси: каждый элемент отнесен к компоненте
, вероятность принадлежности к которой максимальна с учетом весов, т.е.
, .
Видно, что для лучшего восстановления регрессии требуется продолжить разделение смеси, в частности, разделить изображенные на рисунке красным и желтым цветом компоненты на несколько.
Исходный код
Скачать код MATLAB можно здесь: [1]
См. также
- Регрессионный анализ
- EM-алгоритм
- EM-алгоритм с последовательным добавлением компонент (пример)
- Сеть радиальных базисных функций
- Нейронные сети
Литература
- Хайкин, Саймон. Нейронные сети: полный курс, 2-е изд., испр. : Пер. с англ. - М. : ООО "И.Д. Вильямс", 2006. - 1104 с. : ил. - Парал. тит. англ. ISBN 5-8459-0890-6 (рус.)
- К. В. Воронцов, Лекции по линейным алгоритмам классификации и регрессии[[2]]
Данная статья была создана в рамках учебного задания.
См. также методические указания по использованию Ресурса MachineLearning.ru в учебном процессе. |