Pull to refresh

Comments 25

Если интересно, требуйте продолжения…


Безусловно интересно. Побольше бы таких статей.
Все чаще ловлю себя на мысли. что в большом сообществе, очень часто находятся те, кто может написать быстрее, лучше или (не исключающее) понятнее.
А еще такое может стать откровением,
когда чужие решения, из незнакомых для тебя областей знания, можно применить в своей работе,
да еще никак вроде бы не связанной с описанными в статье задачами и применениями.

пишите!
У одного моего хорошего знакомого прекрасный девиз в скайпе: «Делай, что должен и будь, что будет!»
Если кто-то напишет понятнее — это прекрасно, но это не повод не писать как можешь.
«Делай, что должен и будь, что будет!»
Первый раз услышал это от А.А. Фурсенко, экс-минобра, в передаче Познера.
Это Марк Аврелий сказал. Только не «должен», а «до́лжно». А вообще, мне кажется некорректным употреблять фразы без знания контекста, в котором она прозвучала изначально.
Возможно, что и Марк Аврелий. Я не историк. В любом случае, вряд-ли он говорил эту фразу по русски (это я про «должен» и «должно»).
В сфере образования и вообще (само)обучения наблюдается отчетливая тенденция перехода от системного обучения к поисковому. Люди все чаще вместо использования собственных накопленных знаний ищут чужие, но профильные и используют именно их. В этом контексте ценность Ваших статей будет со временем только расти.

Пишите конечно. Подход далеко не тривиальный. В учебниках практически не описанный. Это намного ценнее «понятности».
В смысле, как человек может использовать собственные накопленные знания в поисках чего-то нового? :)
Чужие знания.

Хотя свои, кстати, тоже помогают, я один раз присутствовал (сказать, что я как-либо помог, было бы нескромно) в ситуации, когда человек сложил вместе задачу (тоже классификация), имеющийся подход (ручное написание правил) и сложные-непонятные методы линейной регрессии, о которых он слышал в универе.
На эту тему вспомнился случай. Пришлось изучать один старый алгоритм классификации данных, который был реализован, судя по коду, биологом. Человек не зная того, сам заново открыл логистическую регрессию.
Интересная тема. А есть ли промышленные решения детекторов лжи с использованием ML? В принципе, навесить датчиков и обучить nn, наверное, труда особого не составляет.
Думаю, все программные комплексы детекторов лжи имеют те или иные алгоритмы ML.
Начиная от простейших supervised задач и кончая умным препроцессингом.
Нейронные сети все-таки это средство для создания моделей, а не сами модели, но тема сравнения различных подходов лично меня бы очень заинтересовала.
Нейронные сети — лишь одна из моделей машинного обучения.
Обладающая тем недостатком, что построенные модели практически неинтерпретируемы.
Я бы сказал, что это всего лишь один из недостатков, и далеко не самый страшный
Хочу добавить, что алгоритм Витерби можно еще использовать для синхронизации нотной записи и реально исполняемой музыкантом мелодии (называется Score following), в клавиатурных тренажерах (если точное посимвольное совпадение не так важно), ну и других подобных задачах.

Надеюсь от меня будет статья на эту тему в будущем.
Использование Витерби в анализе звука очень распространено, но описания лучше, чем у Рабинера нигде не могу найти.
Несколько замечаний по статье:
1. Возможно сначала стоило бы рассмотреть СММ с дискретными распределениями вероятностей наблюдений, а уже затем перейти к непрерывным распределениям.
2. У вас имеется проблема с обозначениями.
С начала I — вектор вероятностей, того что система находится в состоянии i в момент времени 0, а потом I(x) – индикаторная функция. Здесь лучше выбрать другую букву. Кроме того нет пояснения, что такое «индикаторная функция».
3. Плохо описан алгоритм оценки параметров СММ. Он итерационный вообще-то (потому что это EM-алгоритм). В статье про это не сказано ни слова. Ну и каждую формулу оценки надо бы пояснить. Я, например, не понял, почему вы написали именно такие.
По пунктам:
1. Использование в модели плотности непрерывного распределения и использование конечной дискретной функции вероятности приводит к аналогичным функциям расчёта. Согласен, что забыл это уточнить в статье. По поводу того, что использую непрерывное распределение: все мои потуги придумать живой пример с дискретным распределением оказались тщетны. Было бы здорово, если бы кто-нибудь что-нибудь предложил (подбрасывание бракованной монеты или шулерской кости не в счёт).
2. Согласен, сейчас подправлю. По программистской привычке пользуюсь сигнатурой, а не именем.
3. Это не алгоритм оценки параметров, это алгоритм обучения. На самом деле я просто хотел сразу же ответить, откуда мы можем взять начальную модель. То что Вы называете алгоритмом оценки параметров, у меня упоминается как алгоритм Баума-Велша (Он как раз EM-алгоритм, которому все равно нужна 0-ая итерация). Я надеюсь, что оформлю про него отдельную статью.
Это не алгоритм оценки параметров, это алгоритм обучения. На самом деле я просто хотел сразу же ответить, откуда мы можем взять начальную модель. То что Вы называете алгоритмом оценки параметров, у меня упоминается как алгоритм Баума-Велша (Он как раз EM-алгоритм, которому все равно нужна 0-ая итерация). Я надеюсь, что оформлю про него отдельную статью.


Т.е. я правильно понимаю, что тот набор формул описывает процесс задания начальных параметров СММ? Если так, то здесь уместнее употреблять слово «инициализация». Все же в литературе под обучением как правило понимается поиск на основе некоторой обучающей выборки таких параметров модели, которые бы удовлетворяли заданному критерию оптимальности.
Пожалуй, добавлю кое что от себя для заинтересовавшихся. Алгоритм Витерби очень хорош, но у него есть одна маленькая проблема: ему требуется обратный проход, что делает несколько проблематичным обработку данных в реальном времени. Тем не менее, иногда (для некоторых моделей никогда, для некоторых часто) оптимальные пути состояний внезапно сходятся в одной точке. Если немного поразмыслить, то становится понятно, что из этой точки можно делать обратный проход, не дожидаясь конца последовательности, без ущерба для оптимальности. Существует эффективный алгоритм отслеживания оптимальных путей, который хранит их в специальной древесной структуре данных с минимальным оверхедом, реализующий этот принцип.

Кроме того, алгоритм Витерби вообще говоря является частным случаем более сложного алгоритма belief propagation (max-product / max-sum), который грубо говоря делает все то же самое, но не только для цепочек, а для произвольных деревьев. Алгоритмы этого семейства довольно хорошо исследованы и имеют хорошие приближенные параллельные варианты. Может показаться, что параллельность здесь вставляется очевидно — в прямой проход во время вычисления стоимости для следующего возможного состояния (можно паралеллить по этим состояниям), но, увы, состояний обычно достаточной мало, поэтому такое распараллеливание не приносит особой выгоды. Это все, правда, заслуживает отдельной статьи
Об belief propagation слышу впервые. Было бы очень интересно о нем узнать больше.
Интересные вы привели примеры. Несомненно хочется продолжения! Спасибо за материалы!
Интересует: обучение CRF со скрытыми переменными, beam поиск, foward — backward и желательно с примерами и побольше :)

Имеется ли на русском языке литература по графическим моделям?
Sign up to leave a comment.

Articles