Байесовский ниндзя

    Coderik однажды отметил: "Фильтра Калмана много не бывает". Так же можно сказать и о теореме Байеса, ведь это с одной стороны так просто, но с другой стороны так сложно осмыслить его глубину.



    На просторах YouTube есть замечательный канал Student Dave, однако последнее видео опубликовано шесть лет назад. На канале представлены обучающие видео, в которых автор рассказывает очень простым языком сложные вещи: теорему Байеса, фильтр Калмана и пр. Свой рассказ студент Дейв дополняет примером расчета в matlab.


    Однажды мне очень помог его видео урок под названием “Итеративная байесовская оценка” (на канале ему соответствует плейлист “Iterative bayesian estimation: with MATLAB”). Я захотел, чтобы каждый мог познакомиться с объяснениями Дейва, но к сожалению проект не поддерживается. Сам Дейв не выходит на связь. Добавить перевод к видео нельзя, так как это должен инициировать сам автор. Обращение в youtube не дало результата, поэтому я решил описать материал в статье на русском языке и опубликовать там, где его больше всего оценят. Материал очень сильно переработан и дополнен, так как он прошёл через мое субъективное восприятие, поэтому выложить его как перевод было бы неуместно. Но саму соль объяснения я взял у Дейва. Его код я переписал на python, так как я сам в нем работаю и считаю хорошей заменой математическим пакетам.


    Итак, если вы хотите глубже осмыслить тему теоремы Байеса, добро пожаловать.


    Постановка задачи


    Для того чтобы проиллюстрировать мощь теоремы Байеса для непрерывных случайных величин, Дейв предлагает рассмотреть задачу “байесовского ниндзя”. Суть задачи в следующем.



    Есть ниндзя-математик, который очень не любит перепелов. Перепел прячется в кустах, а ниндзя сидит на дереве рядом. Ниндзя может одним решительным прыжком на перепела сразить его, но он не знает где точно находится перепел. При этом перепел и издает время от времени звук. По звуку ниндзя может определить местоположение перепела, но очень неточно. Теорема Байеса позволяет ниндзя по серии криков перепела определить местоположение перепела все точнее и точнее. И в какой-то момент количество криков позволит ниндзя нанести сокрушительный удар.


    Спойлер

    Если вы ознакомитесь с видео на канале, то узнаете, что ниндзя так и не удалось удачно спрыгнуть на перепела, но это уже другая история.


    Одномерный случай


    Ниндзя-математик видит кусты как ограниченную область по оси $ x $. Истинное положение перепелки $x = 3$ пока неизвестно. Вероятность в каждой точке области поиска одна и та же. Априорное распределение равномерное.



    В процессе наблюдения (ниндзя славились своей выдержкой) были получены $ N = 100 $ замеров (гипотез) местонахождения.


    К тому же ниндзя замерил дисперсию измерения положения перепелки по крику $\sigma_y^2=4$.
    Благодаря теореме Байеса есть возможность из равномерного распределения получить нормальное, да и с дисперсией куда меньшей чем дисперсия измерения.


    Теорема Байеса


    $$display$$\begin{equation} f_{posterior}(x) = \frac{f_{prior}(x) \cdot f_{изм}(x)}{\int f_{prior}(x) \cdot f_{mes}(x) dx}, \end{equation}$$display$$


    где $ f_{posterior}(x) $ — уточненное распределение;
    $ f_{prior}(x) $ — распределение известное до опыта;
    $ f_{mes}(x) $ — распределение модели измерения (правдоподобие $ L_x(sample) $).
    Дисперсия распределения модели измерения известна ниндзя заранее. За математическое ожидание принимается точка пространства, а за случайную величину замер (вероятность гипотезы о том, что в этой точке пространства сидит перепелка при получении замера):


    $$display$$\begin{equation} f_{mes}(x) =pdf(x=y, \mu=x, \sigma=\sigma) = \frac{1}{2 \pi \sigma} e^{- \frac{(y-x)^2}{2\sigma^2}}, \end{equation}$$display$$


    где $pdf$ — функция плотности нормального распределения;
    $\mu$ — математическое ожидание;
    $\sigma$ — стандартное отклонение измерения;
    $y$ — измеренная величина.
    Данную формулу необходимо повторить для серии опытов ($N$), каждый раз подставляя вместо априорного распределение апостериорное, которое было получено при предыдущем опыте.


    На анимации ниже видно как меняется распределение от оценки к оценке.



    Код по ссылке.
    Как только шесть $\sigma$ уменьшатся до размера ноги ниндзя, он сможет нанести свой сокрушительный удар с вероятностью успеха в 99,7 %.


    Двумерный случай


    Можно не читать

    Так-то именно двумерный случай рассмотрен Дейвом, в отличие от одномерного случая.


    Рассмотрим более реальную задачу. Ведь ниндзя всё таки смотрит на кусты сверху-вниз.
    Истинное положение перепелки $(3, 5)$. Дисперсии (ковариационная матрица) и количество криков те же.

    До опыта (априори) вероятность того, что перепелка будет в любом месте кустов одинакова. Априорное распределение равномерное.

    Формула Байеса для непрерывных многомерных случайных величин примет вид:


    $$display$$\begin{equation} f_{posterior}(X) = \frac{f_{prior}(X) \cdot f_{изм}(X)}{\int f_{prior}(X) \cdot f_{mes}(X) dX}, \end{equation}$$display$$


    где $ X $ — вектор координат вида $\begin{pmatrix} x\\ y\end{pmatrix}$;
    $ f_{posterior}(X) $ — уточненное распределение;
    $ f_{prior}(X) $ — распределение известное до опыта;
    $ f_{mes}(X) $ — распределение модели измерения.
    Распределение модели измерения:


    $$display$$\begin{equation} f_{mes}(X) = \frac{1}{(2\pi)^2 detK} e^{ \frac {1}{2} (Y-X)^T K^{-1} (Y-X)}, \end{equation}$$display$$


    где $K$ — ковариационная матрица;
    $Y$ — результат замера вида $\begin{pmatrix} x\\ y\end{pmatrix}$.
    На анимации ниже видно, как меняется распределение от опыта к опыту.

    Код по ссылке.


    Вывод


    Таким образом видно, как результаты опыта влияют на априорное распределение. Если правильно пользоваться измерениями, можно получать хорошую точность.
    Но не проще ли просто найти среднее из всех замеров и таким образом сделать оценку местоположения перепела? Конечно. Данный пример лишь наглядный пример теоремы Байеса для непрерывных случайных величин. Цель статьи в том, чтобы утрясти теорию.


    Заходите на канал Дейва в течении этих недель самоизоляции. Всем добра.

    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 15

      0
      Уже не первый раз наталкиваюсь на статьи о невероятной глубине теоремы Байеса. Но мне как не математику интуитивно кажется, что это просто какое-то усреднение. Делаем N измерений, как-то усредняем и получаем что-то более-менее близкое к реальности. Чем больше измерений — тем ближе к реальности. Или я не прав и тут кроется какой-то очень глубокий смысл?
        0

        Так и есть. Если мы предпологаем, что распределение положения перепела нормальное, то для оценки его среднего и стандартного отклонения достаточно посчитать среднее выборки и среднее выборки квадратов. Байес тут вообще не причем.

          0
          Помните Акинатора? В первый раз очень удивляет, когда «угадывает мысли» за несколько простых вопросов. Там тоже Байес, на Хабре есть статьи про это.
            0
            Тут и кроется глубина)
            Байес может «усреднить» распределение уже по одному результату. Он может выдать получившееся распределение (то какова вероятность в каждой области пространства)
            Но по 100 опытам лучше все таки просто усреднить (дешевле вычислять).
              0

              А Вы не могли бы подробней описать, как Байес может оценить параметры нормального распределения по одному измерению? Что получится в итоге?


              Как оценить среднее за одно измерение — это тривиально, да, но вот оценку стандартного отклонения — это уже за гранью моей фантазии.

                0

                Так об этом и статья. Формулы есть.
                Можно поменять в коде количество экспериментов с 100 до одного.
                Я сделал это. Вот результат. Получившееся СКО 1.6579451124819917.

                Фишка в том, что по одному опыту строится распределение вероятности, а не просто средняя оценка.

                  0

                  Как же, однако, забавно получается. Вы знаете, что дисперсия криков перепела — 4, но при этом смогли получить оценку для этой величины меньше, чем она есть на самом деле, причем за одно измерение. Это как?
                  И еще одно замечание. Если Вы в курсе, что дисперсия криков — 4, это значит, что Вы как-то все же провели ее оценку, нет? А этого невозможно сделать за одно измерение.


                  Но и в этом случае априорное распределение положения перепела не может быть равномерным в области [-20, 20], как на картинке выше. Перепел может находиться только в интервале длиной sqrt(48).


                  И да, что Вы будете делать, когда Вам будет неизвестна дисперсия апостериорного распределения перед началом эксперимента, что бывает практически всегда? Как тут поможет Байес?

                    0
                    Как же, однако, забавно получается. Вы знаете, что дисперсия криков перепела — 4, но при этом смогли получить оценку для этой величины меньше, чем она есть на самом деле, причем за одно измерение. Это как?

                    Ну вот так вот. Результат ведь формируется не по распределению измерения, а по функции правдоподобия.


                    И еще одно замечание. Если Вы в курсе, что дисперсия криков — 4, это значит, что Вы как-то все же провели ее оценку, нет? А этого невозможно сделать за одно измерение.

                    Да, а эту дисперсию нужно получать кучей измерений.


                    Но и в этом случае априорное распределение положения перепела не может быть равномерным в области [-20, 20], как на картинке выше. Перепел может находиться только в интервале длиной sqrt(48).

                    Я взял [-20, 20] только чтобы интегрирование было пополнее. А в остальном немного не понял вопрос.


                    И да, что Вы будете делать, когда Вам будет неизвестна дисперсия апостериорного распределения перед началом эксперимента, что бывает практически всегда? Как тут поможет Байес?

                    Апостериорное и ищем по теореме Байеса. Она как раз и помогает его найти.

                      0

                      Давайте я Вам расскажу, как это выглядит с моей стороны. Вот приходите Вы и утверждаете, что знаете способ оценки нормального распределения по одному измерению. Я говорю, что это невозможно, но Вы настаиваете на своем и даже предлагаете провести эксперимент.


                      Я из-за своего безмерного любопытства соглашаюсь на этот эксперимент. И пока я вожусь с генератором случайных нормально распределенных величин, Вы вспоминаете об одной детали: Вам надо знать дисперсию моего распределения.


                      Я, с одной стороны, удивлен столь неожиданным требованием, но с другой — теперь все становится понятно, ведь для оценки моего распределения вам осталось только уточнить среднее. А это уже можно сделать за одно измерение. Причем это тривиально.


                      Но, может, у Вас какой интересный метод, а потому я вполне согласен продолжить этот эксперимент. И вот я настроил генератор случайных чисел, чтоб он выдавал мне нормальные переменные с неким среднем и дисперсией, скажем, 4. И я Вам сообщил эту дисперсию, а также число, полученное из моего генератора.


                      Вы что-то у себя поколдовали и принесли мне оценку распределения моего генератора:


                      image

                      И тут Вы меня оставляете крайне озадаченным. Ведь Вы принесли мне нормальное распределение с дисперсией около 2.72, но я же Вам сам сказал, что дисперсия этого распределения — 4. Я не солгал и ничего не утаил, оно такое и есть.


                      И более того, этот факт Вы используете в своих расчетах. Вы не уточняете дисперсию с каждым измерением. Вы всегда используете дисперсию 4, когда оцениваете апостериорное распределение. Так откуда же взялось 2.72 у финальной оценки?


                      Из-за этого парадокса под вопросом становится надежность всего этого подхода.


                      PS. Кстати, у Вас что-то не так с вероятностями на картинках. У Вашего равномерного распределения полная вероятность — 0.1, если судить по голубой линии на графике. Подозреваю, что то же самое происходит и с нормальным.

                        0

                        Дорогой друг. Это здорово, что ты заинтересовался темой.
                        Я рад этой беседе (без подкола). Так мы сможем улучшить материал, в случае ошибки.
                        Чтобы более структурировано вести диалог, я хотел бы уточнить суть твоей претензии.


                        1. Ты не согласен с теоремой Байеса для НСВ в том виде, который предложен в статье?
                        2. Ты не согласен с самими вычислениями (формулы нормальные, но результаты странные)?
                        3. Ты считаешь, что теория и расчет верные, но не видишь целесообразности теоремы Байеса в том виде, который предложен в статье?
                        4. Что то другое?
                          Я попытаюсь тогда построить аргументацию, а то я немного не подгружаю о чем ты говоришь.
                          З. Ы. За равномерное распределение спасибо. Не учел шаг. И в статье та же проблема. Починю позже. Вчера только переехал в новую квартиру. Времени не так много.
                          0
                          Ты не согласен с теоремой Байеса для НСВ в том виде, который предложен в статье?

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


                          Ты не согласен с самими вычислениями (формулы нормальные, но результаты странные)?

                          Это уже ближе к правде.


                          Ты считаешь, что теория и расчет верные, но не видишь целесообразности теоремы Байеса в том виде, который предложен в статье?

                          Я считаю, что применение теоремы Байеса в данном случае хоть и забавно, но абсолютно бессмысленно. Чтоб посчитать среднее распределения, нам надо просуммировать все измерения и разделить на их количество. Все! А дисперсию распределения Вы и так знаете.


                          Более того, Ваш результат получается противоречивым, что только добавляет недоверия этому подходу.


                          Что то другое?

                          У меня критика к двум вещам: во-первых, к Вашему заявлению будто дисперсию можно оценить по одному измерению, чего невозможно сделать; во-вторых, что этот метод дает очень подозрительные результаты.


                          Вот Вы серьезно не видите проблемы в Ваших расчетах? У вас есть нормальное распределение с дисперсией 4 из которого Вы получаете случайные числа. И Вы знаете, что дисперсия этого распределения именно 4.


                          Вы ищете оценку этого распределения. Для этого используете другое нормальное распределение. И в результате каких-то вычислений Вы получаете распределение, у которого дисперсия серьезно отличается от оригинального. И такое было бы возможно (хотя маловероятно в случаях экспоненциально убывающих распределений), если б Ваши расчеты уточняли дисперсию с каждым измерением. Но они этого не делают! Вы на каждом шаге используете тот факт, что дисперсия первоначального распределения 4, но результирующее распределении дает меньшую дисперсию. И я спрашиваю Вас, как такое возможно? Почему результирующее распределение имеет дисперсию, которая отличается от оригинального, если Вы наперед знаете эту дисперсию?


                          Если совсем кратко — почему оценка распределения совсем не похожа на оригинальное распределение?

                            0

                            Фуухх, наконец то добрался до компьютера (переезд, самоизоляция с двумя детьми и все такое)
                            Спасибо за диалог. Благодаря вычитке качество повышается.
                            Итак о моих ошибках в расчете. Они есть, я их нашел, спасибо.
                            За первое измерение СКО выходит то же, что и известное (то есть 2).

                            Уменьшается оно только далее.

                            Так повышается доверие к участку, от которого и приходит замер до ужасной точности в СКО = 0.19 (количество опытов 100)
                            Скоро внесу исправления в статью. Еще раз спасибо.
                            З.Ы. НСВ — непрерывная случайная величина.

            0
            Отличная статья, спасибо!

            Я тем не менее выступлю с просьбой к автору — написать еще одну статью на эту тему, но понятную. Ну просто эта статья по духу («смотрите дети — это ниндзя, он хочет кушать») как бы for dummies. Ок, я тот самый dummy, мои познания в предмете ограничиваются тем самым классическим объяснением из Википедии про базовое представление теоремы Байеса. Что же полезного я могу для себя взять из вашей статьи? Как применить это на практике?
              0

              Пожалуй лучше дополню эту статью, но немного позже.
              Практика тут только в том, чтобы утрясти теорию, углубить её понимание.
              Этот подход дальше используется при выводе фильтра Калмана.
              Вообще для слежения, когда отметки будут смещаться, а не находится в одном месте. Когда распределение по разным координатам имеет разную дисперсию.

                0
                Практика тут только в том, чтобы утрясти теорию, углубить её понимание


                Конкретно в моем случае имел место отказ.

            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

            Самое читаемое