Методы оптимизации в машинном обучении (курс лекций)/2012/Задание 1

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

(Различия между версиями)
Перейти к: навигация, поиск
(Спецификация реализуемых функций)
Строка 34: Строка 34:
|interval — границы интервала оптимизации, вектор типа double длины 2;
|interval — границы интервала оптимизации, вектор типа double длины 2;
|-
|-
-
|(param_name, param_value) — необязательные параметрыматрица преобразования среднего при переходе от <tex>t_n</tex> к <tex>x_n</tex>, матрица типа double размера d x D;
+
|(param_name, param_value) — необязательные параметры, следующие названия и значения возможны:
|-
|-
-
|G ковариационная матрица для распределения <tex>p(t_n|t_{n-1})</tex>, матрица типа double размера D x D;
+
|
 +
{|border="0"
 +
|'eps' точность оптимизации по аргументу, число, по умолчанию = 1e-5;
 +
|-
 +
|'max_iter' — максимальное число итераций, число, по умолчанию = 500;
 +
|-
 +
|'display' — режим отображения, true или false, если true, то отображаются номер итерации, текущее значение функции, аргумента, текущая точность и др. показатели, по умолчанию = false;
 +
|-
 +
|}
|-
|-
-
|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.
 
|}
|}
|-
|-
Строка 49: Строка 52:
|
|
{|
{|
-
|X сгенерированная наблюдаемая последовательность, матрица типа double размера N x d
+
|x_min найденное значение минимума, число;
|-
|-
-
|T последовательность скрытых характеристик, матрица типа double размера N x D
+
|f_min значение функции в точке минимума, число;
-
|}
+
-
|}
+
-
 
+
-
Обратите внимание: в процедуре LDS_generate параметры D и d определяются неявно по размеру соответствующих элементов.
+
-
 
+
-
{|class="standard"
+
-
!''Фильтр Калмана для ЛДС''
+
-
|-
+
-
|[M, V] = LDS_filter(X, A, C, G, S, mu0, V0)
+
-
|-
+
-
|ВХОД
+
-
|-
+
-
|
+
-
{|
+
-
|X — входная последовательность, матрица типа double размера N x d, где N – количество точек в последовательности, d – количество признаков;
+
|-
|-
-
|A матрица преобразования среднего в последовательности <tex>t</tex>, матрица типа double размера D x D;
+
|status результаты оптимизации, структура со следующими полями:
|-
|-
-
|C матрица преобразования среднего при переходе от <tex>t_n</tex> к <tex>x_n</tex>, матрица типа double размера d x D;
+
|
 +
{|border="0"
 +
|'flag' общий результат, число, равно 1, если достигнут оптимум с точностью eps, равно -1, если произошел выход по максимальному числу итераций;
 +
|-
 +
|'num_fun' — количество обращений к оракулу;
 +
|-
 +
|}
|-
|-
-
|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.
 
-
|-
 
-
|}
 
-
|-
 
-
|ВЫХОД
 
-
|-
 
-
|
 
-
{|
 
-
|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;
 
-
|-
 
-
|}
 
-
|}
 
-
 
-
&nbsp;
 
-
 
-
{|class="standard"
 
-
!''Обучение с учителем для ЛДС''
 
-
|-
 
-
|[A, C, G, S] = LDS_train(X, T, ParameterName1, ParameterValue1, ParameterName2, ParameterValue2, ...)
 
-
|-
 
-
|ВХОД
 
-
|-
 
-
|
 
-
{|
 
-
|X — входная последовательность наблюдаемых переменных, матрица типа double размера N x d, где N – количество точек в последовательности, d – число признаков;
 
-
|-
 
-
|T — входная последовательность значений скрытых характеристик, матрица типа double размера N x D;
 
-
|-
 
-
|(ParameterName, ParameterValue) — (необязательные аргументы) набор дополнительных параметров, возможны следующие названия параметров:
 
-
|-
 
-
|&nbsp;&nbsp;'A' — задаваемая пользователем матрица преобразования среднего в распределении <tex>p(t_n|t_{n-1})</tex>(соответственно, ее не нужно вычислять внутри функции);
 
-
|-
 
-
|&nbsp;&nbsp;'C' — задаваемая пользователем матрица преобразования среднего в распределении <tex>p(x_n|t_n)</tex>;
 
-
|-
 
-
|&nbsp;&nbsp;'G' — задаваемая пользователем матрица ковариации <tex>p(t_n|t_{n-1})</tex>;
 
-
|-
 
-
|&nbsp;&nbsp;'S' — задаваемая пользователем матрица ковариации в распределении <tex>p(x_n|t_n)</tex>;
 
-
|-
 
-
|}
 
-
|-
 
-
|ВЫХОД
 
-
|-
 
-
|
 
-
{|
 
-
|-
 
-
|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;
 
-
|-
 
-
|}
 
-
|}
 
-
 
-
&nbsp;
 
-
 
-
{|class="standard"
 
-
!''Генерация выборки для нелинейной динамической системы''
 
-
|-
 
-
|[X, T] = EKF_generate(N, func_horiz, func_vert, G, S, mu0, V0)
 
-
|-
 
-
|ВХОД
 
-
|-
 
-
|
 
-
{|border="0"
 
-
|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;
 
-
|-
 
-
|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.
 
-
|}
 
-
|-
 
-
|ВЫХОД
 
-
|-
 
-
|
 
-
{|
 
-
|X — сгенерированная наблюдаемая последовательность, матрица типа double размера N x d
 
-
|-
 
-
|T — последовательность скрытых характеристик, матрица типа double размера N x D
 
|}
|}
|}
|}
-
Обратите внимание: в процедуре EKF_generate параметры D и d определяются неявно по размеру соответствующих элементов.
+
Прототипы функций min_parabolic для метода парабол и min_brent для метода Брента выглядят аналогично. При отображении в методе Брента необходимо указывать способ выбора очередной точки на каждой итерации (golden или parabolic).
-
 
+
-
{|class="standard"
+
-
!''Расширенный фильтр Калмана для нелинейной динамической системы''
+
-
|-
+
-
|[M, V] = EKF_filter(X, func_horiz, func_vert, G, S, mu0, V0)
+
-
|-
+
-
|ВХОД
+
-
|-
+
-
|
+
-
{|
+
-
|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;
+
-
|-
+
-
|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.
+
-
|-
+
-
|}
+
-
|-
+
-
|ВЫХОД
+
-
|-
+
-
|
+
-
{|
+
-
|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;
+
-
|-
+
-
|}
+
-
|}
+
=== Рекомендации по выполнению задания ===
=== Рекомендации по выполнению задания ===

Версия 12:26, 26 сентября 2012


Формулировка задания находится в стадии формирования. Просьба не приступать к выполнению задания до тех пор, пока это предупреждение не будет удалено.


Начало выполнения задания: 27 сентября 2012

Срок сдачи: 10 октября 2012, 23:59

Среда реализации задания – MATLAB. Неэффективная реализация кода может негативно отразиться на оценке.

Формулировка задания

Для выполнения задания необходимо:

  • Реализовать алгоритмы одномерной минимизации функции без производной: метод золотого сечения, метод парабол и комбинированный метод Брента;
  • Протестировать реализованные алгоритмы на наборе задач оптимизации;
  • Написать отчет в формате PDF с описанием всех проведенных исследований.

Спецификация реализуемых функций

Метод золотого сечения
[x_min, f_min, status] = min_golden(func, interval, param_name1, param_value1, ...)
ВХОД
func — указатель на оптимизируемую функцию;
interval — границы интервала оптимизации, вектор типа double длины 2;
(param_name, param_value) — необязательные параметры, следующие названия и значения возможны:
'eps' — точность оптимизации по аргументу, число, по умолчанию = 1e-5;
'max_iter' — максимальное число итераций, число, по умолчанию = 500;
'display' — режим отображения, true или false, если true, то отображаются номер итерации, текущее значение функции, аргумента, текущая точность и др. показатели, по умолчанию = false;
ВЫХОД
x_min — найденное значение минимума, число;
f_min — значение функции в точке минимума, число;
status — результаты оптимизации, структура со следующими полями:
'flag' — общий результат, число, равно 1, если достигнут оптимум с точностью eps, равно -1, если произошел выход по максимальному числу итераций;
'num_fun' — количество обращений к оракулу;

Прототипы функций min_parabolic для метода парабол и min_brent для метода Брента выглядят аналогично. При отображении в методе Брента необходимо указывать способ выбора очередной точки на каждой итерации (golden или parabolic).

Рекомендации по выполнению задания

  • В качестве модельных данных для тестирования ЛДС рассмотреть задачу сопровождения объекта в двухмерном пространстве. Для генерации траектории движения объекта использовать функцию LDS_generate с параметрами, описанными в лекции. При этом рекомендуется взять небольшой квант времени \Delta t. Убедиться в том, что отфильтрованная по Калману траектория ближе к истинной, чем наблюдаемый сигнал.
  • При тестировании обучения с учителем убедиться в том, что правдоподобие траектории объекта в двухмерном пространстве, сгенерированной с помощью LDS_generate, не превосходит правдоподобие этой траектории для параметров, полученных с помощью LDS_train.

Оформление задания

Выполненный вариант задания необходимо прислать письмом по адресу bayesml@gmail.com с темой «[МОМО12] Задание 1. ФИО». Убедительная просьба присылать выполненное задание только один раз с окончательным вариантом. Новые версии будут рассматриваться только в самом крайнем случае. Также убедительная просьба строго придерживаться заданной выше спецификации реализуемых функций. Очень трудно проверять большое количество заданий, если у каждого будет свой формат реализации.

Письмо должно содержать:

  • PDF-файл с описанием проведенных исследований
  • Набор вспомогательных файлов при необходимости
Личные инструменты