Скажи Байесу «Да!»

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Забудь про интуицию — просто думай, как Байес завещал

Моде на так называемое байесовское мышление больше 25 лет, но до сих пор на научных конференциях, в стенах технических факультетов и в курилках ведущих IT-компаний ее часто так горячо обсуждают, как будто она совсем свеженькая. И даже если вы никогда не слышали о том, что такое теорема Байеса, то вы все равно окружены людьми и вещами, использующими байесовский подход постоянно и на каждом шагу. Что делать? Встать на сторону силы.

Встать «на сторону силы», конечно, просто фигура речи. На самом деле наш разговор сейчас лишь о том, как математический инструмент стал широко использоваться на несколько столетий позже момента, когда был сформулирован; как, пользуясь здравым смыслом, не поддаться привычке и дать правильный ответ; о том, как простые и красивые идеи меняют людей и мир вокруг, рождая мечты, прорывы и заблуждения. Но давайте обо всем по порядку. 

Disclaimer: читать эту статью целиком совсем не обязательно, особенно если вы технарь. Будет много ликбеза и того, что вы так или иначе знаете. Хотя... все равно прочитайте.

А? Байес? Что?

Лондон. 1702 год. В семье одного из первых пресвитерианских священников Англии рождается сын Томас. Он получает домашнее образование, проявляет интерес к математике, но все равно становится священником, как и отец. При своей жизни Томас Байес не опубликовал ни одной научной работы под собственным именем. Однако, даже несмотря на это, в 1742 году он был избран в члены Лондонского Королевского общества, что говорит о том, что в научном сообществе Байес был весьма уважаемым человеком. Ну а знаменитая теорема, о которой пойдет речь, была вообще опубликована после его смерти в «Трудах Лондонского Королевского общества». 

Эта теорема, пожалуй, одна из самых значимых теорем во всей теории вероятностей. Если в общих чертах, она позволяет узнать вероятность определенного события при условии, что произошло какое-то другое, статистически взаимосвязанное с ним. 

И сразу формула: P(A|B) = P(B|A)P(A)P(B) 

Спокойно, не закрывайте окно браузера, формул в нашем тексте будет не так уж много. 

P(Х) — вероятность того, что произойдет некоторое событие Х. Например, если Х — событие «выпадет решка», то P(X) = ? или 50%. 

Идем дальше. P(X|Y) называется условной вероятностью. Это вероятность того, что произойдет событие X при условии, что событие Y уже произошло. Такая вероятность вычисляется как P(A|B) = P(A?B)P(B), где P(A?B) — вероятность наступления обоих событий сразу. Например, вероятность того, что ваш хомячок (если он у вас есть) проживет два года (событие В) равна 0,6, а вероятность того, что он проживет три года (событие А), равна 0,3. Тогда вероятность того, что хомячок, доживший до двух лет, доживет и до трех, равна P(A|B) = P(A?B)P(B)= 0,30,6=12=0,5.

Теперь немного математической магии. Заметим, что из формулы условной вероятности следует, что P(A?B) = P(A|B)P(B)=P(B|A)P(A)=P(A?B). 

Ну и что? 

А то, что теперь P(A|B) = P(A?B)P(B)=P(B|A)P(A)P(B), а это и есть наша формула Байеса. 

Здорово, мы вывели формулу. Всё?

Конечно, заслуга Байеса состоит вовсе не в том, что он дважды использовал формулу условной вероятности и получил новую. Его заслуга в том, что именно он объяснил, что это нам дает.

Допустим, у нас есть некоторое убеждение A и мы почему-то знаем вероятность того, что оно истинно (произойдет). Еще у нас есть некое свидетельство B, которое может как-то изменить наше убеждение (А). Так вот. Полученная вероятность P(A|B) — это будет наше новое, измененное свидетельством знание, наше новое убеждение. Дальше существует множество интерпретаций, которые гораздо проще понимать на конкретных примерах, но если говорить об интерпретации самого Байеса, то эта формула показывает, как уровень нашего доверия может кардинально измениться вследствие поступления какой-то новой информации. Совсем просто так: старое знание + новый результат (эксперимент, свидетельство) = новое, более точное знание.

Вероятность события А в данном случае называется априорной вероятностью. То есть это то, что мы знаем к настоящему моменту времени и в чем мы убеждены. Вероятность P(A|B) — апостериорная вероятность. То есть то самое новое, улучшенное знание.

P(B|A) — вероятность наступления события B при истинности гипотезы A, а P(B) — просто вероятность наступления события B.

Иллюстрация: Chrdk.

Но все еще — что с того?

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

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

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

Самый простой пример — подбрасывание монетки. Если бы мы знали силу, с которой мы ее подбрасываем, ускорение, сопротивление воздуха, скорость ветра и всё-всё-всё, что может как-то повлиять на ее полет, мы бы могли сказать со 100-процентной вероятностью, куда она упадет. Но поскольку мы этого не знаем, мы подбрасываем ее миллион раз и говорим, что примерно половина из этого миллиона раз выпадет орел, а вторую половину раз — решка.

Разные подходы к одной и той же проблеме «статистика» и «байесовца»

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

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

Кажется, с теорией мы на этом в целом покончили. Но наверняка у вас все еще есть некоторое недопонимание, я уверен. Поэтому вперед — к примерам. Меньше математики, больше веселья!

Зачем мне теорема Байеса, если…

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

Это самый типичный пример, которым очень любят иллюстрировать работу нашей формулы, показывая все ее могущество. 

Иллюстрация: Shutterstock

Допустим, только 1% процент неудачников не успевают избежать беды и становятся молодыми папами. Чтобы узнать это наверняка, вам придется сделать тест, который, вообще говоря, никогда не бывает на 100% надежен. Но мы будем оптимистами и скажем, что наш тест в 99% случаев дает правильный результат. То есть только одна из ста небеременных девушек на несколько дней впадет в отчаяние или только одна из ста беременных опрометчиво успокоится до первых проявлений признаков нечаянного счастья.

Вопрос: какова вероятность того, что, если ваш тест дал положительный результат, вы действительно беременны? Нет, не 99, не 80 и даже не 75 процентов. Вероятность того, что вы на самом деле беременны, всего лишь 50%. Тоже не очень приятно, но сильно лучше, чем 99. 

Почему? А давайте подставим в формулу и проверим.

. A — я беременна,

. В — тест положительный,

. Р(А|В) — я беременна при условии, что результат теста положительный,

. P(A)=0,01 — вероятность забеременеть в принципе,

. P(B|A)=0,99  — вероятность получить положительный результат теста в случае беременности. Она равна 0,99 из точности теста.

А в знаменателе у нас Р(В) — вероятность получить положительный результат теста в принципе. Даже если он и неверный. Для этого умножим вероятность ложного срабатывания на количество небеременных девушек: 0,01 * 0,99, и сложим с вероятностью положительного срабатывания в случае действительной беременности: 0,99 * 0,01. Итого получаем P(A|B)=P(B|A)P(A)P(B)=0,99*0,01(0,01*0,99)+(0,99*0,01)=0,00990,0198=12=50%. Так что не беспокойтесь раньше времени. Возможно, все не так уж и страшно.

На самом деле, конечно, это гораздо полезнее знать не девушкам, а врачам, которые, например, занимаются исследованиями рака. Потому что в таких вещах шутить не стоит и каждый лишний процент — это надежда и вера в лучшее. 

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

Это еще одна хорошая иллюстрация того, как индуктивная логика противоречит интуиции, а байесовское мышление спасает ситуацию. Называется это парадоксом воронов.

Иллюстрация: Shutterstock

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

В самом деле, чем больше красных яблок я вижу, тем больше убеждаюсь в том, что не черный объект не является вороном, а это, как мы помним,  утверждение, эквивалентное нашей начальной формулировке. Теорема Байеса в этом случае помогает разрешить все математически. Если без формул, то все это будет звучать примерно так: чем больше не черных предметов мы можем наблюдать, тем более мы убеждены в верности нашей теории. То есть тем сильнее меняется наше апостериорное знание. Хотя наблюдение множества красных яблок окажет достаточно слабое воздействие на смещение вероятности того, что утверждение «все вороны черные» верно. Именно поэтому интуитивно нам это и непонятно. Вот если бы мы смогли посмотреть на все не черные предметы Вселенной и убедиться в том, что они не являются воронами, мы бы смогли до конца убедиться в том, что все вороны черные.

...я занимаюсь философией науки и хочу до конца разобраться с критерием фальсифицируемости по Попперу.

Продолжаем погружаться в мышление по Байесу. Для начала несколько слов о самом попперовском критерии.

Слепые мудрецы выясняют, что такое слон, путем ощупывания

Достаточно долгое время наука была чисто описательной и рецептурной: если долго тереть, можно зажечь огонь, если отрубить голову, остальное тело перестает быть живым, у бабочки есть крылья, голова и туловище, и так далее. Но в какой-то момент все поняли, что описания мало и что хотелось бы знать ответы на вопрос «почему?». Но вот отвечать на вопрос «почему?» оказалось довольно сложно. Точнее, проверять этот ответ.

Тогда пришли ребята, которые сказали: «А давайте просто брать и проверять так это или нет так» — и начали ставить массу экспериментов. Если теория бралась предсказать какой-то результат, а выходило что-то другое, теорию считали плохой. И несмотря на кажущуюся простоту такой схемы, сам принцип был формально сформулирован только в 20-х годах прошлого века и назван «верифицируемостью теории».

Но тут снова началось много неприятного. Оказалось, что сама верифицируемость не верифицируема, а в гуманитарной среде стали рождаться крутые науки, которые многое объясняли, но почти ничего, увы, не могли предсказать. Тут-то и пришел Карл Поппер со своим «научная теория должна быть потенциально фальсифицируемой». То есть, если хотите, чтобы наука могла как-то работать с вашей теорией, предъявите хотя бы мысленный эксперимент, результат которого может ее разрушить.

Например, утверждение о существовании чего-то ненаучно, потому мы не можем это опровергнуть. А вот утверждение о том, что чего-то не существует, научно, так как опровергается непосредственным предъявлением этого чего-то. Еще очень важно не путать научность и истинность. Потому что утверждение о том, что Луна состоит из сыра, тоже научно (можно это опровергнуть), хотя и не истинно. Истинность уже подтверждается доказательствами, экспериментами — вот этим вот всем. Хотя на 100% истинно оно все равно не будет никогда.

Теперь можно вернуться к Байесу. Оказывается, что идея Поппера о том, что научная теория может быть фальсифицирована, но никогда не сможет быть полностью подтверждена, это всего лишь частный случай байесовских правил. Здесь придется немного позанудствовать. Пусть у нас есть некая теория A, предсказывающая Х. Если Р(X|A) 1 (вероятность того, что если теория А верна, свидетельство Х наступит с вероятностью почти 100%) и теория делает верные предсказания, тогда наблюдение Х (не Х) очень сильно фальсифицирует А.

С другой стороны, повторное наблюдение самого Х довольно слабо влияет на истинность теории, так как не несет в себе чего-то нового. Например, увидев черного ворона, мы вновь убедимся в том, что все вороны черные, но укрепит это нашу веру не очень сильно, ведь мы и так знаем, что можем наблюдать черных воронов. А вот чтобы подтвердить наверняка какую-то теорию А, нам нужно было бы найти такое свидетельство Х, чтобы Р(Х|А) = 0, то есть предоставить такой Х, который при истинности противоположной теории был бы невозможен. Но этого мы сделать не можем, так как не можем рассматривать все возможные альтернативные объяснения. 

То есть мы не сможем предъявить хоть какое-то абсолютно невозможное свидетельство, если будет истинна теория «ни один ворон не является черным». Поэтому ни одна теория не верифицируема на 100%. Формально мы даже можем сказать, что отношение Р(X|A)/Р(Х|А) показывает нам, насколько наше наблюдение Х сильно в качестве свидетельства (насколько сильно оно подтверждает теорию).

Из формулы мы можем увидеть, что фальсификация (сюрприз!) действительно сильнее верификации: сильное свидетельство не является результатом высокой вероятности того, что А ведет к Х, но является результатом очень низкой вероятности того, что не А ведет к Х. Похожим образом мы можем увидеть, что на самом деле фальсифицировать теорию на 100% мы тоже не умеем, так как фальсификация вероятностна по своей природе. Если наблюдение Х является положительным свидетельством для нашей теории, то наблюдение Х опровергает теорию, но лишь в каком-то объеме. 

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

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

Теперь поговорим о том, зачем вообще Байес нужен в «народном хозяйстве», о приложениях. 

В данном примере со спамом решение проблемы основывается на принципе так называемого наивного байесовского классификатора, идея которого состоит в том, чтобы, оценив ряд характеристик, отнести объект к тому или иному классу. Модель такого классификатора опирается на использование теоремы Байеса со строгими предположениями о независимости (отсюда и наивность). Такой классификатор, несмотря на достаточно серьезные упрощения, обладает значительным преимуществом. Ему не нужно много начальных данных, чтобы достаточно эффективно справляться со своей задачей. Довольно смутное описание, но сейчас все станет яснее.

Рассмотрим на нашем конкретном примере. Мы получаем какое-то письмо, в котором содержатся какие-то слова в каком-то количестве. Сначала мы просто подсчитываем разные слова, входящие в это письмо, а потом определяем, является письмо спамом или нет. Проделав это некоторое количество раз, мы соберем базу слов вместе с частотой их появления в спаме и в обычных письмах. В итоге получаем табличку, где записаны слово, количество его упоминаний в спаме и общее количество упоминаний. Теперь введем понятие «веса» слова — вероятность того, что сообщение с таким словом является спамом. Например, такой оценкой может быть частота появлений этого слова в спаме, поделенная на частоту появлений этого слова в любом произвольном письме. Теперь скажем, что «вес» всего письма — это усредненный вес всех слов, которые в нем содержатся. Дальше мы просто говорим, что, например, если этот вес больше 80%, то будем считать это сообщение спамом. Мы получили новое письмо, определили спам это или не спам, и к известным нам данным добавилось новое знание про слова, встретившиеся нам в этом письме, поэтому мы запишем в нашу базу новые показатели и пересчитаем «веса». Помните, да? Старое знание + новый опыт = новое, более полное знание. Байес в действии. 

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

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

Это еще один знаменитый кейс про IBM Watson, которого после отличных результатов в медицинской карьере и телевикторинах решили обучить большей креативности и дали ему разбираться в кулинарии. 

Суперкомпьютер изучил миллионы рецептов, превзошел химию и физиологию, почитал про запахи и сочетаемость продуктов и через какое-то время готов был вставать к плите. А точнее — посылать к ней кого-то, у кого есть чем готовить. Придумывал рецепты Watson, опираясь на три основных параметра: новизну, сочетаемость и приятность для человека. Здесь Байес сидит в новизне. Если мы возьмём, например, яблоко с корицей, то мало кому это покажется чем-то новым. А вот каперсы в карамели с креветками уже интереснее— это что-то интересное. Не факт, что это будет вкусно, но зато уж точно — ново. Математическая модель, которая лежала в основе оценивания этой новизны, называется подходом «байесова удивления». Она оценивает разницу между апостериорной вероятностью встретить определённое сочетание блюд (каперсы+карамель+креветки) в уже существующих рецептах с априорной вероятностью встретить этот же набор продуктов без добавления одного из них (например, креветки в карамели без каперсов наверняка встретить вполне себе можно). После определения новизны компьютер убирал несочетаемые рецепты с точки зрения запахов и вкуса, а потом ранжировал их по степени приятности. Так в недрах компании IBM появились рецепты миндально-шоколадного печенья в испанском стиле, клубничного десерта по-эквадорски и помидоров гриль на гренках с шафраном. 

…я бизнесмен и хочу захватить мир максимизировать прибыль фирмы:

Мы нанимаем новых работников. И конечно же, мы хотим, чтобы они были надёжные и трудоспособные. 

Иллюстрация: Shutterstock

Сейчас, чтобы определить «качество работника, HR-менеджеры обычно предлагают соискателю пройти множество психологических тестов, сходить на десяток разных собеседований или просто пытаются дать экспертную оценку самостоятельно. Однако весь этот процесс можно заменить программой, в основе которой лежит теорема Байеса. Например, существует экспертная система получения характеристики личности, где на входе потенциальный сотрудник проходит всего один тест — тест Кеттелла. Сам тест на выходе даёт определённое значение шестнадцати факторов, таких как открытость-замкнутость, независимость-податливость и так далее. И, казалось бы, информации не так много, но оказывается, что имея на руках всего шестнадцать этих значений и использовав теорему Байеса, мы можем достаточно хорошо спрогнозировать результаты и других тестов. Например, авторы этой системы предсказывали результаты теста Лири, который уже рассказывает о представлении субъекта об идеальном «Я» и его моделях поведения в группах. Последовательно получая значения факторов теста Кеттелла, Байес пересчитывал вероятность попадания человека в ту или иную группу «пригодности» для работы, на основе чего эксперты уже могли делать вывод. 

Ещё байесовский стиль мышления может пригодиться менеджерам. Например: ваш подчинённый, работающий на макоронопродувательном заводе, пропустил одну макоронинку. Вы смотрите на него и думаете: «Мне срочно нужно наказать этого негодяя, чтобы он больше не допускал такой ужасной ошибки». Я же сижу в головном офисе и просто считаю статистику. И я знаю, что этот рабочий продувает от 10 до 15 тысяч макаронинок в день, а пропускает в среднем 7. И сегодня это была только третья. Обладая априорным знанием, я могу спокойно отнестись к такого рода ошибке. А вы — реагируете на наблюдение (причём, с точки зрения математики, абсолютно неадекватно). Из этого примера ясно, как важно обладать полнотой знаний и умением принимать решения на основе всех имеющихся данных.

Наконец, известная маркетинговая теория 4P (product, price, promotion, place) становится куда лучше и эффективнее, если добавить туда немного нашей теории. А именно — байесовскую оценку решения. Это такая статистическая оценка, которая может ответить на вопрос «при каких начальных вводных вероятность заработать будет максимальной», ну, или если говорить чуть более правильно, она максимизирует апостериорное математическое ожидание функции полезности. А дальше просто берём и применяем. Например, мы разрабатываем новый продукт. Байес позволяет здесь сравнить дополнительные затраты на проект со стоимостью полученной ценной информации, чтобы снизить затраты на неопределенность. Мы не знаем, будет ли наш новый продукт прибыльным, но, имея вводные данные, можем рассчитать прогнозируемую прибыль (апостериорную). Если эта прибыль приемлема, можно вложить ещё денег в это исследование, если нет, проект стоит оставить. Делая такие расчёты с достаточной периодичностью, мы можем значительно уменьшить издержки, особенно в условиях высокого риска. С ценой, рекламой и логистикой схема та же. Есть вводные данные, есть гипотезы насчёт каких-то планируемых нововведений. Считаем вероятность прибыли, смотрим, сравниваем. Профит.

...я занимаюсь машинным обучением:

Здесь Байеса стали использовать не так давно, но, судя по результатам, останавливаться не собираются. 

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

Цель машинного обучения — научить компьютер «думать» не по строго заданному алгоритму, а «по ситуации» (как человек). Тут у нас всегда есть две главные составляющие: множество объектов (ситуаций, вопросов) и набор гипотез (ответов, выходов, реакций). Между объектами и гипотезами существует определённая закономерность, которую обычно называют алгоритмом прогнозирования. В большинстве случаев такую закономерность невозможно задать строгими правилами. Зато у нас есть набор обучающих данных — прецедентов, пар объект-гипотеза, которые являются некой иллюстрацией этой самой закономерности. Мы подходим к машине, которую хотим обучить, даём ей какую-то программу обучения, показываем обучающую выборку и говорим: «Учись!» Если машина учится, то через некоторое время для любого нового объекта того же класса она сможет выдать нам правильный выход (ответ), хотя никакого формального правила этого определения мы ей не давали. Более того, это правило иногда не знаем даже мы сами. Простейший пример — распознавание образов. Например, вилки. Готов спорить, что вы не сможете придумать однозначного описания вилки, которое не подошло бы чему-то ещё. Но вилку то мы с вами умеем распознавать. 

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

Основная идея такая: мы для каждой гипотезы (алгоритма) будем вычислять апостериорные вероятности получения наших обучающих данных и в итоге выберем ту, для которой такая вероятность окажется максимальной. Такой подход называют maximum a posteriori probability (MAP). Математически доказано, что на выходе такой алгоритм даст нам лучшую гипотезу, лучший алгоритм прогнозирования. Ключевым отличием здесь является то, что на вход мы подаём распределение (зависимость вероятности от параметра, иными словами — функцию), показывающее наше незнание или неопределённость относительно некоторой величины, и на выходе получаем не точечную оценку, а точно такое же распределение. Схема та же. Подаём априорное распределение (незнание) искомой величины, наблюдаем за какими-то косвенными характеристиками (проявлениями) этой величины, изменившимися в результате прохождения цикла обучения, получаем новое, более точное представление о нашей величине в виде апостериорного распределения, которое становится новым априорным. 

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

Ещё одно важное свойство, которое мы приобретаем — регуляризация, или, другими словами, отсутствие эффекта переобучения. «Переобучение» — это когда мы слишком сильно подгоняем наш алгоритм под имеющиеся обучающие данные. То есть в поисках «правильных» параметров нашего алгоритма мы на самом деле нашли неправильные, но идеально подходящие для нашего конкретного набора. И когда мы подадим на вход какой-то другой объект, не входивший в список обучающих, мы можем получить совсем неправильный выход. В байесовском подходе этого не случится, так как там просто не существует «правильных» параметров. Там сплошные вероятности и распределения. И это очень удобно, потому что чем больше, например, сеть, тем она лучше, а именно на больших моделях чаще всего приходится сталкиваться с эффектом переобучения. К тому же нам будет достаточно не очень большой обучающей выборки, чтобы достаточно хорошо настроить наш алгоритм. Опять же, за счёт работы именно с распределениями, а не просто численными характеристиками. 

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

...я — Акинатор:

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

Байеса, например, Акинатор угадал на двадцать шестом вопросе. Правда, нужно отметить, что над Акинатором успели порядочно поиздеваться, сбив систему введением баллов за правильный ответ, но в лучшие годы он мог отгадать, например, Эйнштейна за 6 вопросов, которые, казалось, никакого прямого отношения к учёному не имеют. Так вот — есть предположение, что Акинатор тоже работает по Байесу. Предположение, потому что точной информации об устройстве интернет-гения мне найти так и не удалось, но зато я нашёл несколько статей с рассуждениями и попытками сделать что-то похожее, которые выглядят правдоподобно, поэтому расскажу о них. 

Итак, для начала, чтобы сделать такую игру, нужно решить, что будет происходить внутри. Первое — такая программа должна обучаться. Потому что чем больше персонажей, тем больше уточняющих вопросов необходимо задавать, но когда база героев — несколько сотен тысяч, искать их «в лоб» крайне неудобно. Поэтому программа должна учиться на ходу, используя ответы пользователей. Программа должна уметь прощать ошибки, потому что иногда у человека могут оказаться просто-напросто ложные убеждения насчёт какого-нибудь персонажа, но этот «выброс» не должен повлиять на конечный результат. Наконец, программа должна правильно подбирать вопросы, минимизируя их количество. 

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

Дальше мы действуем относительно просто. Будем считать Ai событием «загадан персонаж i», который может быть и Нуф-Нуфом, и Эдвардом Сноуденом, и Эллой Фицджеральд. В — множество ответов на вопросы относительно персонажа i. То есть В = {B1,B2,...,Bk} — k разных вопросов в духе «Ваш персонаж мужчина?» или «Есть ли у вашего персонажа рог?» Тогда апостериорная величина P(Ai|B) будет показывать вероятность того, что был загадан именно объект i. С каждым следующим вопросом эта вероятность для каждого i из нашей базы будет меняться и в какой-то момент, когда она станет достаточно высокой, мы сможем сделать догадку. Кроме того, при k=0, то есть ситуации, когда ни одного вопроса ещё не задано, наши вероятности всё равно не будут равны для всех i. Ведь, например, Пушкина будут загадывать чаще, чем Дугласа Сполдинга. Поэтому мы должны учесть ещё и частоту загадываемых персонажей. Дальше нужно будет сделать ещё несколько алгоритмически важных вещей, связанных с избежанием ошибок и проблемой выбора вопросов, но об этом лучше прочитать в оригинале

Так или иначе, мы получили достаточно простой алгоритм, который на самом деле очень похож на то, как думаем и мы с вами, но с одним отличием — он не ведётся на уловки репрезентативной эвристики. Это когда, например, вам говорят, что есть некая женщина, которая занимается аюрведой, читает гороскопы и носит странную одежду, а потом спрашивают кто она: учительница или гадалка? Большинство людей скажут, что гадалка, игнорируя тот факт, что вероятность встретить гадалку в жизни существенно меньше, чем встретить учителя. А значит, и вероятность того, что эта женщина гадалка — вовсе не так велика. Именно поэтому Акинатор зачастую выдаёт ответ, когда вы этого совсем не ждёте. Потому что общая картина складывается из всей информации, которая у нас есть, но мы почему-то довольно часто не обращаем внимания на, казалось бы, вполне себе очевидные факты.

...я честно прочитал статью до этого момента, но всё ещё не понимаю, зачем мне Байес:

Для начала я попытаюсь просто перечислить области и сферы деятельности, которые я ещё не упомянул, где постоянно используется байесовский подход. Биологи получают наиболее правдоподобные филогенетические деревья, опираясь на байесовские модели. В компьютерной лингвистике проверка гипотез происходит примерно по тем же схемам, что и в филогенетике. Современный эконометрический анализ использует байесовский подход из-за относительно малых выборок, необходимых для построения достаточно точных моделей. Дизайнерские агентства, проводящие A/B-тестирования сайта, используют программы, в основе который лежит Байес. Психологи-когнитивисты предполагают, что на самом деле наш мозг, принимая решения и размышляя, тоже опирается на байесовский алгоритм. Даже в области государственной безопасности не обошлось без него. Сам Гарри Поттер (в книге Юдковского) понял, почему ему никуда не деться от тяги стать Тёмным Лордом, именно благодаря определению истинности суждения по Байесу. Как вы понимаете, на этом наш список не закончен, длить его можно до бесконечности (ну почти). А теперь ещё один небольшой фокус. Если вы ничего до сегодняшнего дня не знали про эту теорему, этого священника и этот подход, но прочитали статью до конца, наверняка ваша уверенность в том, что это что-то стоящее, немного повысилась? Ведь правда? Улавливаете мою мысль? К этому моменту все эти выкладки и размышления кажутся понятными и очевидными, но на самом деле с вами только что всё произошло по Байесу.

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

Но если ты такой умный, то почему же тогда ты такой бедный?

Очень справедливо замечено. Огромная проблема, которая заметна не сразу, это начальная априорная вероятность. Например, в самом первом примере с беременностью мы откуда-то знали, что вероятность стать мамой по неосторожности равна одному проценту. Кто нам это сказал? В жизни — только статистика, являющаяся не самым надёжным источником. Более того, в реальной жизни это скорее всего будет не конкретное число, а какой-то интервал, что несколько осложняет вычисления. Иногда эта априорная вероятность вообще основывается на чистых догадках, тогда мы даём дорогу субъективизму и серьёзной ошибке на самом старте. Из-за этого теорема Байеса не всегда «служит добру», потому что является универсальной для всего на свете. И при качественном подборе априорных данных мы можем получить с помощью неё и значительную вероятность вреда ГМО, и существования рептилоидов и даже действенности заряженной воды. 

Но на самом деле здесь лежит красивая идея: если вы недостаточно хорошо стараетесь найти альтернативные обоснования уже имеющихся свидетельств, то эти свидетельства лишь сильнее подтвердят то, во что вы верите. Например, увидев странную штуку в небе и рассчитав вероятность её появления там, можно убедиться в том, что это определённо НЛО. Но если покопаться глубже и подумать о других возможных причинах, то возможно всё окажется не так интересно и загадочно, как вам, может, и хотелось бы. 

Так всё же — что с того?

Попробуем всё быстренько обобщить. Теорема Байеса — это не только математический аппарат, который помогает в решении множества прикладных задач. Это в первую очередь стиль мышления, подразумевающий ясность, полноту и непредвзятость. Всегда необходимо помнить, что у любого свидетельства существует множество причин, поэтому никогда не стоит делать поспешных выводов. И даже если вы видите прямо перед собой огромного дракона, дышащего огнём, вспомните что вы сегодня принимали, как спали, какой сегодня день и где вы находитесь. Возможно, всё можно объяснить довольно просто. Наравне с этим нельзя забывать, что любая наша интерпретация такого свидетельства очень сильно зависит от той информации, которая у нас в голове уже есть. Например, я как-то раз в детстве нашёл в огороде что-то шарообразное, мягкое, прозрачное и зелёное. Конечно же, я подумал, что это пришелец. А потом оказалось, что это всего навсего «попрыгунчик». Но мне было лет 5, и о существовании «попрыгунчиков» я тогда ещё не знал. Поэтому каждый раз, когда вам встречается что-то новое, и вы пытаетесь объяснить это теорией А, которая есть у вас в голове, подумайте о том, что было бы, если бы этой теории не существовало. Могли бы вы тогда всё равно увидеть этот инопланетный «попрыгунчик» или нет? Наконец, нужно тщательно подходить к выбору теорий, подтверждающих наши свидетельства. Если теория объясняет явление, которое может объясняться и другой теорией, то такое явление будет плохим доказательством нашей теории, и сама теория поэтому будет слабо доказуемой. 

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

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

Что ж, think Bayes and go to the truth, ведь как говорил Джордано Бруно, стремление к истине — единственное занятие, до­стойное героя.


Источник: chrdk.ru

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