|
Скрытые марковские модели., Принцип работы, обучения. |
|
|
|
Aug 30 2012, 11:51
|
Участник

Группа: Участник
Сообщений: 54
Регистрация: 1-12-06
Пользователь №: 23 016

|
Всем привет. Давно интересует этот вопрос.
Нужно понять как работает сеть на основе Скрытых Марковских Моделей в общих чертах.
Математикой не владею и нигде нет простого объяснения, на пальцах так сказать, или простейшей программы с исходным кодом для нескольких данных, либо километровые формулы, либо кружки со стрелочками. Было бы хорошо если будет простейший пример или код.
Например: есть входные данные X(n)=1..5, они поступают на СММ, что дальше СММ делает, что с чем сравнивает, какие коэффициенты подстраиваются и обучаются, к чему стремится система СММ. Программного кода нигде нет, где было бы видно по шагам, как программа и что вычисляет и куда записывает.
Так что для меня пока понятно лишь одно СММ это вероятность появления или ожидания определенных последовательностей данных. А как этот опыт при обучении записывается в каких коэффициентах, где аккумулируется и как сравнивается - совпадение, несовпадение пришедших данных с опытом и памятью обученой системы на основе СММ непонятно.
Писал на других форумах, но везде полная тишина.
|
|
|
|
|
 |
Ответов
|
Aug 30 2012, 12:17
|
Профессионал
    
Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968

|
Цитата(TViT @ Aug 30 2012, 15:51)  Всем привет. Давно интересует этот вопрос.
Нужно понять как работает сеть на основе Скрытых Марковских Моделей в общих чертах.
Математикой не владею и нигде нет простого объяснения, на пальцах так сказать, или простейшей программы с исходным кодом для нескольких данных, либо километровые формулы, либо кружки со стрелочками. Было бы хорошо если будет простейший пример или код.
Например: есть входные данные X(n)=1..5, они поступают на СММ, что дальше СММ делает, что с чем сравнивает, какие коэффициенты подстраиваются и обучаются, к чему стремится система СММ. Программного кода нигде нет, где было бы видно по шагам, как программа и что вычисляет и куда записывает.
Так что для меня пока понятно лишь одно СММ это вероятность появления или ожидания определенных последовательностей данных. А как этот опыт при обучении записывается в каких коэффициентах, где аккумулируется и как сравнивается - совпадение, несовпадение пришедших данных с опытом и памятью обученой системы на основе СММ непонятно.
Писал на других форумах, но везде полная тишина. А Вы посмотрите в сторону Open computer vision library. В 2005 г. все было с исходниками. Обучал систему распознавания номеров, конкретно - на СММ распознавал цифры и буквы вырезанные из картинки - очень гуд. Глубоко не копал, там (в опенCV) были функции для загрузки СММ (обученных), обучения СММ, записи обученных СММ, ну и собственно распознавания образов. Все функции можно было посмотреть, библиотека опенЦВ от начала до конца была с исходниками. Повторюсь, занимался этим в 2005 г., как с ней сейчас дела обстоят не знаю, вроде где-то год назад из интереса смотрел OpenCV - в памяти осталось что теперь это за деньги покупается.
|
|
|
|
|
Aug 30 2012, 12:46
|
Участник

Группа: Участник
Сообщений: 54
Регистрация: 1-12-06
Пользователь №: 23 016

|
Цитата(alexPec @ Aug 30 2012, 16:17)  А Вы посмотрите в сторону Open computer vision library. В 2005 г. все было с исходниками. Обучал систему распознавания номеров, конкретно - на СММ распознавал цифры и буквы вырезанные из картинки - очень гуд. Глубоко не копал, там (в опенCV) были функции для загрузки СММ (обученных), обучения СММ, записи обученных СММ, ну и собственно распознавания образов. Все функции можно было посмотреть, библиотека опенЦВ от начала до конца была с исходниками. Повторюсь, занимался этим в 2005 г., как с ней сейчас дела обстоят не знаю, вроде где-то год назад из интереса смотрел OpenCV - в памяти осталось что теперь это за деньги покупается. Да, я знаю эту библиотеку. Но вот как раз мне хочется имено независимо ни от каких библиотек подойти к СММ т.е. глубоко копать код я не стал, там дикий лес, не одну неделю потратить можно пока проследишь все взаимосвязи в коде какие данные приходят что делается. Да и потом эту библиотеку с собой таскать постоянно это напряжно. Нужен маленький код в результате только для конкретной задачи для СММ. А так из тойже серии набор исходников HTK tool, там тоже есть СММ, но копать там исходники тоже кашмар, нужно немало времени чтобы въехать ... Да еще тем более когда понятия не имеешь какой код за что отвечает и что перед этим с входными данными делается. Знаю списывался с разными людьми что процесс обучения довольно замудреный, то ли алгоритмом Витерби, то ли ЕМ-моделями. Но мне даже это не оч интерессно на крайняк для простоты и понимания перебором обучу простейший пример из нескольких данных. Важно само понимание что есть СММ, марковская цепь. За что коэффициенты отвечают, что потом когда система обучена происходит как сравнение реализовано. Образы я распознавал через нейронную сеть все просто и понятно, хотя в начале голову поломал... Все во время упирается...
Сообщение отредактировал TViT - Aug 30 2012, 12:53
|
|
|
|
|
Sep 2 2012, 20:39
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 26-07-11
Пользователь №: 66 426

|
если это то, что описано в википедии по вопросу СММ - то это легко изобразить в любом функциональном языке достаточно быстро и кода будет очень не много, т.к. это математика ) здесь https://github.com/mikeizbicki/hmm есть сама библиотека (в папке Data файл HMM.hs) на Хаскеле и пример HMMTest.hs как ей пользоваться, там же в низу этого файла можете забить по аналогии любые свои данные и запустить... а так же проследить всю цепочку вычислений (хотя бы даже командой помощи :i [ имя функции или типа] в интерпретаторе ghci), помойму очень доступно, т.к. кода от силы 3-4 листа A4, за два вечера можно понять все взаимосязи между функциями... к тому же есть готовые способы из этого кода собрать все взаимосвязи графически... сделано через алгоритм Витерби, одако там совсем немного стоит поменять под любой желаемый вами, но боюсь время исполнения увеличится... а вот что вообще тут может быть интересным, когда есть сети Такаги-Сугено-Канга ) вот там действительно интересно с ними работать а насчёт того где и что СММ накапливает - да толком она не накапливает где-то, а размазывает по всем своим коэффициентам, судя по формулам такая же есть для лиспа - https://github.com/jmcejuela/CL-HMMи для матлаба - http://www.cs.ubc.ca/~murphyk/Software/HMM/hmm.htmlно последние две в силу своего императивного происхождения куда более длинные по коду и более сложные для понимания
Сообщение отредактировал abit - Sep 2 2012, 21:34
|
|
|
|
|
Sep 3 2012, 06:25
|
Участник

Группа: Участник
Сообщений: 54
Регистрация: 1-12-06
Пользователь №: 23 016

|
Спасибо abit это уже что-то. Хоть язык Хаскель мне не знаком буду копать ) Главное чтобы никаких функций импортируемых небыло которые всю основную работу делают. Иначе и не поймешь что и как ) И никуда на другой язык не перепишешь...
Сообщение отредактировал TViT - Sep 3 2012, 06:29
|
|
|
|
|
Sep 3 2012, 16:44
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 26-07-11
Пользователь №: 66 426

|
Цитата(TViT @ Sep 3 2012, 10:25)  Спасибо abit это уже что-то. Хоть язык Хаскель мне не знаком буду копать ) Главное чтобы никаких функций импортируемых небыло которые всю основную работу делают. Иначе и не поймешь что и как ) И никуда на другой язык не перепишешь... Я вник в Ваши планы ) в общем Хаскель это не панацея для Вас... почему? хорошая новость - то, что несёт Хаскель - это понимание проблемы, полное описание проблемы на строгом языке, я думал Вам нужно вникнуть в проблему СММ... вы получили компактный код библиотеки на Хаскеле без сторонних библиотек... но есть и плохая новость... о ней чуть позже... сперва поймите что такое функциональный язык... эти языки строятся примерно так: компилятору даётся понимание некоторого понятия (абстрактного понятия) термина функция... в том плане, что она имеет некоторые аргументы и некую зависимость от других функций... иными словами практически из ничего, на абстрактном понятии функция строится всё... логика, арифметика, дифуры, матанализ и т.д. на пальцах выглядит так: в перовом модуле Хаскеля (не на уровне языка, а именно в модуле) - принимается функция под именем Boolean, область значений которой два абстрактных понятия True и False и не имеет входных параметров затем вводится функция NOT, которая имеет параметр X, функция работает так, что если X - True, то NOT X = False... и наоброт... подобным образом вводятся все остальные логические функции и даже вся арифметика, геометрия и т.д.... теперь плохая новость... в Хаскеле нет алгоритмов вообще... нет циклов или последовательности действий... всё, что написанно в этой библиотеке - это не алгоритмы, а описание проблемы на этом языке... математическое описание... как же тогда он решает задачи? это, как правило, редукции, основанные на лямбда-исчислении... они создают самые оптимальные алгоритмы решения данной задачи на данных условиях... при этом это решение по алгоритмической сложности совпадает с лучшими алгоритмами на императиных языках придуманных человечеством с точностью до константы... всю мощь лямбда-исчисления не то что программисты - математики не понимают ) поэтому Хаскель для вас не панацея, потому что он не скажет как это делать, он говорит что нужно делать... и расскажет точную формулировку задачи, ведь не будь она точной - он бы не смог найти алгоритм её решения... поэтому я ошибся, думая, что вы не понимаете проблемы и подсунул вам эту библиотеку... если вам нужны конкретные алгоритмы решения той или иной задачи - это отдельный разговор... но при этом вы должны строго понимать всю задачу как можно более детально... потому что задача СММ на пальцах - это всё равно, что рассказать про глюонное облако в двух словах... лучше в этом разобраться и эта библиотека - в этом сильно поможет, к тому же вы можете и не вникать, а просто пользоваться как есть ) ещё советую вам сайт естественных наук - http://e-science.ru/там на форуме такие личности водятся - мне на пальцах расписали тензор энегрии-импульса в проблеме почему безмассовые фотоны взаимодействуют с гравитацией ) я думаю там и вам помогут
Сообщение отредактировал abit - Sep 3 2012, 17:05
|
|
|
|
|
Sep 3 2012, 17:18
|
Участник

Группа: Участник
Сообщений: 54
Регистрация: 1-12-06
Пользователь №: 23 016

|
Интересно вы дополнили ))) Про глюонное поле даже сами физики не знают ничего кроме того что оно наделяет массой вещество как только кварки объединились для рождения частицы. А почему и как тупик. Точно также как никто не скажет что такое магнитное поле, электрическое поле, гравитация и т.д. А уж о темной энергии и вещ-ве я молчу ))) Так что мне как раз и нужо на пальцах примерный смысл понять без особого понимания почему и как )
На указанном сайте зарегился буду пытаться писать там )))
Если не сильно заняты и варите в данной теме можете написать мне примерчик простенький на любом языке, Си, VB, Delphi, ну и если че заплачу. )))
Сообщение отредактировал TViT - Sep 3 2012, 17:27
|
|
|
|
|
Sep 3 2012, 18:03
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 26-07-11
Пользователь №: 66 426

|
Цитата(TViT @ Sep 3 2012, 21:18)  Интересно вы дополнили ))) Про глюонное поле даже сами физики не знают ничего кроме того что оно наделяет массой вещество как только кварки объединились для рождения частицы. А почему и как тупик. Точно также как никто не скажет что такое магнитное поле, электрическое поле, гравитация и т.д. А уж о темной энергии и вещ-ве я молчу ))) Так что мне как раз и нужо на пальцах примерный смысл понять без особого понимания почему и как )
На указанном сайте зарегился буду пытаться писать там )))
Если не сильно заняты и варите в данной теме можете написать мне примерчик простенький на любом языке, Си, VB, Delphi, ну и если че заплачу. ))) исходя из моих сведений, они всё таки представляют себе достаточно хорошо это облако) основа - это хотя бы "теория всего" от Хокинга, который вроде как самый ведущий физик современности ) кроме того, есть и развитие этой теории - супер-струнной теории и даже её развитие - M-теория, где масса это амплитуда колебаний струн... и никто это не опровергнул, на сколько мне известно... об остальных, описанных вами вещах мы знаем очень многое - да же то, что не было изучено... скажем уравнения Максвелла ) этого достаточно чтобы знать и H и E практически всё... просто бери и изучай на конкретных граничных условиях... так же как и в квантовой физике - уравнение Шрёдингера даст ответ на любой поставленный вопрос если задать граничные условия и правильно решить... или в теории относительности - уравнения ОТО при различных условиях дают всё - от чёрных дыр до замедления времени в гравитационном поле, даже тёмная энергия была предсказана именно в этих уравнениях! - но тема не об этом ) я надеюсь, что сайт Вам поможет... там очень толковые люди... примерчик не обещаю ) потому что не понятно что понимается под примерчиком) вырожденный случай? или написать всё с нуля? в лучшем случае я могу перевести эту библиотеку с Haskell на fpc или gcc... (Delphi/VC нет, ибо я в линуксе живу)... но имхо этот перевод будет для вас ещё более запутанным, нежели HTK tool, уверяю... p.s. но я советую Вам попробовать сперва разобраться самому, по библиотеке Хаскеля, используя команду :i нужная функция или тип... и он вам ответит что это и зачем... и даже вот я заметил, что в английской версии википедии про HMM достаточно хорошо написано, к тому же любой вопрос в Вашей голове по конкретике - и всегда найдёте ответ на том сайте что я дал... тут ничего не скрывают ) это же не квантовая физика, чтобы было сложно понять и не алгоритм Mp-3, чтобы скрывать под патентами
Сообщение отредактировал abit - Sep 3 2012, 18:27
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|