Як би ви пояснили церкву Маркова Монте-Карло (MCMC) лайперсону?


240

Можливо, концепція, чому вона використовується, і приклад.


14
Ось мій улюблений документ на тему: citeseerx.ist.psu.edu/viewdoc/…

На цьому сайті ви знайдете приємне графічне зображення MCMC та кілька корисних посилань.
Сергій

3
Щоб зрозуміти алгоритм MCMC, ви повинні зрозуміти, для чого він насправді використовується і як він переходить до заданого розподілу. Я блогів про всю інтуїцію та програми для неї. Ви можете відвідати їх тут: mlwhiz.com/blog/2015/08/19/MCMC_Algorithms_Beta_Distribution mlwhiz.com/blog/2015/08/21/MCMC_Algorithms_Cryptography
Рахул Агарвал

Будь ласка, зверніться до наступного репо, де представлено детальне пояснення MCMC. github.com/bashhwu/Sampling-based-inference/blob/master/…
Башар Мохаммед

Відповіді:


223

Спочатку нам потрібно зрозуміти, що таке ланцюг Маркова. Розглянемо наступний приклад погоди з Вікіпедії. Припустимо, що погоду в будь-який день можна класифікувати лише на два стани: сонячне та дощове. На основі минулого досвіду ми знаємо наступне:

P(Next day is Sunny|Given today is Rainy)=0.50

Оскільки погода на наступний день або сонячна, або дощова, випливає, що:

P(Next day is Rainy|Given today is Rainy)=0.50

Аналогічно:

P(Next day is Rainy|Given today is Sunny)=0.10

Отже, випливає, що:

P(Next day is Sunny|Given today is Sunny)=0.90

Наведені вище чотири числа можна компактно представити у вигляді перехідної матриці, яка представляє ймовірність переходу погоди з одного стану в інший наступним чином:

P=[SRS0.90.1R0.50.5]

Ми можемо задати кілька питань, відповіді на які випливають:


Q1: Якщо погода сьогодні сонячна, то яка погода може бути завтра?

А1: Оскільки ми не знаємо, що буде напевно, найкраще, що ми можемо сказати, це те, що існує шансів на те, що, ймовірно, буде сонячно і що буде дощово.10 %90%10%


Q2: А як сьогодні два дні?

A2: Прогноз на один день: сонячно, дощовий. Тому через два дні:10 %90%10%

Перший день може бути сонячним, а наступного дня також сонячним. Шанси цього трапляються: .0.9×0.9

Або

Перший день може бути дощовим, а другий день - сонячним. Шанси цього трапляються: .0.1×0.5

Тому ймовірність того, що погода буде сонячною через два дні, така:

P(Sunny 2 days from now=0.9×0.9+0.1×0.5=0.81+0.05=0.86

Так само ймовірність того, що буде дощово, така:

P(Rainy 2 days from now=0.1×0.5+0.9×0.1=0.05+0.09=0.14


У лінійній алгебрі (матриці переходу) ці обчислення відповідають усім перестановкам при переходах від одного кроку до другого (сонячно-сонячно ( ), сонячно-до- ( ), -сонячно ( ) або дощовий до дощовий ( ) із розрахунковими ймовірностями:S2SS2RR2SR2R

введіть тут опис зображення

У нижній частині зображення ми бачимо, як обчислити ймовірність майбутнього стану ( або ) з урахуванням ймовірностей (функція маси ймовірностей, ) для кожного стану (сонячного чи дощового) у нульовий час (зараз або ) як просте множення матриць.t+1t+2PMFt0

Якщо ви продовжуєте прогнозування погоди , як це можна помітити , що в кінці кінців його прогноз день, де дуже велике (скажімо ), осідає на наступні ймовірності «рівноваг»:nn30

P(Sunny)=0.833

і

P(Rainy)=0.167

Іншими словами, ваш прогноз на -й день та -й день залишаються однаковими. Крім того, ви також можете перевірити, що ймовірність "рівноваги" не залежить від погоди сьогодні. Ви б отримали такий самий прогноз погоди, якби почати з того, якщо припустити, що сьогодні погода сонячна чи дощова.nn+1

Наведений вище приклад спрацює лише в тому випадку, якщо ймовірності переходу стану відповідають декільком умовам, про які я тут не буду говорити. Але зауважте наступні особливості цього «приємного» ланцюга Маркова (nice = ймовірність переходу задовольняє умовам):

Незалежно від початкового початкового стану, ми врешті-решт досягнемо рівноважного розподілу ймовірностей станів.

Ланцюжок Маркова Монте-Карло використовує наведену вище функцію так:

Ми хочемо генерувати випадкові малюнки з цільового розподілу. Тоді ми визначаємо спосіб побудови «приємного» ланцюга Маркова таким чином, щоб його рівноважний розподіл ймовірностей був нашим цільовим розподілом.

Якщо ми можемо побудувати такий ланцюг, то ми довільно починаємо з якоїсь точки і багато разів повторюємо ланцюг Маркова (як, як ми прогнозуємо погоду разів). Врешті-решт малюнки, які ми генеруємо, виглядатимуть так, ніби вони надходять із нашого цільового розподілу.n

Потім ми наближаємо величину, що представляє інтерес (наприклад, середню), беручи середню вибірку розіграшів після відкидання кількох початкових розіграшів, що є компонентом Монте-Карло.

Існує кілька способів побудови «приємних» ланцюгів Маркова (наприклад, пробовідбірник Гіббса, алгоритм Metropolis-Hastings).


2
Це гарно написана відповідь. Хоча це, ймовірно, втратить увагу лайперсона в точці, де обговорюються перехідні матриці.
rraadd88

1
Чудова відповідь. Я думаю, було б корисно пояснити раніше (або більш докладно) про те, що кінцевою метою є визначення деякої кількості інтересу (наприклад, середнього значення або режиму виведених параметрів). Це правильно?
Остін Шін

101

Я думаю, що з алгоритму «Метрополіс-Гастінгс» («ланцюжок незалежності») можна отримати добру та просту інтуїцію.

По-перше, яка мета? Мета MCMC полягає в тому, щоб взяти зразки з деякого розподілу ймовірностей, не знаючи його точної висоти в будь-якій точці. Те, як MCMC досягає цього, полягає в тому, щоб "блукати" над цим розподілом таким чином, щоб кількість часу, проведеного в кожному місці, було пропорційним висоті розподілу. Якщо процес "блукання" встановлений правильно, ви можете переконатися, що ця пропорційність (між витраченим часом та висотою розподілу) досягається.

Інтуїтивно, що ми хочемо зробити - це прогулятися по якійсь (грудкої) поверхні таким чином, щоб кількість часу, яке ми проводимо (або # проби, намальовані) в кожному місці, пропорційне висоті поверхні в цьому місці. Так, наприклад, ми хотіли б провести вдвічі більше часу на вершині пагорба, що знаходиться на висоті 100 м, ніж ми на сусідньому пагорбі, який знаходиться на висоті 50м. Приємно, що ми можемо це зробити, навіть якщо не знаємо абсолютних висот точок на поверхні: все, що нам потрібно знати, - це відносні висоти. наприклад, якщо одна вершина A у два рази більше, ніж вершина B, ми хотіли б витратити в A вдвічі більше часу, ніж ми витрачаємо на B.

Найпростіший варіант алгоритму «Метрополіс-Гастінгс» (вибірки ланцюга незалежності) досягає цього наступного: припустимо, що на кожному (дискретному) кроці часу ми вибираємо нове випадкове «запропоноване» місцеположення (вибране рівномірно по всій поверхні). Якщо запропоноване місце розташування вище, ніж зараз, ми переходимо до нього. Якщо запропоноване місце розташування нижче, то перейдіть до нового місця розташування з вірогідністю p, де p - відношення висоти цієї точки до висоти поточного місця розташування. (тобто, переверніть монету з ймовірністю p отримати голови; якщо вона підійде до голови, перейдіть на нове місце; якщо вона з’явиться хвостиками, залишайтеся там, де ми є). Зберігайте список місць, де ви були на кожному етапі часу, і цей список (асиптотично) матиме правильну частку часу, проведеного у кожній частині поверхні.

Існують складніші схеми пропонування нових місць та правила їх прийняття, але основна ідея все-таки: (1) вибрати нове "запропоноване" місце розташування; (2) з'ясувати, наскільки вище або нижче це місце порівняно з поточним місцеположенням; (3) ймовірнісно зупинитися на місці або переїхати до цього місця таким чином, щоб дотримуватися загальної мети витрачати час, пропорційний висоті місця.

Для чого це корисне? Припустимо, у нас є ймовірнісна модель погоди, яка дозволяє оцінити A * P (погода), де A - невідома константа. (Це часто трапляється - багатьом моделям зручно формулювати таким чином, що ви не можете визначити, що таке A). Тому ми не можемо точно оцінити P ("завтра дощ"). Однак ми можемо запустити пробовідбірник MCMC деякий час, а потім запитати: яка частка зразків (або "локацій") опинилася в стані "дощ завтра". Ця частка буде (на основі моделі) ймовірнісного прогнозу погоди.


6
+1. На мою думку, "блукання" - це найбільш інтуїтивна аналогія серед перелічених на цій сторінці.
Жубарб

"без необхідності знати його точну висоту в будь-якій точці" Це не основне обмеження MCMC.
JeremyKun

Я б хотів, щоб це пояснення було в підручниках, щоб нам не довелося витрачати час на удари по головах стільки часу, щоб зрозуміти, що робить МЗ.
пн

89

Я, мабуть, сказав щось подібне:

"Коли ми хочемо поговорити про ймовірності, ми реально інтегруємо щільність. У байєсівському аналізі багато щільності, яку ми придумали, не є аналітично простежуваною: ви можете їх інтегрувати лише, якщо ви взагалі можете їх інтегрувати. - з великим стражданням. Отже, що ми робимо замість цього, сильно моделюємо випадкову величину, а потім з'ясовуємо ймовірності з наших модельованих випадкових чисел. Якщо ми хочемо знати ймовірність того, що X менше 10, підраховуємо число частка модельованих випадкових змінних результатів менше 10, і використовуйте це як нашу оцінку. Це частина "Монте-Карло", це оцінка ймовірності, заснованої на випадкових числах. При достатній кількості симульованих випадкових чисел оцінка є дуже хорошою, але все одно по своїй суті випадкові.

"То чому" ланцюг Маркова "? Тому що за певних технічних умов ви можете генерувати безпам'ятний процес (він же марківський), який має такий же обмежуючий розподіл, що і випадкова змінна, яку ви намагаєтеся імітувати. Ви можете ітератувати будь-яку з кількість різних процесів моделювання, які генерують корельовані випадкові числа (виходячи лише з поточного значення цих чисел), і ви гарантуєтесь, що як тільки ви об'єднаєте достатньо результатів, ви отримаєте купу чисел, яка виглядає " ніби "вам якось вдалося взяти незалежні зразки зі складного розподілу, про який ви хотіли знати.

"Так, наприклад, якщо я хочу оцінити ймовірність того, що стандартна нормальна випадкова величина була меншою за 0,5, я можу генерувати десять тисяч незалежних реалізацій від стандартного нормального розподілу і порахувати число менше 0,5; скажіть, я отримав 6905, які були менше 100 з 10000 загальних проб; моя оцінка для P (Z <0,5) буде 0,6905, що не так далеко від фактичного значення. Це була б оцінка Монте-Карло.

список номерів, які я отримую від процедури, буде розподілений як велика кількість малюнків із чогось, що генерує нормальні випадкові змінні. Це дало б мені моделювання ланцюга Маркова Монте-Карло для стандартної нормальної випадкової величини. Якби я використав це для оцінки ймовірностей, це була б оцінка MCMC ".


7
Це хороше пояснення, але не для нетехнічних непрофесійних працівників. Я підозрюю, що ОП хотіла знати, як пояснити це, скажімо, MBA, який найняв вас зробити статистичний аналіз! Як би ви описали MCMC тому, хто, в кращому випадку, сорта розуміє поняття стандартного відхилення (хоч дисперсія, можливо, занадто абстрактна)?
Харлан

10
@Harlan: Це важке русло; якщо хто - то не по крайней мере знати , що випадкова величина, чому ми могли б оцінити ймовірності, і є туманне уявлення про функції щільності, то я не думаю , що це можна осмислено пояснити , як і чому з MCMC для них лише "що", що в цьому випадку зводиться до "це спосіб чисельного вирішення інакше неможливої ​​проблеми шляхом імітації, як перегортання монети, щоб оцінити ймовірність того, що вона приземлиться на голови".
Багатий

1
+1 за останній абзац. Маючи мінімум технічних можливостей, це добре передає ідею.
whuber

Класне пояснення. Я думаю, що це чудово для нетехнічної людини.
SmallChess

Сумнів - В останньому пункті, чому список номерів, здавалося б, виходить із звичайного розповсюдження? Це через теорему про центральну межу? Далі, що, якби ми хотіли моделювати якийсь інший розподіл?
Маной Кумар

37

Уявіть, що ви хочете знайти кращу стратегію, щоб перемогти своїх друзів у настільній грі Monopoly. Спростіть речі, які мають значення в грі, до питання: на яких властивостях у людей найбільше? Відповідь залежить від структури дошки, правил гри та кидків двох кубиків.

Один із способів відповісти на питання - це. Просто дотримуйтесь одного шматка навколо дошки, коли ви кидаєте кістки і дотримуйтесь правил. Порахуйте, скільки разів ви приземляєтесь на кожну власність (або програмуєте комп’ютер, щоб виконати роботу за вас). Врешті-решт, якщо у вас вистачить терпіння або ви досить добре запрограмували правила на вашому комп’ютері, ви складете гарну картину, які властивості отримають найбільший бізнес. Це має допомогти вам частіше перемагати.

Те, що ви зробили, - це аналіз Марковського ланцюга Монте-Карло (MCMC). Дошка визначає правила. Де ви приземлитесь далі, залежить лише від того, де ви зараз перебуваєте, а не де ви були раніше, а конкретні ймовірності визначаються розподілом кидків двох кісток. MCMC - це застосування цієї ідеї до математичних чи фізичних систем, наприклад, якою буде завтрашня погода, або де опиниться пилок з випадковим попитом молекул газу.


1
Пояснення звучить як просте моделювання Монте-Карло, а як щодо ланцюга Маркова? Як Мережа Маркова пов'язана з цією симуляцією Монте-Карло?
Емран Хуссей

@Emran Graham Cookson, здається, пояснює зв'язок між монополіями та ланцюгами Маркова.
Glen_b

Монополія може бути змодельована як ланцюг Маркова, де кожне властивість / простір - це вузол / стан. Коли ви знаходитесь у будь-якому конкретному просторі, у вас є різні ймовірності переходу до наступних 12 пробілів (якщо ви використовуєте 2 кубики) - це краї / з'єднання ланцюга Маркова. Розробити ймовірність кожного краю / з'єднання легко

32

Гаразд, ось моя найкраща спроба неофіційного та грубого пояснення.

Ланцюг Маркова - це випадковий процес, який має властивість того, що майбутнє залежить лише від поточного стану процесу, а не минулого, тобто він не запам'ятовується. Прикладом випадкового процесу може бути біржа. Прикладом ланцюга Маркова може бути настільна гра на кшталт «Монополія» чи «Змії та сходи», де ваше майбутнє становище (після прокатки штампу) буде залежати лише від того, з чого ви почали до початку рулону, а не будь-якої попередньої позиції. Приклад підручника ланцюга Маркова - це «прогулянка п’яниці». Уявіть, що хтось п’яний і може рухатись лише вліво або вправо одним темпом. П’яний рухається вліво або вправо з однаковою ймовірністю. Це ланцюг Маркова, де майбутнє / наступне становище п'яного залежить лише від того, де він зараз знаходиться.

Методи Монте-Карло - це обчислювальні алгоритми (просто набори інструкцій), які випадковим чином вибирають з якогось досліджуваного процесу. Вони є способом оцінити щось, що занадто складно або забирає багато часу, щоб знайти його детерміновано. Вони в основному є формою комп'ютерного моделювання математичного чи фізичного процесу. Монітор Монте-Карло походить від аналогії між казино та генерацією випадкових чисел. Повернувшись до нашого прикладу настільних ігор раніше, можливо, ми хочемо знати, чи відвідують деякі властивості на дошці Monopoly частіше, ніж інші. Експеримент у Монте-Карло передбачав би перекочування кісток кілька разів та підрахунок кількості разів, коли ви приземлитесь на кожну власність. Він також може бути використаний для обчислення числових інтегралів. (Дуже неофіційно ми можемо вважати інтеграл як область під графіком деякої функції. ) Інтеграція Монте-Карло чудово працює на високомірних функціях, беручи випадкову вибірку точок функції та обчислюючи деякий тип середнього значення в цих різних точках. Збільшуючи розмір вибірки, закон великих чисел говорить нам, що ми можемо підвищити точність нашого наближення, охоплюючи все більше і більше функції.

Ці дві концепції можуть бути об'єднані для вирішення деяких складних проблем у таких сферах, як байєсівський умовивід, обчислювальна біологія тощо, де для розв'язання загальних проблем необхідно обчислити багатовимірні інтеграли. Ідея полягає в тому, щоб побудувати ланцюг Маркова, який сходиться до бажаного розподілу ймовірностей після кількох кроків. Стан ланцюга після великої кількості етапів потім використовується як зразок із потрібного розподілу і процес повторюється. Існує багато різних алгоритмів MCMC, які використовують різні методи для створення ланцюга Маркова. До поширених відносяться Метрополіс-Гастінгс і Гімпс-пробовідбірник.


1
Справді гарне пояснення. Лише одна плутанина не очищена. Як ви вже говорили, "ідея полягає в тому, щоб побудувати ланцюг Маркова, який сходиться до бажаного розподілу ймовірностей." Здається, що ми вже знаємо ступінчастий розподіл вірогідності для штатів, то навіщо нам потрібно будувати ланцюг марків. Призначення ланцюга Маркова - забезпечити нам стабільний розподіл, який ми вже маємо на першому місці, чи не так? Якщо ви не мали на увазі, отримання ланцюга Маркова все ще необхідно для обчислення ймовірності стану n + 1 на основі поточного стану.
Емран Хуссей

16

Уривок байєсівських методів для хакерів

Баєзький пейзаж

NNp1p2

Exp(3)Exp(10)

Наведена нижче візуалізація демонструє це. Чим більше темно-червоний колір, тим більше попередня ймовірність того, що невідомі знаходяться в цьому місці. І навпаки, області з темнішим синім кольором означають, що наші пріори призначають дуже низьку ймовірність того, що там знаються невідомі.

введіть тут опис зображення

Це прості приклади в двовимірному просторі, де наші мізки добре розуміють поверхні. На практиці простори та поверхні, що генеруються нашими пріорами, можуть бути набагато вищими.

XXпідштовхує до первісної поверхні, щоб зробити високі гори . Кількість виштовхувань протистоїть попередній ймовірності, так що менша попередня ймовірність означає більший опір. Таким чином, у випадку подвійного експоненціально-попереднього випадку гора (або кілька гір), яка могла б вивернутися поблизу (0,0) кута, була б набагато вище, ніж гори, що вивергаються ближче до (5,5), оскільки є більший опір поблизу (5,5). Гора або, можливо, загалом, гірські хребти, відображають задню ймовірність того, де вірогідні параметри можуть бути знайдені.

λ

введіть тут опис зображення

Uniform(0,5)

Чорна крапка представляє справжні параметри. Навіть з 1 точкою вибірки, як те, що було змодельовано вище, гори намагаються містити справжній параметр. Звичайно, висновок з розміром вибірки 1 неймовірно наївний, і вибір такого невеликого розміру вибірки був лише ілюстративним.

Вивчення ландшафту за допомогою MCMC

NNNвід заднього розподілу, а не самого розподілу. Розтягуючи нашу гірську аналогію до своєї межі, MCMC виконує завдання, подібні до багаторазового запитання "Наскільки ймовірним є цей камінчик з гори, яку я шукаю?", І виконує своє завдання, повертаючи тисячі прийнятих камінчиків у надії на реконструкцію. первісна гора. У MCMC та PyMC lingo повернута послідовність "камінчиків" є зразками, частіше називаються слідами .

Коли я кажу, що MCMC інтелектуально здійснює пошук, я маю на увазі, що MCMC сподівається сходитися до областей з високою задньою ймовірністю. MCMC робить це шляхом дослідження сусідніх позицій та переміщення в райони з більшою ймовірністю. Знову ж таки, можливо, "конвергенція" не є точним терміном для опису прогресу MCMC. Конвергенція, як правило, має на увазі переміщення до точки в просторі, але MCMC рухається до більш широкої області в просторі і безладно ходить по цій області, збираючи зразки з цієї області.

Спочатку повернення тисячі зразків користувачеві може здатися неефективним способом опису заднього розподілу. Я б стверджував, що це надзвичайно ефективно. Розглянемо альтернативні можливості:

  1. Повернення математичної формули для «гірських хребтів» передбачає опис N-мірної поверхні з довільними вершинами та долинами.
  2. Повернення "вершини" ландшафту, хоча математично можливо і розумне робити, як найвища точка відповідає найбільш ймовірній оцінці невідомих, ігнорує форму ландшафту, про яку ми раніше стверджували, що дуже важливо при визначенні довірчої впевненості у невідомих.

Окрім обчислювальних причин, найвірогіднішою причиною повернення зразків є те, що ми можемо легко використовувати Закон великих чисел для вирішення інакше нерозв'язних проблем. Я відкладаю це обговорення на наступний розділ.

Алгоритми виконання MCMC

Існує велике сімейство алгоритмів, які виконують MCMC. Найпростіше, більшість алгоритмів можна виразити на високому рівні так:

1. Start at current position.
2. Propose moving to a new position (investigate a pebble near you ).
3. Accept the position based on the position's adherence to the data 
and prior distributions (ask if the pebble likely came from the mountain).
4. If you accept: Move to the new position. Return to Step 1.
5. After a large number of iterations, return the positions.

Таким чином ми рухаємося в загальному напрямку до регіонів, де існують задні розподіли, і збираємо зразки, які в дорозі збираються. Як тільки ми досягнемо заднього розподілу, ми можемо легко збирати зразки, оскільки вони, ймовірно, належать до заднього розподілу.

Якщо поточне положення алгоритму MCMC знаходиться в області вкрай низької ймовірності, що часто буває, коли алгоритм починається (як правило, у випадковому місці в просторі), алгоритм буде рухатися в положеннях, які, ймовірно, не ззаду але краще за все інше поруч. Таким чином, перші кроки алгоритму не відображають заднього.


2
Я розумію, що проблема була пов'язана саме з MCMC, а не з байєсівським висновком, але в контексті байєсівських пейзажів я вважаю MCMC дуже зрозумілою.
Cam.Davidson.Pilon

10

Тож тут є багато відповідей, перефразованих із підручників зі статистикою / ймовірності, Вікіпедії тощо. Я вважаю, що у нас є "непрофесіонали", де я працюю; Я думаю, що вони є у відділі маркетингу. Якщо мені колись доводиться пояснювати щось технічне, я застосовую правило "показати не кажи". Маючи на увазі це правило, я, певно, показав би їм щось подібне.

Ідея тут полягає в тому, щоб спробувати кодувати алгоритм, якого я можу навчити написання, - не вивчаючи всі сотні (тисяч?) Таких правил, як, наприклад, додаючи закінчення до слова, яке закінчується тихим e, опустити фінал e якщо закінчення починається з голосного . Однією з причин, яка не спрацює, є те, що я не знаю цих правил (я навіть не впевнений, що те, що я щойно сказав, є правильним). Натомість я збираюся навчити його правопису, показуючи йому купу правильно написаних слів і дозволяючи йому витягувати правила з цих слів, що є більш-менш сутністю машинного навчання незалежно від алгоритму - вилучення шаблону та розпізнавання шаблонів .

Критерій успіху - правильно написання слова, якого алгоритм ніколи раніше не бачив (я розумію, що це може статися випадково, але це не трапиться у хлопців з маркетингу, тому я ігнорую - плюс я буду мати алгоритм спроба написання не одного слова, але багато, тому, ймовірно, нас обдурять кілька щасливих здогадок).

Ще годину тому я завантажив (як звичайний текстовий файл) з чудового сайту Project Gutenberg, роман " Сіддхартха" Германа Гессе . Я використаю слова в цьому романі, щоб навчити алгоритм написання.

Тож я зашифрував алгоритм, що переглянув цей роман, три букви одночасно (кожне слово має один додатковий символ в кінці, який є "пробілом" або кінцем слова). Послідовності з трьох літер можуть сказати вам багато чого, наприклад, буква «q» майже завжди супроводжується «u»; послідовність 'ty' зазвичай відбувається в кінці слова; z рідко і так далі. (Примітка. Я міг би так само легко подати цілі слова, щоб навчити її говорити в повному реченні - точно та сама ідея, лише декілька змін до коду.)

Ніщо з цього не включає MCMC, але це відбувається після тренування, коли ми даємо алгоритму кілька випадкових букв (як насіння), і він починає формувати "слова". Як алгоритм будує слова? Уявіть, що у нього є блок 'qua'; який лист він додає далі? Під час навчання алгоритм побудував масивну матрицю частот послідовності etter-послідовностей * з усіх тисяч слів у романі. Десь у цій матриці є трибуквенний блок 'qua' та частоти для символів, які могли б слідувати послідовності. Алгоритм вибирає лист на основі тих частот, які, можливо, могли би слідувати за ним. Тож лист, який алгоритм вибирає далі, залежить - і лише від - останніх трьох у його черговості побудови слів.

Отже, це алгоритм ланцюга Монте-Карло Маркова.

Я думаю, що, мабуть, найкращий спосіб проілюструвати, як це працює - це показати результати на основі різних рівнів навчання. Рівень тренувань змінюється зміною кількості пропусків, які алгоритм робить, хоча роман - чим більше пропусків, тим більше вірність матриць частоти послідовності літер. Нижче наводяться результати - у вигляді 100 символьних рядків, виведених за алгоритмом, - після тренування над романом «Сіддхарта».


Єдиний прохід через роман, Сіддхартха :

то whoicks ger wiff всі mothany стоять ar ви livid theartim замучений sullintionexplaid його sible його

(Відразу ж навчився говорити майже ідеально по-валлійськи; я цього не очікував.)


Через два проходи через роман:

Ack Wor Prenskinith show wass a twor seened th notheady theatin land rhatingle was ov там


Після 10 проходів:

незважаючи на, але слід молитися з аккою, тепер у неї собака важелем болить ноги, кожна не слабка пам'ять


І ось код (у Python я майже впевнений, що це можна зробити в R за допомогою пакета MCMC, якого є декілька, усього 3-4 рядки)

def create_words_string(raw_string) :
  """ in case I wanted to use training data in sentence/paragraph form; 
      this function will parse a raw text string into a nice list of words;
      filtering: keep only words having  more than 3 letters and remove 
      punctuation, etc.
  """
  pattern = r'\b[A-Za-z]{3,}\b'
  pat_obj = re.compile(pattern)
  words = [ word.lower() for word in pat_obj.findall(raw_string) ]
  pattern = r'\b[vixlm]+\b'
  pat_obj = re.compile(pattern)
  return " ".join([ word for word in words if not pat_obj.search(word) ])

def create_markov_dict(words_string):
  # initialize variables
  wb1, wb2, wb3 = " ", " ", " "
  l1, l2, l3 = wb1, wb2, wb3
  dx = {}
  for ch in words_string :
    dx.setdefault( (l1, l2, l3), [] ).append(ch)
    l1, l2, l3 = l2, l3, ch
  return dx

def generate_newtext(markov_dict) :
  simulated_text = ""
  l1, l2, l3 = " ", " ", " "
  for c in range(100) :
    next_letter = sample( markov_dict[(l1, l2, l3)], 1)[0]
    simulated_text += next_letter
    l1, l2, l3 = l2, l3, next_letter
  return simulated_text

if __name__=="__main__" :
  # n = number of passes through the training text
  n = 1
  q1 = create_words_string(n * raw_str)
  q2 = create_markov_dict(q1)
  q3 = generate_newtext(q2)
  print(q3)

12
Ви створили модель Маркова для правопису англійською мовою та пристосували її до даних. Але відбір проб із встановленої моделі не є MCMC. (Що таке "бажаний розподіл", з якого він вибирає? Зрозуміло, чи не розподіл на "правильно написані слова англійською мовою", оскільки модель все ж робить помилки після навчання). Я не маю на увазі критикувати вправу; це приємна демонстрація мовної ланцюгової моделі Маркова. Але ключова ідея MCMC полягає в розробці ланцюга Маркова так, щоб його рівноважний розподіл відповідав деякому ви маєте на увазі розподіл, і не очевидно, що цього досягти.
jpillow

2

MCMC зазвичай використовується як альтернатива сирим методам моделювання в Монте-Карло. І MCMC, і інші методи Монте-Карло використовуються для оцінки складних інтегралів, але MCMC можна використовувати більш загально.

Наприклад, поширеною проблемою статистики є обчислення середнього результату, пов'язаного з якоюсь імовірнісною / стохастичною моделлю. І методи MCMC, і Монте-Карло вирішили цю проблему, створивши послідовність моделюваних результатів, які ми могли б використати для оцінки справжнього значення.

Як методи MCMC, так і сира Монте-Карло працюють, оскільки довгострокова частка симуляцій, що дорівнює даному результату, буде дорівнює * модельованій ймовірності цього результату. Тому, генеруючи достатню кількість моделювання, результати, отримані обома методами, будуть точними.

* Я кажу рівним, хоча в цілому я повинен говорити про вимірювані множини. Проте, лайперсон, напевно, не зацікавився би цим *

Однак, хоча сирий Монте-Карло передбачає створення безлічі незалежних моделювань, кожне з яких розподілено відповідно до модельованого розподілу, MCMC передбачає генерування випадкової прогулянки, яка в перспективі "відвідує" кожен результат із бажаною частотою.

Таким чином, хитрість MCMC - це вибір випадкової прогулянки, яка "відвідає" кожен результат із бажаними довгостроковими частотами.

Простим прикладом може бути моделювання з моделі, яка говорить про ймовірність результату "А" 0,5, а результату "В" - 0,5. У цьому випадку, якби я розпочав випадкову ходьбу в положенні "А" і прописав, що на кожному кроці він переходить в іншу позицію з вірогідністю 0,2 (або будь-яку іншу ймовірність, що перевищує 0), я міг би бути впевнений, що після великої кількість кроків, яку випадкова прогулянка відвідала кожен з "А" та "В" приблизно 50% кроків - відповідно до ймовірностей, передбачених нашою моделлю.

Це, очевидно, дуже нудний приклад. Однак виявляється, що MCMC часто застосовується в ситуаціях, коли важко застосувати стандартні Монте-Карло або інші методи.

Ви можете знайти статтю, яка висвітлює основи того, що це таке, і чому це працює тут:

http://wellredd.uk/basics-markov-chain-monte-carlo/


Ми намагаємось створити постійний сховище високоякісної статистичної інформації у вигляді запитань та відповідей. Ми намагаємось уникати відповідей лише на посилання, які підлягають гниттю; як такий це скоріше коментар, ніж відповідь сам по собі. Якщо ви в змозі, можете розширити її, можливо, подавши резюме інформації за посиланням (або ми можемо перетворити її в коментар для вас).
Glen_b

1

Я аналітик ДНК, який використовує повністю безперервне імовірнісне генотипне програмне забезпечення для інтерпретації доказів ДНК, і я повинен пояснити, як це працює присяжним. Справді, ми над тим, щоб спростити, і я усвідомлюю щось із цього через спрощення жертвує точністю конкретних деталей в ім'я покращення загального розуміння. Але в контексті журі, що розуміє, як цей процес використовується в інтерпретації ДНК без наукових ступенів і років професійного досвіду, вони отримують суть :)

Передумови: Програмне забезпечення використовує мегаполіс Гастінгса MCMC та біологічну модель, що імітує відому поведінку профілів ДНК (модель будується на основі даних валідації, генерованих лабораторним аналізом багатьох ДНК-профілів із відомих умов, що представляють діапазон, що зустрічається у невідомому випадку справи). Існує 8 незалежних ланцюгів, і ми оцінюємо конвергенцію, щоб визначити, чи потрібно повторно запускати, збільшуючи запис у записі і після чого приймає (Burin за замовчуванням 100k приймає, а пост 400k приймає)

На запитання обвинувачення / захисту про MCMC: ми пояснюємо, що це означає марківський ланцюг Монте-Карло і являє собою спеціальний клас / різновид алгоритму, що використовується для комплексного вирішення проблем, і що алгоритм - це просто фантазійне слово, що посилається на низку процедур або звичайних процедур що виконується комп'ютером ... алгоритми mcmc діють, пропонуючи рішення, моделюючи це рішення, а потім оцінюють, наскільки добре, що моделювання відображає фактичні дані доказів, які спостерігаються ... симуляція, що добре відповідає спостереженням, має більшу ймовірність, ніж симуляція, яка не відповідає обставинам спостереження ... під час багатьох повторних вибірок / здогадок пропонованих рішень ланцюги Маркова рухаються від рішень з низькою ймовірністю до рішень з високою ймовірністю, які краще підходять / пояснюють спостережуваний профіль доказів, поки в кінцевому рахунку рівновага не буде досягнуто,тобто алгоритм має обмежену можливість вибірки нових пропозицій, що дає значно більші ймовірності

На запитання про мегаполіс Гастінгс: ми пояснюємо, що це вдосконалення алгоритму MCMC, що описує процес прийняття рішень щодо прийняття чи відхилення пропозиції ... зазвичай це пояснюється аналогією "гарячої / холодної" дитячої гри, але я, можливо, розглядав можливість використання " проведіть пальцем праворуч або ліворуч ", коли журі особливо молоде !! : p Але, використовуючи нашу гарячу / холодну аналогію, ми завжди приймаємо гарячу здогадку і періодично приймемо холодну здогадку частину часу і пояснюємо мету іноді приймати здогадку про холод - це забезпечити вибір ланцюгів більш широкого спектру можливостей як проти того, щоб зациклюватися на одній конкретній пропозиції до фактичної рівноваги

Відредаговано, щоб додати / уточнити: з аналогією гарячого / холодного ми пояснюємо, що в дитячій грі ведучий вибирає цільовий предмет / область всередині кімнати, а гравці по черзі вгадують, вказуючи, в якому напрямку рухатися відносно свого поточного положення / положення. Ведучий каже їм змінити свою позицію / зробити хід, якщо це гаряча здогадка, і вони втрачають свою чергу / залишаються в положенні, якщо це холодна здогадка. Аналогічно, у нашому програмному забезпеченні рішення про переміщення / прийняття залежить лише від ймовірності пропозиції порівняно з ймовірністю займаної в даний час позиції ... ТАКЕ, ціль заздалегідь визначена / відома лідером у дитячій грі, тоді як ціль у нашому програмному забезпеченні не визначена заздалегідь - абсолютно невідомо (також, чому це "

Як я вже сказав, супер супер основні та абсолютно відсутні технічні деталі заради покращення розуміння - ми прагнемо пояснити приблизно на рівні середньої школи. Не соромтеся робити пропозиції. Я їх включу.


0

Це питання широке, але відповіді часто бувають досить випадкові. Як варіант, ви можете побачити цей документ, який дає стислий математичний опис широкого класу алгоритмів MCMC, включаючи алгоритми Metropolis-Hastings, вибірки Гіббса, Metropolis-in-Gibbs та допоміжні змінні методи, вибірку зрізів, рекурсивні пропозиції, направлену вибірку, Лангевін та Гамільтоніанський Монте-Карло, вибірки NUTS, алгоритми псевдо-маргінальної Метрополіс-Гастінгса та псевдо-маргінальний Гамільтоніанський Монте-Карло, як обговорювали автори.

Достовірний огляд дається тут

Я знайду більше часу для опрацювання його вмісту у форматі stackexchange.


0

f(x,y)=z=x2+2xy(x,y)f(x,y)f(x,y)

f(x,y,z,t,s,...,zzz)

Це відео (початок о 5:50) має дуже хороший виклад інтуїції.

Уявіть, що ви хочете взяти вибірку точок, що знаходяться на зелених (багатовимірних) гілках на цьому малюнку. Якщо ви кидаєте точки по всьому чорному суперпростору і перевіряєте їх значення, ви витрачаєте багато вибіркових (пошукових) енергій. Тому було б більше сенсу контролювати свою стратегію вибірки (яка може бути автоматизована), щоб вибрати точки ближче до зелених гілок (де це важливо). Зелені гілки можна знайти, потрапивши один раз випадково (або контролюючись), а решта зусилля відбору (червоні точки) будуть генеровані згодом. Причина, по якій червоний притягується до зеленої лінії, - це матриця переходу ланцюга Маркова, яка працює як ваш двигун вибірки.

Отже, з точки зору непростого, MCMC - це метод енергозбереження (низька вартість) відбору проб, особливо під час роботи в масивному і "темному" (багатовимірному) просторі.

введіть тут опис зображення


1
Думаю, у нас є інше визначення поняття "мирянин"
Ніл Макгуйган

хахаха. Можу додати "Монте-Карло" і для "лайперсона", але вибірки / Монте-Карло не були питаннями.
Амір
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.