|
|
  |
Скрытые марковские модели., Принцип работы, обучения. |
|
|
|
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
|
|
|
|
|
Sep 3 2012, 18:27
|
Участник

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

|
Цитата исходя из моих сведений, они всё таки представляют себе достаточно хорошо это облако) основа - это хотя бы "теория всего" от Хокинга, который вроде как самый ведущий физик современности ) кроме того, есть и развитие этой теории - супер-струнной теории и даже её развитие - M-теория, где масса это амплитуда колебаний струн... и никто это не опровергнул, на сколько мне известно... об остальных, описанных вами вещах мы знаем очень многое - да же то, что не было изучено... скажем уравнения Максвелла ) этого достаточно чтобы знать и H и E практически всё... просто бери и изучай на конкретных граничных условиях... так же как и в квантовой физике - уравнение Шрёдингера даст ответ на любой поставленный вопрос если задать граничные условия и правильно решить... или в теории относительности - уравнения ОТО при различных условиях дают всё - от чёрных дыр до замедления времени в гравитационном поле - но тема не об этом ) Да вот то-то и оно что толком ничего не знают, догадки, теорий куча и т.д. Сам Хокинг много лет бился чтобы доказать что по его теории в черной дыре должна стираться информация вещества-материи и потом его коллеги доказали что нет информация все равно остается при попадании в черную дыру только материя исчезает (как я понял). Потом теория вакуума опять не понятно почему в пустоте на самом деле рождаются и анигилируют с большой скоростью частицы. Опыт физиков доказал что вакуум и правда кипящая масса частиц в упрощенном виде они зеркало колебали с дикими частотами и зарегистрировали рождение света из вакуума. А все остальные силы они только по их взаимодействиям между собой и на объекты изучают, гравитацию по взаимодействие на свет, планеты, электромагнетизм по действие на заряженые частицы, а что такое само по себе эл. или магнитное поле - частицы может частота колебания эфира, вакуума? Может вихри темной энергии, а тогда что такое темная энергия - может просто информация от большого взрыва как отклонение от равновесия той же информации? Что такое гравитация. Толи частица толи волна как рождается как распространяется есть ли связь информационная, другими словами действуют ли схожие объекты в разных галактиках друг на друга когда гравитация никак не влияет и т.д. Иначе мы жили бы в другом мире. Цитата я надеюсь, что сайт Вам поможет... там очень толковые люди... Пока тему не могу создать пишет нет прав подожду может подтверждение регистрации нужно дождаться... Цитата примерчик не обещаю ) потому что не понятно что понимается под примерчиком) вырожденный случай? или написать всё с нуля? в лучшем случае я могу перевести эту библиотеку с Haskell на fpc или gcc... (Delphi/VC нет, ибо я в линуксе живу)... но имхо этот перевод будет для вас ещё более запутанным, нежели HTK tool, уверяю... Будет время сделайте пожалуйста перевод с Хаскеля, не к спеху просто у самого времени нет вот по капле копаю. Буквально в примере типа задаем структуру HMM в ней такие то поля означают то и то. Потом поступают данные 1,2,3,4,5. Подстраиваем коэффициенты там и там по такому принципу и потом запускаем на вход опять данные 1,2,3,4,5 и сравниваем через HMM результат так и так. Да даже если так подумать и код то не нужен. Можно просто какое то описание принципа. Как в инете кружки со стрелочками вот все эти кружки и стрелочки расписать. Если будет примерное понимание я сам код напишу для примера. Вот что то типа такова. Максимально просто. с мин кол-во данных. Пока буду сам копать по мере сил и времени. Нужно для распознавания речи образов. На нейронных сетях работает, а вот хотел через HMM попробовать.
Сообщение отредактировал TViT - Sep 3 2012, 20:07
|
|
|
|
|
Sep 5 2012, 13:12
|
Участник

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

|
Цитата(TViT @ Sep 3 2012, 22:27)  Будет время сделайте пожалуйста перевод с Хаскеля, не к спеху просто у самого времени нет вот по капле копаю. Давайте не будем изобретать велосипеды) Я думал вам нужно понимание вопроса Вот здесь есть статья - http://www.shokhirev.com/nikolai/abc/alg/hmm/hmm.htmlможно полюбоваться на красивые формулы и картиночки, отмотайте вниз и уведите ссылки на исходники на Delphi и C++ из стороннего там нужно лишь Matlib, который тоже есть на этом сайте
Сообщение отредактировал abit - Sep 5 2012, 13:13
|
|
|
|
|
Sep 5 2012, 14:01
|
Участник

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

|
Цитата(abit @ Sep 5 2012, 17:12)  Давайте не будем изобретать велосипеды) Я думал вам нужно понимание вопроса Вот здесь есть статья - http://www.shokhirev.com/nikolai/abc/alg/hmm/hmm.htmlможно полюбоваться на красивые формулы и картиночки, отмотайте вниз и уведите ссылки на исходники на Delphi и C++ из стороннего там нужно лишь Matlib, который тоже есть на этом сайте Хорошо. Спасибо буду копать дальше ))) На данном вами сайте (http://e-science.ru/) написать так и не получилось - не приходит подтверждение регистрации. Уже регил два ника и два разных мыла.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|