Как стать автором
Обновить
235
0

Пользователь

Отправить сообщение
Ну давайте по пунткам:
Hadoop как средство для индексирования


Hadoop вырос из Nutch, который вырос из Lucene. Но к моменту формирования Hadoop как отдельного проекта ASF (а тем более к моменту, когда он стал проектом верхнего уровня), Hadoop уже был вполне самостоятельным продуктом, вышедшим далеко за пределы индексирования текста.
Миф 1. Hadoop — это бесплатно


Софт — бесплатно, цена железа остаётся, и я пока не встречал менеджеров, которые это не понимали. Но цена софта тоже имеет значение: у нас, например, одна только лицензия на Vertica стоит больше чем лизинг серверов Hadoop и стоимость фулл-тайм администратора для него. Мы используем и то, и другое, для разных задач, потому что в одних случаях дешевле решать задачу одним способом, в другом — другим.
Миф 2. Hadoop для обработки неструктурированной информации.


Ок, задача: классифицировать 10Тб сообщений пользователей на Facebook. Опробовать статистические методы: наивный Байесовский классификатор, логистическая регрессия, машина опорных векторов. Покажите как это сделать на Vertica, Teradata или что вам больше нравится, а потом сравним это с реализацией на Hadoop/Spark.
По цене CDH выходит немного дешевле Vertica/Greenplum.


Да, например бесплатно. С поправкой на железо, конечно, но про это я уже сказал.
Все это более-менее эффективно работает на простых запросах.


Ага, поэтому мы сейчас переписываем уже почти загнувшееся решение на Redshift/Vertica на Spark/SparkSQL.
Vertica будет полировать свою интеграцию с HDFS


Полировать — это сильно сказано. Когда мы последний раз пытались написать свой (!) ридер паркетовский файлов из HDFS с помощью Vertica UDF, внезапно оказалось, что Vertica вообще не умеет парсить бинарные данные и пытается перевести из "битой" кодировки в "нормальный UTF-8". Бинарные данные в UTF-8, ага.

В общем, вы явно либо не поняли сути технологического стека Hadoop, либо просто не хотите слазить с SQL-ориентированных задач. Увы, не всё в мире сводится к JOIN-у двух таблиц.
Боюсь, VR здесь не сильно поможет, потому что почти во всех направляениях визуальная составляющая весьма незначительна :) С другой стороны, в традиционных БИ есть куча комплексов, которые позволяют подготовить тело и прочувствовать «обратную связь». Вот их можно делать и на дому.
Меня смутила фраза «боевое искусство кунг фу», которая даже в просторечии звучит как «боевое искусство 'боевое искусство'». Соответсвенно, дальше очень трудно понять, какой именно стиль или набор упражнений был визуализирован.
На будущее:

* Кунг фу (или, правильнее, гун фу) — это термин, означающий мастерство, достигаемое долгой работой над собой. Что это за работа — физические тренировки или лепка глиняных горшков — значения не имеет.

* У шу — дословно «боевое искусство». Термин относится к искусству боя вообще, конкретные наборы техник и методов тренировки обычно называют стилями.

С точки зрения практики видео, конечно, бесполезное, но так и делал же мультимедиа дизайнер.

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


В германских языках приняты короткие слова и строгий порядок членов предложения. Типичный пример проявления германских языков в английском — это фразовые глаголы (например, "get up", "jump in" и т.п.). Другой пример — переход существительных в прилагательные (например, horse race — "лошадиные бега", а не "лошадь бега").


Латинские языки, с другой стороны, имеют более сложное словообразование ("objective opinion" а не "object opinion"), но и порядок слов у них может быть посвободней (см., например, современный французский).


Из-за смешения двух групп языков английский получился довольно "странным", с кучей исключений и тонкостей. Например, в английском абсолютно нечёткие правила чтения (вы же помните транскрипцию в англо-русских словарях? вот она там не просто так). Названия некоторых стран без какого либо объяснения могут иметь артикль the (Russia, но the Netherlands). Сокращения не всегда консистентны ("he's" — это "he is" или "he has"? "I'd" — это "I would" или "I had"?). Много остатков староанглийского (для большинства глаголов "not" ставится спереди, для модальных и некоторых обычных — позади основного, как это было принято раньше).


Я почти совсем не знаю немецкий, но вполне поддерживаю мысль, что английский — "странный" :)

Единственное, как применять равномерное распределение, если даже диапазон не определен? От -inf до +inf?

В этом случае P(Y|X) = P(Y), в каком бы интервале не был определён X. Смотрите:
Но для начала 2 базовые вещи, про которые иногда забывают
Нужно помнить, что если X и Y — непрерывные величины, то P(X) описывает плотность вероятности, т.е. такую скользкую штуку, которая в каждой конкретной точке X=x, вообще говоря, равна нулю (потому что размер точки равен нулю), поэтому точную вероятность посчитать нельзя. Тем не менее, это не мешает нам оперировать плотностями точно так же, как обычными вероятностями, т.е. делить и умножать их, а значит и передавать в формулу Байеса.
Сама же формула Байеса является всего лишь простым разложением формулы совместной вероятности. Мы знаем, что вероятность одновременного наступления событий A и B (например, вероятность, что X = x && Y = y для дискретных или соответствующие плотности для непрерывных переменных X и Y) равна вероятности одного события умноженная на верноятность второго при условии наступления первого (что, в принипе, довольно логично), т.е. P(X, Y) = P(X)P(Y|X) или P(X, Y) = P(Y)P(X|Y). Приравняв правые части двух последний уравнений и перенеся P(X) в знаменатель другой стороны, мы и получаем знаменитую формулу Байеса:

P(Y|X) = P(Y)P(X|Y) / P(X)

Про X мы кое-что знаем: он распределён равномерно. Равномерно вне зависимости от каких-то условий, т.е. P(X|Y) = P(X). Подставим его в формулу:
 P(Y|X) = P(Y)P(X|Y) / P(X) = P(Y)P(X) / P(X)

Убираем одинаковые части из числителя и знаменателя и получаем:
P(Y|X) = P(Y)

Вуа-ля! В итоге это эквивалентно тому, что Y не зависит от X, а также эквивалентно частотному подходу в статистике.
Вот этот график — он же определяется и P(X), и P(Y | X).

График, в общем-то, является всего лишь графическим представлением P(X), причём только его — про Y этот график вообще ничего не говорит (даже если в своих рассуждениях мы получили его при изучении Y, но про это смотрите следущий пункт).
Глядя на этот график нельзя сказать, что если он похож на какое-то распределение, то назначим P(X) таким-то

Я бы сказал, что у вас тут изначально неправильный подход к вопросу. Смотрите: мы знаем, что значения X распределены примерно как на графике. Мы это узнали по набору экспериментов, но для анализа нам нужна аналитическая форма P(X). Это касается не только этого конкретного случая, но и вообще любых распределений любых случайных переменных: мы всегда хотим найти простой способ работать с такой сложной штукой как P(X).
Ещё одно маленькое отступление
Надо понимать, что P(X) — это не график (график — это всего лишь визуализация плотности вероятности) и не число (хотя числом является P(X=x) или P(x1 <= X <= x2)). Распределение вероятности P(X) — это функция, которая ставит в соответсвие каждому возможному значения x какое-то число от 0 до 1. И эта функция может быть абсолютно любой. Например, она может быть задана покусочно для каждого из 100000 подинтервалов области определения. Однако работать с такими некрасивыми распределения тяжело и неудобно, поэтому гораздо проще заменить его — точно или приближённо — каким-нибудь аналитически простым. Например, есть исследование, которое утвреждает, что почти ничто в мире на самом деле не следует нормальному распределению… что не мешает приближённо описывать им очень и очень много естественных процессов.

Вообще, тут мы могли бы просто сказать "ок, мы знаем, что график P(X) похож на график бета-распределения, так давайте его им и аппроксимируем". И этого уже будет достаточно — вместо какого-то непонятного покусочного распределения без точных параметров мы бы получили простую аналитическую формулу, которая полностью определяется двумя параметрами (в бета-распределении они называются alpha и beta).
Можно пойти и другим путём и проанализировать возможную форму P(X). Довольно хорошо это сделано, например, здесь (там есть некоторые пробелы в объяснении, но наверное я и сам их сейчас не заполню). Основная идея в том, чтобы найти априорное распределение, которое в комбинации с функцией правдоподобия, будет давать распределение, пропорциональное апостериорному. Уж, звучит немного мозговзрывательно, но если посмотреть на слайд 7 в презентации, должно стать немного понятней.
Такой трюк работает далеко не всегда, поэтому на практике все просто знают наиболее популярные сопряжённые распределения (вот, кстати, хорошая диаграмма с наиболее популярными из них) и используют их направо и налево.
Ну вот, так гораздо понятней. Только, боюсь, вы не совсем поняли смысл статьи (ну или я его совсем-совсем не понял).

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

The a priori information gleaned from this analytical work can then be used to propose exactly those (large) moves which are compatible with the system.

Если следовать нотации из Википедии, Metropolis-Hastings работает с двумя распределениями: целевым P и вспомогательным Q, из которого делается сэмплирование для определения направления и длины шага. A priori, про который вы говорите, помогает выбрать более оптимальную длину и направление, при этом, конечно, при большом количестве шагов его значение уменьшается.

Статья же концентрируется на распределени P. Более того, речь идёт о статистическом выводе в байесовских сетях. И вот в байесовских сетях есть своя a priori (в статье это априорное распределение значений параметра — P(theta)), которая никакого отношения к распределению Q (как и вообще к методам MCMC) не имеет (равно как и статья, на которую вы ссылаетесь, не имеет никакого отношения и ни разу не упоминает байесовские сети).

Весь алгоритм Метрополиса-Хастингса в рамках данной статьи сводится всего к паре шагов:

  1. Взять случайное значение mu, измерить, насколько он хорош.
  2. Передвинуться в случайном направлении (в данном конкретном случае — согласно нормальному распределению с центром в mu, но вообще на этом автор нигде не концентрируется).
  3. Если стало лучше, то остаться, если хуже, то с некоторой вероятностью вернуться назад.
  4. Повторить.

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

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

Был сделан вывод, что в качестве prior для theta может подойти распределение, которое похоже на распределение случайного процесса с параметром theta.

Уф, нет, здесь что-то не так. Обычно при объяснении я сразу рисую графы, но рисовать на форуме довольно проблематично, поэтому попробую обойтись псевдографикой.

Для начала нужно понять отличительные черты нотации частотной и байесовской статистики. Частотники, когда описывают распределение случайной переменной Y, которая зависит от параметра theta, пишут:



в то время как байесовцы заменяют это на:



Эта незначательная, казалось бы, деталь раскрывает очень важное различие между двумя подходами: в отличие от частотников, байесовцы часто выносят параметры распределения в отдельную случайную переменную с собственным (возможно, тоже параметризованным) распределением. Т.е. в байесовском подходе мы уже работаем не с одной случайной переменной Y, а с двумя, связанными в граф:

Theta -> Y 

Чтобы окончательно убрасть двоякость, заменим Theta на X — по иксу сразу видно, что он — случайная переменная, а не просто константный параметр:

X -> Y

этот граф можно параметризовать двумя распределениями: поскольку X у нас ни от чего не зависит, то для него достаточно определить P(X), а вот Y зависит от X, так что для него понадобится условное распределение — P(Y | X). В общем случае, эти два распределения никак не связаны и представляют собой 2 абсолютно независимые функции. Однако, если мы ничего не знаем о системе, то и сделать с ней ничего не можем, поэтому обычно мы делаем несколько упрощений:

  • считаем, что P(X) и P(Y|X) принадлежат к какому-нибудь красивому и хорошо изученному распределению;
  • по возможности стараемся сделать P(X) и P(Y|X) сопряжёнными.

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

Я надеюсь, это отвечает на ваш вопрос?
Уф, честно говоря, я не особо понял ваш комментарий, поэтому давайте по частям.

выбор a priori не влияет на полученное равновесное a posteriory распределение

Сам MCMC имеет мало отношения к априорному и апостериорному распределению, как и вообще к байесовской статистике. Если брать конкретно алгоритм Метрополиса-Хастинга (кстати, кто знает, где ударение в имени "Метрополис"?), то ему для работы нужно только уметь получать плотность вероятности в каждой точке. Что это за вероятность — ему глубоко всё равно, но чаще всего это правдоподобие данных, т.е. P(x | theta), где theta — это параметры, которые алгоритм варьирует. Соответсвенно, скорость сходимости зависит от того, насколько мы сходу угадали значения параметров theta.

Априорная вероятность — это немного другое. Автор этой статьи изначально исходит из задачи статистического вывода в байесовских сетях, которые постоянно используют понятия априорного и апостериорного распределения. И вот в таких сетях априорное распределение очень даже влияет на апостериорное: во-первых, зачастую одно определяет форму другого, а во-вторых, если априорная "вера" высока, то она может очень сильно повлиять на параметры апостериорного распределния (если "вера" слаба, то апостериорное распределение в основном определяется данными, что совпадает с частотным подходом).

Т.е. теорема Байеса (вместе с априорным и апостериорным распределением) и MCMC — это ортогональные понятия, и даже на странице про алгоритм Метрополиса-Хастинга в Википедии нет ни одного упоминания про "prior distribution".

можно было вообще приравнять prior_current = prior_proposal = 1 и всё будет работать аналогично

Опять же, не понял, что вы хотели сказать. prior_current и prior_proposal — это вычисляемые значения, приравнивать их чему-то как бы нет смысла. Возможно, вы имели ввиду mu_current и mu_proposal, из которых они вычисляются. Но и их приравнивать чему-то нет смысла, разве что на шаге инициализации: mu_proposal вычисляется как случайное отклонение от mu_current, а mu_current, соотвественно, принимает или не принимает новое значение mu_proposal на каждом новом шаге. Если вдруг мы в коде по ошибке сделаем mu_current == mu_proposal, то наш алгоритм вообще не будет двигаться и никогда не найдёт… эээ, назовём это mu_optimal.

В общем, наверное я что-то не так понял, поэтому появните, пожалуйста.
В статье так весело сказали, что мол возьмем для мю нормальное с центром в нуле и с неким std, но разве это не означает уже некоторое откуда-то взявшееся предположение?

Означает, в этом и смысл байесовской статистики. Например, мы хотим оценить результат президентских выборов, в которых участвует 2 кандидата — А и Б. А — политик с 20-летним стажем, никогда президентом не избирался, но всегда находился в "верхах", часто появляется на радио и ТВ. Б — тоже политик, но с гораздо меньшим стажем, практически неизвестный широкому кругу избирателей. Мы ещё ничего не знаем о текущих предпочтениях избирателей, но можем предположить, что кандидат А имеет примерно в 3 раза больше шансов победить, чем кандидат Б. Вот это предположение и будет нашей априорной вероятностью, т.е.

P(A wins) = theta = 0.75
P(B wins) = 1 - theta = 0.25

Здесь мы моделируем выборы через распределение Бернулли, т.е. простое бинарное распределение с единственным параметром theta, показывающим вероятность победы кандидата А (вероятность победы кандидата Б, соответсвенно, равна 1 - theta). Если бы кандидатов было больше 2, то нам пришлось бы использовать уже категориальное распределение.

А вот если мы после нашего предположения проведём ещё соцопрос, то его результаты и будут нашим evidence (всё-таки бьёт по ушам это "свидетельство"). И если прогнать априорное распределение и evidence через формулу Байеса, то как раз и получится апостериорное распределение.

Однако, если мы хотим быть тру байесовцами, то мы никак не можем считать theta константой, а обязательно должны сделать его случайной переменной! Это, в общем-то, вполне логично: наша оценка победы кандидата А на выборах вряд ли равна строго 0.75. Скорее, мы верим, что скорее всего его шансы равны 0.75, но готовы согласиться (хотя и с меньшей вероятность) и на 0.7 или 0.8, или даже, чем чёрт не шутит, на 0.5, хотя в это мы верим и меньше. Т.е. наша предварительная вера сама по себе является непрерывной случайной переменной.

Вопрос: какое распределение будет иметь параметр theta (теперь его уже корректней звать случайной переменной theta — ещё одна отличительная особенность в терминологии частотного и байесовского подходов)? Отбросим на секунду выборы и возьмём монетку, потому что её мы можем бросать сколько угодно, а вот кидать кандидатов в президенты, пожалуй, не стоит. Допустим, мы бросили монетку 10 раз, 7 из которых она упала орлом — записываем: theta[1] = 0.7. theta[1] — это наша первая оценка параметра theta. Повторим эксперимент ещё 9 раз — получим, скажем, такой набор измерений параметра: theta[1:10] = [.8, .6, .9, .8, .7, .5, .8, .8, .7, .9]. Если попробовать сгладить и нарисовать такое распределение, то получится как-то так:

image
При этом такое распределение как раз и соответсвует нашей оценке для возможных параметров theta — наиболее вероятно, что theta лежит в окресности значения 0.75, с меньшей вероятность — больше или меньше этого значения. К нашему набору экспертиментов можно подойти формально через биномиальное распределение (которое является всего лишь распределением не одного, а нескольких бросков монетки) как это описано в Википедии, а можно сразу заметить, что функция плотности вероятности для theta уж очень напоминает Beta распределение. Тут важно понимать, что это не задача предполагает точно и однозначно Beta распределение, а это мы его выбрали, потому что удобно.

Возвращаясь к выборам и собирая всё вместе, получаем такую модель. Есть 2 переменные: theta — вероятность победы кандидата А, и x — количество голосов за каждого кандидата, которое мы узнаем после опроса. Есть 4 вероятности: P(theta) — предварительная вероятность победы кандидата А, т.е. наша вера до соцопроса; P(x|theta) — правдоподобие, вероятность получить такие данные при таком значении theta; P(x) — вероятность получить такие данные вообще и наша искомая P(theta|x) — вероятность победы кандидата A уже после соцопроса.

Как видите, мы выбрали априорное распределение не "потому что", а "для того, чтобы". Если бы кандидатов у нас было больше, то вместо бета-распределения мы бы могли взять распределение Дирехле. Если бы моделировали отклонение от графика для автобуса, то могли бы предположить, что оно примерно нормальное. Или равномерное, или то же бета — тут уже зависит от того, что подсказывает интуиция (или прежний опыт или общие соображения) и с чем нам удобней работать.
Таки первые 2 формулы должгы идти в обратном порядке — сначала формула Байеса, а потом — формула полной вероятности свидетельства ;)
Как раз построения полной совместной вероятности все пытаются избежать. Я как-то считал, что таблица полной вероятности для RBM с какими-то шуточными 1000 видимыми и 100 скрытыми бинарными узлами, имеет размер примерно на 5 порядков больше, чем количество атомов во вселенной :) А вот как раз факторизация на графическую модель и параметризация через лог-линейные модели (те же веса) позволяет вполне спокойно с этим работать.
Теорию можно сколько угодно обобщать, но считать машина вывод в графической модели будет до второго пришествия. Это просто непрактично.

У вас какое-то негативное представление о PGM :) Вероятностные сети могут быть очень разными, но в обученной байесовской сети, особенно если она дискретная, вывод делается за линейное время и количество операций чуть большее, чем в стандартной feedforward нейронной сети. С неприрывными переменным всё немного сложней, там нужно, чтобы априорное и апостериорное распределения были сопряжёнными, чтобы апостериорную вероятность можно было считать аналитически, а это не всегда практично. Но и тут есть куча обходных путей, начиная с сэмплирования и заканчивая тем же вариационным Байесом. Так или иначе, это вопросы к методу, вычислительно в большинстве практических сетей ничего тяжёлого нет.
Уууу, ну вы загнули, вы хотите BNN трактовать, как графическую модель и считать распределение выходов given input, я правильно понял? Да вы знаете толк :)

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

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

ЦПТ даёт теоретическое обоснование, на практике же есть 10-fold cross validation, которая прекрасно работает на практике, хотя и использует всего 10 сэмплов.
BNN — это не feed-forward сеть, через нее нельзя прогнать данные

Да почему же, вроде обычный belief propagation здесь должен сработать на ура.

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

Да почему же в наивной надежде, эта "надежда" является прямым следствием центральной предельной теоремы: у вас есть N моделей обученных на разных сэмплах из изначальной выборки, т.е. N сэмплов функций f_i(x) из одной "популяции функций". Прогоняя фиксированные данные x через эти функции f_i вы получаете N матожиданий. По центральной предельной теореме эти N матожиданий будут иметь нормальное распределение, для которого тоже можно посчитать своё эмпирическое матожидание, которое будет ничем иным как средним арифметическим от всех f_i(x). И это работает что для N сетей обученных на рахных сэмплах данных, что на N сэмплах сетей (параметров), обученных на одних данных.

Я имел ввиду именно то, что вы сказали. Автор этого вольного перевода пошел в лоб согласно теореме Баеса для получения posterior на параметры интегрировать по всему пространству параметров (считать 100500 регрессий)

Так это использование байесовской теоремы, которая к байесовскому подходу имеет весьма слабое отношение ;)

Байес вообще был классный мужик, но 1) формула Байеса; 2) байесовское определение вероятности; 3) байесовские сети вообще связаны друг с другом весьма апосредованно.
Я пробежался по обеим статьям и теперь готов ответить. Сразу извиняюсь, если буду "доколёбываться до мышей", но вопрос тонкий и хотелось бы убрать все неточности.

После обучения у вас получается не много MLE-сетей, а одна байесовская сеть

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

которая при каждом прогоне выдает сэмпл параметров (по сути, ту же MLE-сеть).

Честно говоря, не нашёл такой информации ни в той, ни в другой статье. В моём понимании при прогоне данных через сеть на выходе мы получаем не набор сэмплов, а конкретное распределение, описывающее степень уверенности в каждом ответе. Это как с логистической регрессией: на выходе у нас не просто 1 или 0, а вероятность P(1), а вот что с этой вероятностью делать — это уже вопрос к пользователю (например, банк может быть заинтересован в выдаче кредита человеку, для которого вероятность вернуть кредит значительно меньше 0.5).

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

Как раз если брать классическое ресэмплирование, то у него очень даже хорошее математическое обоснование и минимум допущений. В общем-то, сэмплирование как раз и используется в описанном методе для минимизации разницы между распределениями P и Q (см. cекцию "Unbiased Monte Carlo gradients" во второй работе).

они байесовский подход реализовали не построением модели для всех возможных комбинаций параметров [...]

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

В общем, давайте я тоже прочитаю статью, а потом уже побеседуем более подробно, ибо просится много комментариев, но без контекста, которые уже есть у вас, но ещё нет у меня, разговор вряд ли получится осмысленным.
Так вопрос именно в том, как получить рапределение параметров N(m, s), и один из самых простых способов — это ресэмплирование (при этом необязательно делать 100 сэмплов из 99%, можно и 10 сэмплов из 10% каждый, т.е разменять качество замеров на их количество при фиксированном количестве операций). Естественно, тут мы перекладываем головную боль с себя на компьютер — для той же линейной регрессии распределение параметров прекрасно выражается аналитически, но понять эти формулы без веществ продвинутого курса линейной алгебры и матанализа практически невозможно.

В общем и целом, стократное сэпмлирование — это вполне приемлимо и гораздо лучше 2560000 вычислений, вызванных перебором. А в целом ускорение обучения — это ооочень большая тема, и я бы её начал скорее с конкретной архитектуры сети ти с конкретных задач, чем с вариационных методов или обратного распространения ошибки.
Забыл про Лапласа. В своём замечательном эссе Пьер-Симон очень наглядно показывает, почему точные параметры вселенной нам недоступны, так что не стоит и пытаться. Зато статистическое описание мира позволяет вполне неплохо справляться с этой неопределённостью, а не винить в чуме комету и не устраивать охоту на ведьм.
Я на это всё обычно немножко с другой стороны смотрел. Есть некоторая зависимость y = w0 + w1x1 + ... wnxn, которую мы хотим найти. Но, как учил дедушка Лаплас*, точные зависимости мы узнать не можем, поэтому должны работать с вероятностями. Тогда наше уравнение превращается в уравнение со случайными переменными:

Y = W0 + W1X1 + ... + WnXn

Где Y, X и W0..Wn — все являются случайными переменными. Классическая регрессия позволяет нам посчитать наиболее вероятное значение параметров W0...Wn, т.е. по сути представляет собой MLE. А вот чтобы из набора единичных параметров получить набор распределений этих параметров, достаточно всего лишь ресэмплировать наши данные нужно количество раз. Т.е. по сути вместо одной регрессии на всём нашем сэмпле мы строим, скажем, 100 регрессий на случайных 90% наших данных. 100 регрессий дают 100 значений каждого параметра, по которым уже вполне можно оценить их распределение. При этом не нужно ни проходить по всем возможным значениям параметров (как в вашем первом подходе), ни выводить аналитическую формулу (как в вашем втором примере… хотя формулы и хороши :)).

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность