Обсуждение:Структурные методы анализа изображений и сигналов (курс лекций, А.С. Конушин, Д.П. Ветров, Д.А. Кропотов, О.В. Баринова, В.С. Конушин, 2009)
Материал из MachineLearning.
Добрый день! Возник вопрос по поводу задания 3. Нашёл следующие непонятные для себя моменты:
- «где — коэффициенты авторегрессии, которые зависят от состояния СММ.» Т.е коэффициентов М+1 штука. В то же время в описании функций сказано: «C — коэффициенты авторегрессии, матрица типа double размера K x M;» Не ясно, где ошибка - M или М+1.
- , где - число, - вектор, получается сложение вектора с числом. Хотя если смотреть с точки зрения матлаба, вопрос отпадает :)
- В описании функций указано «Mu — константы в центрах гауссиан для каждого состояния, матрица типа double размера K x d, в которой в каждой строке стоит вектор для соответствующего состояния; ». Но по формуле Mu на каждом шаге генерится только с помощью авторегрессии. Для чего тогда передавать этот параметр?
Василий Ломакин 20:14, 1 ноября 2009 (MSK)
- Василий, здравствуйте. По сути, в Вашем вопросе уже содержатся ответы:
- Матрица ;
- В качестве величины используйте -мерный вектор Mu_j из спецификации СММ;
- Коэффициенты авторегрессии считаем общими для всех размерностей вектора . Таким образом, :получаем линейную комбинацию векторов и никаких некорректностей не возникает.
- Желаю Удачи.
- --Д.П. Ветров 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)
- Один из возможных способов решения задачи — вводить функцию Беллмана как стоимость оптимальной траектории при условии, что в момент времени мы находимся в состоянии , причем в следующий момент времени произойдет переход в другое состояние. Пусть и — соответственно минимально и максимально допустимая длина одного сегмента. Тогда функция Беллмана вычисляется как максимум по моментам времени ситуаций, что в момент времени был переход в состояние и затем в этом состоянии мы находились отсчетов. Таким образом, в отличие от классического алгоритма Витерби здесь пересчет идет по моментам смены состояния сигнала. Сложность алгоритма соответственно возрастает в раз.
- Д.А. Кропотов 20:53, 13 ноября 2009 (MSK)
- Спасибо большое за разъяснение!
- Марина Дударенко 20:27, 15 ноября 2009 (MSK) Дударенко Марина
Здравствуйте! Не могли бы вы проверить, правильно ли я вывел формулы для M-шага EM-алгоритма в случае авторегрессионной скрытой марковской модели:
;
;
;
Василий Ломакин 10:43, 23 ноября 2009 (MSK)
- Формула для правильная.
- Формула для не совсем правильная. Во-первых, в знаменателе должна стоять еще и сумма по всем . Что такое у вас в формуле для — не совсем понятно. Во-вторых, в числителе должен быть вектор в мат.ожидании, т.е. компоненты вида . В-третьих, обычно в векторной нотации вектор — это вектор-столбец, т.е. для получения матрицы должно быть выражение вида . Если у вас под вектором понимается вектор-строка, то формула правильная, если нет, то транспонирование должно быть в другом месте.
- Формула для абсолютно неправильная. Помимо прочего она должна зависеть от матрицы и не зависеть от остальных компонент . Попробуйте еще подумать над формулой для . Советую выводить эту формулу сразу для вектора , а не для отдельных его компонент. Если не будет получаться, то тогда, что делать, подскажу правильный вариант.
- Крайний срок сдачи второго задания с уменьшением оценки за позднюю сдачу - ближайшее воскресенье, 29 ноября. После этого срока задание принято не будет (соответственно не будет допуска к экзамену). — Д.А. Кропотов 19:39, 23 ноября 2009 (MSK)
- Да, прошу прощения, при наборе формулы для ковариационной матрицы я напутал, все ваши замечания правильные.
- Насчёт - попробую последовать вашему совету. Эта идея приходила мне в голову, но меня остановило то, что мы не изучали дифференцирование по вектору (по ).
- Насчёт сдачи задания - я ведь его уже сдал, вы его не получили или пока не проверяли? В readme я указал, что выведенные мной формулы работают только для случая = 1. В общем я разберусь в вопросе и новую версию программы досдам, надо же всё-таки работу до конца довести. Если что-то не получится, подойду к вам в четверг. Василий Ломакин 21:47, 23 ноября 2009 (MSK)
- Ваше задание не было получено. Из 517 группы задание получено только от Одиноковой Евгении. В системе проверки задания в таблице есть строчка от еще одного представителя 517 группы, но самого архива с работой нет. Возможно, вы что-то не так сделали на этапе загрузки задания на сервер. Попробуйте загрузить свой архив еще раз.
- Что касается дифференцирования по вектору, то вам понадобятся только два следующих свойства: и . Оба этих свойства легко проверяются путем покоординатного дифференцирования.
- — Д.А. Кропотов 22:23, 23 ноября 2009 (MSK)
- Очень странно, только что зашёл на сайт и скачал оттуда своё собственное задание. Что я делаю не так? Всё равно загрузить повторно?
- Да, спасибо, вывести уже получилось, сейчас проверяю как оно работает...
- И ещё вопрос - а почему заведомо не работала формула, описанная выше? Я принципиально ошибся при дифференцировании или по какой-то причине всё равно не получится рассчитать покоординатно? Василий Ломакин 23:36, 23 ноября 2009 (MSK)
- Я попробую выяснить у администратора ресурса, с чем могут быть связаны проблемы при загрузке задания. Может быть в системе после того, как задание загружено, нужно нажать на какую-нибудь кнопку «отправить задание на проверку»?
- Ваша формула для переходит в правильную при . Что касается возможности покоординатного вычисления, то при выводе соответствующих формул в какой-то момент должна возникнуть система линейных уравнений. Если СЛАУ записана в векторной форме , то очень просто записать ответ в явном виде . Кроме того, в том случае, если матрица вдруг окажется вырожденной или плохо обусловленной, то сразу понятно, что делать — находить нормальное псевдорешение по формуле для некоторого небольшого . В принципе можно выписать явную формулу и для отдельной компоненты по правилу Крамера, но в таком виде формула получится громоздкой и долго вычисляемой на компьютере.
- Д.А. Кропотов 01:42, 24 ноября 2009 (MSK)
- Только что загрузил задание. Нашёл в интерфейсе кнопку "Подтвердить задание", нажал её, может быть это поможет. Хотя помню, что при загрузке задания по удалению шума её не нажимал. Чтобы всё было честно добавил в архив и старый вариант, отправленный неделю назад. Новый отличается модификацией обучения в EM-алгоритме и несколько более читабельным кодом. Алгоритм Витерби и генерация выборки такие же. Судите сами заслуживает ли это штрафа и в каком объёме :) Спасибо! Василий Ломакин 14:27, 24 ноября 2009 (MSK)
- И ещё вопрос вдогонку - а где лучше почитать про дифференцирование по вектору, по матрице и т.п.?
- Да, теперь задание получено.
- Про дифференцирование по векторам и матрицам вкратце написано в приложении C книги Bishop C.M. Pattern Recognition and Machine Learning, Springer, 2006. Кроме того, многие модели в этой книги выводятся с использованием матричной нотации.
- Д.А. Кропотов 22:00, 24 ноября 2009 (MSK)
- И ещё вопрос вдогонку - а где лучше почитать про дифференцирование по вектору, по матрице и т.п.?