Обсуждение:Структурные методы анализа изображений и сигналов (курс лекций, А.С. Конушин, Д.П. Ветров, Д.А. Кропотов, О.В. Баринова, В.С. Конушин, 2009)

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

(Различия между версиями)
Перейти к: навигация, поиск
(Ответ Василию Ломакину по поводу сданного задания)
Строка 65: Строка 65:
::Насчёт <tex>c_j</tex> - попробую последовать вашему совету. Эта идея приходила мне в голову, но меня остановило то, что мы не изучали дифференцирование по вектору (по <tex>c_j</tex>).
::Насчёт <tex>c_j</tex> - попробую последовать вашему совету. Эта идея приходила мне в голову, но меня остановило то, что мы не изучали дифференцирование по вектору (по <tex>c_j</tex>).
::Насчёт сдачи задания - я ведь его уже сдал, вы его не получили или пока не проверяли? В readme я указал, что выведенные мной формулы работают только для случая <tex>M</tex> = 1. В общем я разберусь в вопросе и новую версию программы досдам, надо же всё-таки работу до конца довести. Если что-то не получится, подойду к вам в четверг.
::Насчёт сдачи задания - я ведь его уже сдал, вы его не получили или пока не проверяли? В readme я указал, что выведенные мной формулы работают только для случая <tex>M</tex> = 1. В общем я разберусь в вопросе и новую версию программы досдам, надо же всё-таки работу до конца довести. Если что-то не получится, подойду к вам в четверг.
 +
:::#Ваше задание не было получено. Из 517 группы задание получено только от Одиноковой Евгении. В системе проверки задания в таблице есть строчка от еще одного представителя 517 группы, но самого архива с работой нет. Возможно, вы что-то не так сделали на этапе загрузки задания на сервер. Попробуйте загрузить свой архив еще раз.
 +
:::#Что касается дифференцирования по вектору, то вам понадобятся только два следующих свойства: <tex>\frac{d}{d\vec{x}}\vec{x}^T\vec{b}=\vec{b}</tex> и <tex>\frac{d}{d\vec{x}}\vec{x}^TA\vec{x}=2A\vec{x}</tex>. Оба этих свойства легко проверяются путем покоординатного дифференцирования.
 +
:::— [[Участник:Kropotov|Д.А. Кропотов]] 22:23, 23 ноября 2009 (MSK)
:: [[Участник:Василий Ломакин|Василий Ломакин]] 21:47, 23 ноября 2009 (MSK)
:: [[Участник:Василий Ломакин|Василий Ломакин]] 21:47, 23 ноября 2009 (MSK)

Версия 19:23, 23 ноября 2009

Добрый день! Возник вопрос по поводу задания 3. Нашёл следующие непонятные для себя моменты:

  • «где c_{0,j},\ldots,c_{M,j} — коэффициенты авторегрессии, которые зависят от состояния СММ.» Т.е коэффициентов М+1 штука. В то же время в описании функций сказано: «C — коэффициенты авторегрессии, матрица типа double размера K x M;» Не ясно, где ошибка - M или М+1.
  • \mu_{n,j}=c_{0,j}+\sum_{m=1}^Mc_{m,j}x_{n-m}, где c_{0,j} - число, c_{m,j}x_{n-m} - вектор, получается сложение вектора с числом. Хотя если смотреть с точки зрения матлаба, вопрос отпадает :)
  • В описании функций указано «Mu — константы в центрах гауссиан для каждого состояния, матрица типа double размера K x d, в которой в каждой строке стоит вектор для соответствующего состояния; ». Но по формуле Mu на каждом шаге генерится только с помощью авторегрессии. Для чего тогда передавать этот параметр?

Василий Ломакин 20:14, 1 ноября 2009 (MSK)

Василий, здравствуйте. По сути, в Вашем вопросе уже содержатся ответы:
  • Матрица C\in\mathbb{R}^{K\times M;
  • В качестве величины c_{0,j} используйте d-мерный вектор Mu_j из спецификации СММ;
  • Коэффициенты авторегрессии c_{m,j} считаем общими для всех размерностей вектора x_n. Таким образом, :получаем линейную комбинацию векторов и никаких некорректностей не возникает.
Желаю Удачи.
--Д.П. Ветров 16:15, 2 ноября 2009 (MSK)
Я так и подумал (собственно так уже и реализовал), но на всякий случай решил уточнить. Спасибо за интересное задание!
Василий Ломакин 08:41, 3 ноября 2009 (MSK)

Здравствуйте! Появился вопрос по поводу 1 варианта 2 задания.

При реализации функции HMM_TEST нужно хранить величину lj (сколько моментов времени мы находимся в данном состоянии) для каждого t(n,j). Как рассчитывать эту величину, если мы не знаем ни того состояния, в котором находимся в начальный момент времени, ни того состояния, куда переходим? Или нужно делать полный перебор для состояния t(n-1,i) по состояниям t(n,j), то есть из каждого состояния можем попасть в одно из К?

Надеюсь на Ваши разъяснения! Извините за корявый вопрос, лучше сформулировать не удалось.

Марина Дударенко 14:30, 13 ноября 2009 (MSK)

Один из возможных способов решения задачи — вводить функцию Беллмана V_n(j) как стоимость оптимальной траектории при условии, что в момент времени n мы находимся в состоянии j, причем в следующий момент времени произойдет переход в другое состояние. Пусть a и b — соответственно минимально и максимально допустимая длина одного сегмента. Тогда функция Беллмана V_n(j) вычисляется как максимум по моментам времени k = n-b,\dots,n-a ситуаций, что в момент времени k был переход в состояние j и затем в этом состоянии мы находились n-k отсчетов. Таким образом, в отличие от классического алгоритма Витерби здесь пересчет идет по моментам смены состояния сигнала. Сложность алгоритма соответственно возрастает в b-a раз.
Д.А. Кропотов 20:53, 13 ноября 2009 (MSK)
Спасибо большое за разъяснение!
Марина Дударенко 20:27, 15 ноября 2009 (MSK) Дударенко Марина

Здравствуйте! Не могли бы вы проверить, правильно ли я вывел формулы для M-шага EM-алгоритма в случае авторегрессионной скрытой марковской модели:

\textstyle\mu_{j^*} = \frac{\sum_{i=1}^N \gamma(t_{ij^*})\(x_i - \sum_{m=1}^Mc_{mj^*}x_{i-m}\)}{\sum_{i=1}^N \gamma(t_{ij^*})};

\textstyle\Sigma = \frac
{\sum_{j=1}^K \sum_{i=1}^N \gamma(t_{ij})\(x_i - \sum_{m=1}^Mc_{mj}x_{i-m}\)^T\(x_i - \sum_{m=1}^Mc_{mj}x_{i-m}\)}
{\sum_{i=1}^N \gamma(t_{ij^*})};

\textstyle c_{m^*j^*} = \frac
{\sum_{i=1}^N \gamma(t_{ij}) x_{i-m^*}^T \left(x_i - \mu_{j^*} - \sum_{m\not=m^*}\left(c_{mj^*}x_{i-m}\right) \right)}
{\sum_{i=1}^N \gamma(t_{ij^*}) x_{i-m^*}^T x_{i-m^*} };

Василий Ломакин 10:43, 23 ноября 2009 (MSK)

  • Формула для \mu_j правильная.
  • Формула для \Sigma не совсем правильная. Во-первых, в знаменателе должна стоять еще и сумма по всем j. Что такое у вас j^* в формуле для \Sigma — не совсем понятно. Во-вторых, в числителе должен быть вектор \mu_j в мат.ожидании, т.е. компоненты вида x_i-\mu_j-\sum_{m=1}^Mc_{mj}x_{i-m}. В-третьих, обычно в векторной нотации вектор — это вектор-столбец, т.е. для получения матрицы должно быть выражение вида vv^T. Если у вас под вектором понимается вектор-строка, то формула правильная, если нет, то транспонирование должно быть в другом месте.
  • Формула для c_{mj} абсолютно неправильная. Помимо прочего она должна зависеть от матрицы \Sigma и не зависеть от остальных компонент c_{mj}. Попробуйте еще подумать над формулой для c_j. Советую выводить эту формулу сразу для вектора c_j, а не для отдельных его компонент. Если не будет получаться, то тогда, что делать, подскажу правильный вариант.
Крайний срок сдачи второго задания с уменьшением оценки за позднюю сдачу - ближайшее воскресенье, 29 ноября. После этого срока задание принято не будет (соответственно не будет допуска к экзамену). — Д.А. Кропотов 19:39, 23 ноября 2009 (MSK)
Да, прошу прощения, при наборе формулы для ковариационной матрицы я напутал, все ваши замечания правильные.
Насчёт c_j - попробую последовать вашему совету. Эта идея приходила мне в голову, но меня остановило то, что мы не изучали дифференцирование по вектору (по c_j).
Насчёт сдачи задания - я ведь его уже сдал, вы его не получили или пока не проверяли? В readme я указал, что выведенные мной формулы работают только для случая M = 1. В общем я разберусь в вопросе и новую версию программы досдам, надо же всё-таки работу до конца довести. Если что-то не получится, подойду к вам в четверг.
  1. Ваше задание не было получено. Из 517 группы задание получено только от Одиноковой Евгении. В системе проверки задания в таблице есть строчка от еще одного представителя 517 группы, но самого архива с работой нет. Возможно, вы что-то не так сделали на этапе загрузки задания на сервер. Попробуйте загрузить свой архив еще раз.
  2. Что касается дифференцирования по вектору, то вам понадобятся только два следующих свойства: \frac{d}{d\vec{x}}\vec{x}^T\vec{b}=\vec{b} и \frac{d}{d\vec{x}}\vec{x}^TA\vec{x}=2A\vec{x}. Оба этих свойства легко проверяются путем покоординатного дифференцирования.
Д.А. Кропотов 22:23, 23 ноября 2009 (MSK)
Василий Ломакин 21:47, 23 ноября 2009 (MSK)
Личные инструменты