Графические модели (курс лекций)/2012/Задание 2
Материал из MachineLearning.
(Новая: {{stop|Внимание! Страница задания находится в стадии формирования. Убедительная просьба не приступать к...) |
(релиз) |
||
(3 промежуточные версии не показаны) | |||
Строка 1: | Строка 1: | ||
- | {{ | + | {{TOCright|300px}} |
{{Main|Графические модели (курс лекций)}} | {{Main|Графические модели (курс лекций)}} | ||
- | '''Начало выполнения задания''': | + | [[Image:GM12_task2_intro.jpg|300px]] |
+ | |||
+ | '''Начало выполнения задания''': 10 марта 2012 | ||
'''Срок сдачи''': {{ins|21 марта 2012, 23:59}} | '''Срок сдачи''': {{ins|21 марта 2012, 23:59}} | ||
- | Среда реализации | + | Среда реализации задания – MATLAB. Неэффективная реализация кода может негативно отразиться на оценке. |
- | + | ||
- | + | ||
=== Формулировка задания === | === Формулировка задания === | ||
- | Рассматривается | + | Рассматривается линейная динамическая система (ЛДС), в которой полное правдоподобие задается как: |
+ | <center> | ||
+ | <tex> | ||
+ | p(X,T|\theta)=p(t_1)\prod_{n=2}^Np(t_n |t_{n-1})\prod_{n=1}^Np(x_n |t_n ),\\ | ||
+ | p(t_n|t_{n-1})=\mathcal{N}(t_n|At_{n-1},\Gamma),\\ | ||
+ | p(x_n|t_n)=\mathcal{N}(x_n|Ct_n,\Sigma),\\ | ||
+ | p(t_1)=\mathcal{N}(t_1|\mu_0,V_0). | ||
+ | </tex> | ||
+ | </center> | ||
+ | |||
+ | Все переменные модели являются непрерывными, т.е. <tex>t_n\in\mathbb{R}^D,\ x_n\in\mathbb{R}^d</tex>. Параметры модели <tex>A,\Gamma,V_0\in\mathbb{R}^{D\times D},\ C\in\mathbb{R}^{d\times D},\ \Sigma\in\mathbb{R}^{d\times d},\ \mu_0\in\mathbb{R}^D</tex>. | ||
+ | |||
+ | Данную ЛДС нужно протестировать на модельной задаче сопровождения (трекинга) объекта в пространстве. | ||
+ | |||
+ | Рассматривается также нелинейная динамическая система с нормальным шумом, в которой вероятности переходов задаются как: | ||
<center> | <center> | ||
<tex> | <tex> | ||
- | p( | + | p(t_n|t_{n-1}) = \mathcal{N}(t_n|f(t_{n-1}),\Gamma),\\ |
+ | p(x_n|t_n) = \mathcal{N}(x_n|g(t_n),\Sigma),\\ | ||
+ | p(t_1) = \mathcal{N}(t_1|\mu_0,V_0). | ||
</tex> | </tex> | ||
</center> | </center> | ||
- | |||
- | |||
- | |||
- | + | Здесь <tex>f</tex> и <tex>g</tex> — известные вектор-функции. | |
- | + | Для этой системы нужно реализовать расширенный фильтр Калмана и протестировать его работу на модельных данных. | |
Для выполнения задания необходимо: | Для выполнения задания необходимо: | ||
- | * Реализовать алгоритм генерации выборки из вероятностной модели | + | * Реализовать алгоритм генерации выборки из вероятностной модели ЛДС и нелинейной ДС; |
- | * Реализовать | + | * Реализовать алгоритм онлайн фильтрации сигнала с помощью фильтра Калмана и с помощью расширенного фильтра Калмана; |
- | * Реализовать | + | * Реализовать обучение параметров ЛДС с учителем. При этом часть параметров ЛДС может быть задана пользователем; |
- | * Протестировать реализованные алгоритмы на модельных | + | * Протестировать реализованные алгоритмы на модельных данных; |
- | + | * Написать отчет в формате PDF с описанием всех проведенных исследований. Данный отчет должен, в частности, включать в себя графики фильтрации сгенерированных траекторий для линейного и нелинейного случая. | |
- | + | ||
- | * Написать отчет в формате PDF с описанием всех проведенных исследований. Данный отчет должен, в частности, включать в себя графики | + | |
=== Спецификация реализуемых функций === | === Спецификация реализуемых функций === | ||
{|class="standard" | {|class="standard" | ||
- | !''Генерация выборки'' | + | !''Генерация выборки для ЛДС'' |
|- | |- | ||
- | |[X, T] = | + | |[X, T] = LDS_generate(N, A, C, G, S, mu0, V0) |
|- | |- | ||
|ВХОД | |ВХОД | ||
Строка 48: | Строка 59: | ||
|N — количество точек в генерируемой последовательности, uint32; | |N — количество точек в генерируемой последовательности, uint32; | ||
|- | |- | ||
- | | | + | |A — матрица преобразования среднего в последовательности <tex>t</tex>, матрица типа double размера D x D; |
|- | |- | ||
- | | | + | |C — матрица преобразования среднего при переходе от <tex>t_n</tex> к <tex>x_n</tex>, матрица типа double размера d x D; |
|- | |- | ||
- | | | + | |G — ковариационная матрица для распределения <tex>p(t_n|t_{n-1})</tex>, матрица типа double размера D x D; |
+ | |- | ||
+ | |S — ковариационная матрица для распределения <tex>p(x_n|t_n)</tex>, матрица типа double размера d x d; | ||
+ | |- | ||
+ | |mu0 — мат.ожидание априорного распределения <tex>p(t_1)</tex>, матрица типа double размера 1 x D; | ||
|- | |- | ||
- | | | + | |V0 — ковариационная матрица априорного распределения <tex>p(t_1)</tex>, матрица типа double размера D x D. |
|} | |} | ||
|- | |- | ||
Строка 61: | Строка 76: | ||
| | | | ||
{| | {| | ||
- | |X — сгенерированная последовательность, матрица типа double размера N x d | + | |X — сгенерированная наблюдаемая последовательность, матрица типа double размера N x d |
|- | |- | ||
- | |T — последовательность скрытых | + | |T — последовательность скрытых характеристик, матрица типа double размера N x D |
|} | |} | ||
|} | |} | ||
- | Обратите внимание: в процедуре | + | Обратите внимание: в процедуре LDS_generate параметры D и d определяются неявно по размеру соответствующих элементов. |
{|class="standard" | {|class="standard" | ||
- | !'' | + | !''Фильтр Калмана для ЛДС'' |
|- | |- | ||
- | | | + | |[M, V] = LDS_filter(X, A, C, G, S, mu0, V0) |
|- | |- | ||
|ВХОД | |ВХОД | ||
Строка 80: | Строка 95: | ||
|X — входная последовательность, матрица типа double размера N x d, где N – количество точек в последовательности, d – количество признаков; | |X — входная последовательность, матрица типа double размера N x d, где N – количество точек в последовательности, d – количество признаков; | ||
|- | |- | ||
- | + | |A — матрица преобразования среднего в последовательности <tex>t</tex>, матрица типа double размера D x D; | |
- | + | ||
- | |A — матрица | + | |
|- | |- | ||
- | | | + | |C — матрица преобразования среднего при переходе от <tex>t_n</tex> к <tex>x_n</tex>, матрица типа double размера d x D; |
|- | |- | ||
- | | | + | |G — ковариационная матрица для распределения <tex>p(t_n|t_{n-1})</tex>, матрица типа double размера D x D; |
+ | |- | ||
+ | |S — ковариационная матрица для распределения <tex>p(x_n|t_n)</tex>, матрица типа double размера d x d; | ||
+ | |- | ||
+ | |mu0 — мат.ожидание априорного распределения <tex>p(t_1)</tex>, матрица типа double размера 1 x D; | ||
+ | |- | ||
+ | |V0 — ковариационная матрица априорного распределения <tex>p(t_1)</tex>, матрица типа double размера D x D. | ||
|- | |- | ||
|} | |} | ||
Строка 94: | Строка 113: | ||
| | | | ||
{| | {| | ||
- | | | + | |M — мат. ожидания распределений <tex>p(t_n|x_1,\dots,x_n)</tex>, матрица типа double размера N x D; |
+ | |- | ||
+ | |V — ковариационные матрицы распределений <tex>p(t_n|x_1,\dots,x_n)</tex>, массив типа double размера D x D x N; | ||
+ | |- | ||
|} | |} | ||
|} | |} | ||
Строка 101: | Строка 123: | ||
{|class="standard" | {|class="standard" | ||
- | !''Обучение'' | + | !''Обучение с учителем для ЛДС'' |
|- | |- | ||
- | |[ | + | |[A, C, G, S] = LDS_train(X, T, ParameterName1, ParameterValue1, ParameterName2, ParameterValue2, ...) |
- | + | ||
- | + | ||
|- | |- | ||
|ВХОД | |ВХОД | ||
Строка 111: | Строка 131: | ||
| | | | ||
{| | {| | ||
- | |X — входная последовательность, матрица типа double размера N x d, где N – количество точек в последовательности, d – число признаков; | + | |X — входная последовательность наблюдаемых переменных, матрица типа double размера N x d, где N – количество точек в последовательности, d – число признаков; |
|- | |- | ||
- | | | + | |T — входная последовательность значений скрытых характеристик, матрица типа double размера N x D; |
|- | |- | ||
- | | | + | |(ParameterName, ParameterValue) — (необязательные аргументы) набор дополнительных параметров, возможны следующие названия параметров: |
|- | |- | ||
- | | ' | + | | 'A' — задаваемая пользователем матрица преобразования среднего в распределении <tex>p(t_n|t_{n-1})</tex>(соответственно, ее не нужно вычислять внутри функции); |
|- | |- | ||
- | | ' | + | | 'C' — задаваемая пользователем матрица преобразования среднего в распределении <tex>p(x_n|t_n)</tex>; |
|- | |- | ||
- | | ' | + | | 'G' — задаваемая пользователем матрица ковариации <tex>p(t_n|t_{n-1})</tex>; |
|- | |- | ||
- | | ' | + | | 'S' — задаваемая пользователем матрица ковариации в распределении <tex>p(x_n|t_n)</tex>; |
- | + | ||
- | + | ||
|- | |- | ||
- | |||
|} | |} | ||
|- | |- | ||
Строка 134: | Строка 151: | ||
| | | | ||
{| | {| | ||
- | |||
|- | |- | ||
- | |A — матрица | + | |A — матрица преобразования среднего в последовательности <tex>t</tex>, матрица типа double размера D x D; |
|- | |- | ||
- | | | + | |C — матрица преобразования среднего при переходе от <tex>t_n</tex> к <tex>x_n</tex>, матрица типа double размера d x D; |
|- | |- | ||
- | | | + | |G — ковариационная матрица для распределения <tex>p(t_n|t_{n-1})</tex>, матрица типа double размера D x D; |
+ | |- | ||
+ | |S — ковариационная матрица для распределения <tex>p(x_n|t_n)</tex>, матрица типа double размера d x d; | ||
|- | |- | ||
- | |||
|} | |} | ||
|} | |} | ||
- | + | | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
{|class="standard" | {|class="standard" | ||
- | !''Генерация выборки'' | + | !''Генерация выборки для нелинейной динамической системы'' |
|- | |- | ||
- | |[X, T] = | + | |[X, T] = EKF_generate(N, func_horiz, func_vert, G, S, mu0, V0) |
|- | |- | ||
|ВХОД | |ВХОД | ||
Строка 224: | Строка 176: | ||
|N — количество точек в генерируемой последовательности, uint32; | |N — количество точек в генерируемой последовательности, uint32; | ||
|- | |- | ||
- | | | + | |func_horiz — указатель на функцию <tex>f</tex>, сама функция должна возвращать две величины: значение (вектор длины D) и градиент (матрицу размера D x D); |
+ | |- | ||
+ | |func_vert — указатель на функцию <tex>g</tex>, сама функция должна возвращать свое значение (вектор длины d) и градиент (матрицу размера d x D); | ||
|- | |- | ||
|G — ковариационная матрица для распределения <tex>p(t_n|t_{n-1})</tex>, матрица типа double размера D x D; | |G — ковариационная матрица для распределения <tex>p(t_n|t_{n-1})</tex>, матрица типа double размера D x D; | ||
- | |||
- | |||
|- | |- | ||
|S — ковариационная матрица для распределения <tex>p(x_n|t_n)</tex>, матрица типа double размера d x d; | |S — ковариационная матрица для распределения <tex>p(x_n|t_n)</tex>, матрица типа double размера d x d; | ||
Строка 243: | Строка 195: | ||
|X — сгенерированная наблюдаемая последовательность, матрица типа double размера N x d | |X — сгенерированная наблюдаемая последовательность, матрица типа double размера N x d | ||
|- | |- | ||
- | |T — последовательность скрытых | + | |T — последовательность скрытых характеристик, матрица типа double размера N x D |
|} | |} | ||
|} | |} | ||
- | Обратите внимание: в процедуре | + | Обратите внимание: в процедуре EKF_generate параметры D и d определяются неявно по размеру соответствующих элементов. |
{|class="standard" | {|class="standard" | ||
- | !'' | + | !''Расширенный фильтр Калмана для нелинейной динамической системы'' |
|- | |- | ||
- | |[ | + | |[M, V] = EKF_filter(X, func_horiz, func_vert, G, S, mu0, V0) |
|- | |- | ||
|ВХОД | |ВХОД | ||
Строка 260: | Строка 212: | ||
|X — входная последовательность, матрица типа double размера N x d, где N – количество точек в последовательности, d – количество признаков; | |X — входная последовательность, матрица типа double размера N x d, где N – количество точек в последовательности, d – количество признаков; | ||
|- | |- | ||
- | | | + | |func_horiz — указатель на функцию <tex>f</tex>, сама функция должна возвращать две величины: значение (вектор длины D) и градиент (матрицу размера D x D); |
|- | |- | ||
- | | | + | |func_vert — указатель на функцию <tex>g</tex>, сама функция должна возвращать свое значение (вектор длины d) и градиент (матрицу размера d x D); |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
|- | |- | ||
|G — ковариационная матрица для распределения <tex>p(t_n|t_{n-1})</tex>, матрица типа double размера D x D; | |G — ковариационная матрица для распределения <tex>p(t_n|t_{n-1})</tex>, матрица типа double размера D x D; | ||
- | |||
- | |||
|- | |- | ||
|S — ковариационная матрица для распределения <tex>p(x_n|t_n)</tex>, матрица типа double размера d x d; | |S — ковариационная матрица для распределения <tex>p(x_n|t_n)</tex>, матрица типа double размера d x d; | ||
Строка 339: | Строка 223: | ||
|- | |- | ||
|V0 — ковариационная матрица априорного распределения <tex>p(t_1)</tex>, матрица типа double размера D x D. | |V0 — ковариационная матрица априорного распределения <tex>p(t_1)</tex>, матрица типа double размера D x D. | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
|- | |- | ||
|} | |} | ||
Строка 363: | Строка 230: | ||
| | | | ||
{| | {| | ||
+ | |M — мат. ожидания распределений <tex>p(t_n|x_1,\dots,x_n)</tex>, матрица типа double размера N x D; | ||
|- | |- | ||
- | | | + | |V — ковариационные матрицы распределений <tex>p(t_n|x_1,\dots,x_n)</tex>, массив типа double размера D x D x N; |
|- | |- | ||
|} | |} | ||
Строка 371: | Строка 239: | ||
=== Рекомендации по выполнению задания === | === Рекомендации по выполнению задания === | ||
- | * | + | * В качестве модельных данных для тестирования ЛДС рассмотреть задачу сопровождения объекта в двухмерном пространстве. Для генерации траектории движения объекта использовать функцию LDS_generate с параметрами, описанными в лекции. При этом рекомендуется взять небольшой квант времени <tex>\Delta t</tex>. Убедиться в том, что отфильтрованная по Калману траектория ближе к истинной, чем наблюдаемый сигнал. |
- | + | * При тестировании обучения с учителем убедиться в том, что правдоподобие траектории объекта в двухмерном пространстве, сгенерированной с помощью LDS_generate, не превосходит правдоподобие этой траектории для параметров, полученных с помощью LDS_train. | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | * При тестировании | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
=== Оформление задания === | === Оформление задания === | ||
- | Выполненный вариант задания необходимо прислать письмом по адресу ''bayesml@gmail.com'' с темой «Задание | + | Выполненный вариант задания необходимо прислать письмом по адресу ''bayesml@gmail.com'' с темой «Задание 2. ФИО». Убедительная просьба присылать выполненное задание '''только один раз''' с окончательным вариантом. Новые версии будут рассматриваться только в самом крайнем случае. Также убедительная просьба строго придерживаться заданной выше спецификации реализуемых функций. Очень трудно проверять большое количество заданий, если у каждого будет свой формат реализации. |
Письмо должно содержать: | Письмо должно содержать: | ||
*PDF-файл с описанием проведенных исследований | *PDF-файл с описанием проведенных исследований | ||
- | * | + | *LDS_generate.m |
- | * | + | *LDS_filter.m |
- | * | + | *LDS_train.m |
- | * | + | *EKF_generate.m |
- | * | + | *EKF_filter.m |
*Набор вспомогательных файлов при необходимости | *Набор вспомогательных файлов при необходимости | ||
[[Категория:Учебные курсы]] | [[Категория:Учебные курсы]] | ||
[[Категория:Байесовские методы]] | [[Категория:Байесовские методы]] |
Текущая версия
|
Начало выполнения задания: 10 марта 2012
Срок сдачи: 21 марта 2012, 23:59
Среда реализации задания – MATLAB. Неэффективная реализация кода может негативно отразиться на оценке.
Формулировка задания
Рассматривается линейная динамическая система (ЛДС), в которой полное правдоподобие задается как:
Все переменные модели являются непрерывными, т.е. . Параметры модели .
Данную ЛДС нужно протестировать на модельной задаче сопровождения (трекинга) объекта в пространстве.
Рассматривается также нелинейная динамическая система с нормальным шумом, в которой вероятности переходов задаются как:
Здесь и — известные вектор-функции.
Для этой системы нужно реализовать расширенный фильтр Калмана и протестировать его работу на модельных данных.
Для выполнения задания необходимо:
- Реализовать алгоритм генерации выборки из вероятностной модели ЛДС и нелинейной ДС;
- Реализовать алгоритм онлайн фильтрации сигнала с помощью фильтра Калмана и с помощью расширенного фильтра Калмана;
- Реализовать обучение параметров ЛДС с учителем. При этом часть параметров ЛДС может быть задана пользователем;
- Протестировать реализованные алгоритмы на модельных данных;
- Написать отчет в формате PDF с описанием всех проведенных исследований. Данный отчет должен, в частности, включать в себя графики фильтрации сгенерированных траекторий для линейного и нелинейного случая.
Спецификация реализуемых функций
Генерация выборки для ЛДС | |||||||
---|---|---|---|---|---|---|---|
[X, T] = LDS_generate(N, A, C, G, S, mu0, V0) | |||||||
ВХОД | |||||||
| |||||||
ВЫХОД | |||||||
|
Обратите внимание: в процедуре LDS_generate параметры D и d определяются неявно по размеру соответствующих элементов.
Фильтр Калмана для ЛДС | |||||||
---|---|---|---|---|---|---|---|
[M, V] = LDS_filter(X, A, C, G, S, mu0, V0) | |||||||
ВХОД | |||||||
| |||||||
ВЫХОД | |||||||
|
Обучение с учителем для ЛДС | |||||||
---|---|---|---|---|---|---|---|
[A, C, G, S] = LDS_train(X, T, ParameterName1, ParameterValue1, ParameterName2, ParameterValue2, ...) | |||||||
ВХОД | |||||||
| |||||||
ВЫХОД | |||||||
|
Генерация выборки для нелинейной динамической системы | |||||||
---|---|---|---|---|---|---|---|
[X, T] = EKF_generate(N, func_horiz, func_vert, G, S, mu0, V0) | |||||||
ВХОД | |||||||
| |||||||
ВЫХОД | |||||||
|
Обратите внимание: в процедуре EKF_generate параметры D и d определяются неявно по размеру соответствующих элементов.
Расширенный фильтр Калмана для нелинейной динамической системы | |||||||
---|---|---|---|---|---|---|---|
[M, V] = EKF_filter(X, func_horiz, func_vert, G, S, mu0, V0) | |||||||
ВХОД | |||||||
| |||||||
ВЫХОД | |||||||
|
Рекомендации по выполнению задания
- В качестве модельных данных для тестирования ЛДС рассмотреть задачу сопровождения объекта в двухмерном пространстве. Для генерации траектории движения объекта использовать функцию LDS_generate с параметрами, описанными в лекции. При этом рекомендуется взять небольшой квант времени . Убедиться в том, что отфильтрованная по Калману траектория ближе к истинной, чем наблюдаемый сигнал.
- При тестировании обучения с учителем убедиться в том, что правдоподобие траектории объекта в двухмерном пространстве, сгенерированной с помощью LDS_generate, не превосходит правдоподобие этой траектории для параметров, полученных с помощью LDS_train.
Оформление задания
Выполненный вариант задания необходимо прислать письмом по адресу bayesml@gmail.com с темой «Задание 2. ФИО». Убедительная просьба присылать выполненное задание только один раз с окончательным вариантом. Новые версии будут рассматриваться только в самом крайнем случае. Также убедительная просьба строго придерживаться заданной выше спецификации реализуемых функций. Очень трудно проверять большое количество заданий, если у каждого будет свой формат реализации.
Письмо должно содержать:
- PDF-файл с описанием проведенных исследований
- LDS_generate.m
- LDS_filter.m
- LDS_train.m
- EKF_generate.m
- EKF_filter.m
- Набор вспомогательных файлов при необходимости