Comments 64
Большое спасибо, было интересно!
(Включаю тихо-занудный голос: argmax тоже должен быть набран прямым шрифтом, ровно как и log под ним.)
(Включаю тихо-занудный голос: argmax тоже должен быть набран прямым шрифтом, ровно как и log под ним.)
+7
Переобучения не существует?
То есть вы увидели 100 белых лебедей и сделали вывод, что черных не существует.
Весь датасет из белых лебедей. И вы переобучились. В любом случае.
То есть вы увидели 100 белых лебедей и сделали вывод, что черных не существует.
Весь датасет из белых лебедей. И вы переобучились. В любом случае.
+4
А, ну да: обязательным условием к этому делу служит "датасет должен быть собран i.i.d.", т.е. из независимых и рандомизированных примеров. Собрать в датасет только белых лебедей равносильно тому, что я сделаю выборку из одних орлов при бросках монетки)
+4
Т.е., в вашем случае шаги такие:
Черных лебедей он при этом и правда не опознает — точно так же как радужно-урановых лебедей с планеты Солярис, например. Но "узнать о всех лебедях во вселенной" — это не задача машинлернинга, и по-моему, вообще сама по себе задача слабовыполнимая)
- мы набираем случайным образом лебедей. Так уж получилось, что вокруг нас живут только белые.
- мы делим их случайным образом на обучающую и тестовую выборку
- классификатор, обучившись на первой, корректно предсказывает лебедей из второй (тестовой)
Черных лебедей он при этом и правда не опознает — точно так же как радужно-урановых лебедей с планеты Солярис, например. Но "узнать о всех лебедях во вселенной" — это не задача машинлернинга, и по-моему, вообще сама по себе задача слабовыполнимая)
+5
Что-то вы сложно отвечаете на простой вопрос. Тут весь смысл в том, что при байесовой оценке (MAP) вы не получите нулевую вероятность черных лебедей.
MLE оценка для черных лебедей (оцениваем матожидание mu):
MAP оценка для черных лебедей, при условии бета-распределения на параметр mu B(alpha=5, beta=5):
То есть вероятность низка, но не нулевая.
ps спасибо за статью. Редко на хабре появляется байесовская статистика.
MLE оценка для черных лебедей (оцениваем матожидание mu):
mu = N_black / (N_white + N_black) = 0/100 = 0
MAP оценка для черных лебедей, при условии бета-распределения на параметр mu B(alpha=5, beta=5):
mu = (N_black + alpha - 1) / (N_white + N_black + alpha + beta - 2) = (0 + 5 - 1) / (100 + 5 + 5 - 2) = 0.0370..
То есть вероятность низка, но не нулевая.
ps спасибо за статью. Редко на хабре появляется байесовская статистика.
+9
Вы правы, но если белых лебедей будет стотыщмиллионов — то получите уже очень близкую к нулевой) "The data overwhelm the prior". Мне просто кажется, что это (черные лебеди) неудачный пример для переобучения — он интуитивно понятный, но неправильный. Когда алгоритму неоткуда узнать о существовании черных лебедей, у него нет никакого резона их предполагать — точно так же как зеленых, синих и фиолетовых)
Спасибо за фидбек)
Спасибо за фидбек)
+6
На чёрных лебедей, наверное, действительно можно забить, а вот, например, на новое слово в тексте — вряд ли. Т.е. если даже у вас есть архив половины интернета, то мы всё равно верим, что во второй половине есть слова, которые мы никогда до этого не видели. И вот эта вера переносит нас от частотного в байесовский подход и заставляет добавлять как минимум +1 ко всем вариантам (а как максимум, предполагать априорное бета распределение для параметров).
+3
UFO just landed and posted this here
Неплохой пример. На самом деле человек тоже переобучён. Видевший только белых лебедей будет уверен, что все лебеди белые. И очень удивится, увидев чёрного. Это не проблема чисто современных машинных нейросетей. Но, быть может, им не хватает "удивления". У человека в момент удивления происходит активизация гормонами всех процессов, в том числе записи опыта, событие "врезается в память".
Можно попробовать заложить механизм удивления. Например, хотя бы через умножение на порядок-другой поправок в веса от обратного распространения ошибки в нетипичном случае. И как понимаю, делать это нужно не ранее чем на 2-й прогон обучения, когда сеть уже даёт то, что от неё хотят в обычных случаях.
Можно попробовать заложить механизм удивления. Например, хотя бы через умножение на порядок-другой поправок в веса от обратного распространения ошибки в нетипичном случае. И как понимаю, делать это нужно не ранее чем на 2-й прогон обучения, когда сеть уже даёт то, что от неё хотят в обычных случаях.
0
Hi, в разве теорема Байеса не P(theta | X) = P(X | theta) P(theta) / P(X), а не P(theta | X) = P(theta | X) P(theta) / P(X)? Или я что-то путаю, т.к. прогулял эту лекцию по ТВИМС ?)
+3
Мой любимый парадокс в действии — еще две недели я потратил полдня разбираясь во всех этих правдоподобиях и апостриорных вероятностях — и вот статья, с которой я бы разобрался за час- полтора. Излагаете понятно и не заумно.
З.Ы. Зачем вариант "посмотреть результаты", когда есть "воздержаться"?
З.Ы. Зачем вариант "посмотреть результаты", когда есть "воздержаться"?
+3
Спасибо за фидбек) Не знал, что так можно было — а потом кажется, после создания опроса вариант убрать нельзя.
0
У этого парадокса есть какое-то название? Мистик во мне шепчет, что это не случайно, а технарь — что так совпало (в чём ничего необычного) и этому совпадению я придаю больше значения.
0
Феномен Баадера-Майнхоф. Ученые говорят, что узнав что-то новое, мы начинаем обращать на это внимание, что и вызывает подобное ощущение. Вроде как логично, но иногда просто не верится...
+1
В формуле Байеса опечатка, которая потом лезет дальше по тексту под именем «правдоподобие». Грепать по $P(\theta | X)$.
+3
В последнем разделе не очень понятно, как удалось выразить argmax суммы по частям. Были найдены argmax'ы для каждого из двух слагаемых, но как потом из этого найти argmax суммы?
0
В какой-то момент у вас получились аттракторы. Если бы еще создать необратимость во времени, можно было бы научить сети выводить логически объяснимые закономерности или даже делать простейшие научные открытия.
0
Мне вот интересно, имеет ли какое-то косвенное отношение рассмотренный вами подход к новомодному методу уменьшения переобучения, так называемому dropout.
Метод впервые был описан (насколько мне известно) в ImageNet Classification with Deep Convolutional Neural Networks. Alex Krizhevsky Ilya Sutskever Geoffrey E. Hinton
Но метод никак, кроме как на интуиции не обоснован. Суть примерно такая: а давайте с вероятностью 0.5 процентов будем выключать нейроны, чтобы они не расслаблялись и не начинали запоминать датасет.
Метод впервые был описан (насколько мне известно) в ImageNet Classification with Deep Convolutional Neural Networks. Alex Krizhevsky Ilya Sutskever Geoffrey E. Hinton
Но метод никак, кроме как на интуиции не обоснован. Суть примерно такая: а давайте с вероятностью 0.5 процентов будем выключать нейроны, чтобы они не расслаблялись и не начинали запоминать датасет.
0
Во-первых, он не новомодный, ему уже лет пять как минимум.
Во-вторых, он еще как обоснован!
Во-вторых, он еще как обоснован!
- droupout с вероятностью 0.5 в последнем полносвязном слое из N нейронов feed-forward сети эквивалентен ансамблю из геометрического среднего результата от 2^N нейронных сетей, шарящих выбранные веса, со всеми возможными конфигурациями выбранных в последнем слое нейронов.
Т.е. вы как бы берете не одну сеть, а все 2^N возможных, но так, что каждый вес в матрице весов последнего слоя во всех сетях, в которые он попадает, одинаков. - Биологические обоснования (аналогии с мозгом хоть и не кажутся достаточно матанообразными для статистиков, постоянно генерируют крутые идеи в NN-науке). Хинтон чуть ли не на каждой конференции долго распинается по этой теме, рассказывать долго, предлагаю гуглить ютуб.
- Жизнь такая штука, что несмотря на (1) этот метод круто работает не только в последнем слое, не только в полносвязном и не только с вероятностью 0.5. Потому, что заставляет нейроны (они же встроенные в сеть классификаторы) стараться не зависеть друг от друга или зависеть с избыточностью: ведь каждая зависимость может внезапно выключиться.
+5
О да!)
Про дропаут, надеюсь, будет во второй части немного, но интересующиеся могут сразу заглянуть в статью Бланделла — там итоговая сеть как раз сравнивается с обычной-плюс-дропаут.
Про дропаут, надеюсь, будет во второй части немного, но интересующиеся могут сразу заглянуть в статью Бланделла — там итоговая сеть как раз сравнивается с обычной-плюс-дропаут.
+2
Я на это всё обычно немножко с другой стороны смотрел. Есть некоторая зависимость
Где Y, X и W0..Wn — все являются случайными переменными. Классическая регрессия позволяет нам посчитать наиболее вероятное значение параметров W0...Wn, т.е. по сути представляет собой MLE. А вот чтобы из набора единичных параметров получить набор распределений этих параметров, достаточно всего лишь ресэмплировать наши данные нужно количество раз. Т.е. по сути вместо одной регрессии на всём нашем сэмпле мы строим, скажем, 100 регрессий на случайных 90% наших данных. 100 регрессий дают 100 значений каждого параметра, по которым уже вполне можно оценить их распределение. При этом не нужно ни проходить по всем возможным значениям параметров (как в вашем первом подходе), ни выводить аналитическую формулу (как в вашем втором примере… хотя формулы и хороши :)).
y = w0 + w1x1 + ... wnxn
, которую мы хотим найти. Но, как учил дедушка Лаплас*, точные зависимости мы узнать не можем, поэтому должны работать с вероятностями. Тогда наше уравнение превращается в уравнение со случайными переменными: Y = W0 + W1X1 + ... + WnXn
Где Y, X и W0..Wn — все являются случайными переменными. Классическая регрессия позволяет нам посчитать наиболее вероятное значение параметров W0...Wn, т.е. по сути представляет собой MLE. А вот чтобы из набора единичных параметров получить набор распределений этих параметров, достаточно всего лишь ресэмплировать наши данные нужно количество раз. Т.е. по сути вместо одной регрессии на всём нашем сэмпле мы строим, скажем, 100 регрессий на случайных 90% наших данных. 100 регрессий дают 100 значений каждого параметра, по которым уже вполне можно оценить их распределение. При этом не нужно ни проходить по всем возможным значениям параметров (как в вашем первом подходе), ни выводить аналитическую формулу (как в вашем втором примере… хотя формулы и хороши :)).
+1
Забыл про Лапласа. В своём замечательном эссе Пьер-Симон очень наглядно показывает, почему точные параметры вселенной нам недоступны, так что не стоит и пытаться. Зато статистическое описание мира позволяет вполне неплохо справляться с этой неопределённостью, а не винить в чуме комету и не устраивать охоту на ведьм.
+2
Все верно, только ваша модель будет ансамблем из ста моделей и если базовыми моделями будут нейронные сети, вы 100 штук будете до второго пришествия обучать. Поэтому хочется сделать такой ансамбль более хитрым методом и потратить не 100х времени, а 2х, как для dropout, но только получить не 2^N сетей с общими весами, а "бесконечное" число сетей, выраженное в распределениях весов в сети вместо самих весов. Тогда можно во время теста прогонять одну и ту же сеть 100 раз, каждый раз семплируя ее параметры из их распределений и получить то же, что вы предлагаете, но потратив в 50 раз меньше времени на обучение ансамбля. Как конкретно так обучать — видимо, будет в следующей статье, я, честно говоря, пока еще не до конца впитал оригинал и уверен, что вольный перевод rocknrollnerd мне поможет с этим.
+1
UPD: Ну, собственно, даже понятно в общих чертах как: вместо весов вы говорите, что каждый вес сэмплится из N(m, s) и теперь у вас вдвое больше параметров (по два на каждый вес), а потом с помощью матана доказываете, что так тоже можно использовать backpropagation с минорными изменениями.
Остается только непонятным, что в таких моделях с коадаптацией "весов" и не остается ли дропаут полезной техникой?
Остается только непонятным, что в таких моделях с коадаптацией "весов" и не остается ли дропаут полезной техникой?
+1
Так вопрос именно в том, как получить рапределение параметров N(m, s), и один из самых простых способов — это ресэмплирование (при этом необязательно делать 100 сэмплов из 99%, можно и 10 сэмплов из 10% каждый, т.е разменять качество замеров на их количество при фиксированном количестве операций). Естественно, тут мы перекладываем головную боль с себя на компьютер — для той же линейной регрессии распределение параметров прекрасно выражается аналитически, но понять эти формулы без веществ продвинутого курса линейной алгебры и матанализа практически невозможно.
В общем и целом, стократное сэпмлирование — это вполне приемлимо и гораздо лучше 2560000 вычислений, вызванных перебором. А в целом ускорение обучения — это ооочень большая тема, и я бы её начал скорее с конкретной архитектуры сети ти с конкретных задач, чем с вариационных методов или обратного распространения ошибки.
В общем и целом, стократное сэпмлирование — это вполне приемлимо и гораздо лучше 2560000 вычислений, вызванных перебором. А в целом ускорение обучения — это ооочень большая тема, и я бы её начал скорее с конкретной архитектуры сети ти с конкретных задач, чем с вариационных методов или обратного распространения ошибки.
+1
Может, мы о разном говорим, но распределение N(m, s) получается методом градиентного спуска по параметрам (m, s).
После обучения у вас получается не много MLE-сетей, а одна байесовская сеть, которая при каждом прогоне выдает сэмпл параметров (по сути, ту же MLE-сеть). Разница только в том, что метод с обучением классического ансамбля довольно эвристический в надежде что у базовых моделей ошибки противоположные, а тут ансамбль получается как бы выдающий сэмплы согласно уверенности в данных. Концептуально, одно и то же, но более математично: те же N сэмплов, только согласно выученному распределению, а не воле божьей.
Главная разница — это как раз тренировка. 2560000 регрессий — это просто демонстрация честного байеса для регрессии, в статье вместо метода "в лоб" используется backpropagation through posterior parameters, так что ли это называть.
Так же как вы не оптимизируете сеть методом случайного поиска в пространстве векторов параметров, а методом градиентного поиска, так и в оригинальной статье, они байесовский подход реализовали не построением модели для всех возможных комбинаций параметров и интеграцией, как тут автор для примера показал, а оптимизацей градиентным спуском.
Я очень вот сейчас надеюсь, что я понял все правильно, а не чушь тут горожу :)
После обучения у вас получается не много MLE-сетей, а одна байесовская сеть, которая при каждом прогоне выдает сэмпл параметров (по сути, ту же MLE-сеть). Разница только в том, что метод с обучением классического ансамбля довольно эвристический в надежде что у базовых моделей ошибки противоположные, а тут ансамбль получается как бы выдающий сэмплы согласно уверенности в данных. Концептуально, одно и то же, но более математично: те же N сэмплов, только согласно выученному распределению, а не воле божьей.
Главная разница — это как раз тренировка. 2560000 регрессий — это просто демонстрация честного байеса для регрессии, в статье вместо метода "в лоб" используется backpropagation through posterior parameters, так что ли это называть.
Так же как вы не оптимизируете сеть методом случайного поиска в пространстве векторов параметров, а методом градиентного поиска, так и в оригинальной статье, они байесовский подход реализовали не построением модели для всех возможных комбинаций параметров и интеграцией, как тут автор для примера показал, а оптимизацей градиентным спуском.
Я очень вот сейчас надеюсь, что я понял все правильно, а не чушь тут горожу :)
+1
Ах, вот оно в чём дело. Просто, оригинальную статью я ещё не читал, и о том, что мы ищем параметры распределения через backpropagation и как можно быстрее, пока ещё не знаю. Поэтому меня и смутило, что в статье описан полный перебор и вслед за ним сразу аналитика с кучей допущений, а простое сэмплирование, которое гораздо быстрее перебора, но гораздо проще аналитики, прошло как-то мимо.
В общем, давайте я тоже прочитаю статью, а потом уже побеседуем более подробно, ибо просится много комментариев, но без контекста, которые уже есть у вас, но ещё нет у меня, разговор вряд ли получится осмысленным.
В общем, давайте я тоже прочитаю статью, а потом уже побеседуем более подробно, ибо просится много комментариев, но без контекста, которые уже есть у вас, но ещё нет у меня, разговор вряд ли получится осмысленным.
+1
Я пробежался по обеим статьям и теперь готов ответить. Сразу извиняюсь, если буду "доколёбываться до мышей", но вопрос тонкий и хотелось бы убрать все неточности.
"Байесовская сеть" — это устойчивое выражение, означающее направленную вероятностную графическую модель. Возможно, описанные в статьях сети можно сформулировать и так, но вроде нигде это не делается. Дальше в этом комментарии я буду полагать, что вы имели ввиду нейронную сеть с весами, описанными распределением.
Честно говоря, не нашёл такой информации ни в той, ни в другой статье. В моём понимании при прогоне данных через сеть на выходе мы получаем не набор сэмплов, а конкретное распределение, описывающее степень уверенности в каждом ответе. Это как с логистической регрессией: на выходе у нас не просто 1 или 0, а вероятность P(1), а вот что с этой вероятностью делать — это уже вопрос к пользователю (например, банк может быть заинтересован в выдаче кредита человеку, для которого вероятность вернуть кредит значительно меньше 0.5).
Как раз если брать классическое ресэмплирование, то у него очень даже хорошее математическое обоснование и минимум допущений. В общем-то, сэмплирование как раз и используется в описанном методе для минимизации разницы между распределениями P и Q (см. cекцию "Unbiased Monte Carlo gradients" во второй работе).
Вот тут не понял, что есть байесовский подход? Байесовский подход к статистике (в противоположность частотному) предполагает некоторую априорную веру в параметры распределения, однако все описанные методы вроде как опираются исключительно на частоту данных.
После обучения у вас получается не много MLE-сетей, а одна байесовская сеть
"Байесовская сеть" — это устойчивое выражение, означающее направленную вероятностную графическую модель. Возможно, описанные в статьях сети можно сформулировать и так, но вроде нигде это не делается. Дальше в этом комментарии я буду полагать, что вы имели ввиду нейронную сеть с весами, описанными распределением.
которая при каждом прогоне выдает сэмпл параметров (по сути, ту же MLE-сеть).
Честно говоря, не нашёл такой информации ни в той, ни в другой статье. В моём понимании при прогоне данных через сеть на выходе мы получаем не набор сэмплов, а конкретное распределение, описывающее степень уверенности в каждом ответе. Это как с логистической регрессией: на выходе у нас не просто 1 или 0, а вероятность P(1), а вот что с этой вероятностью делать — это уже вопрос к пользователю (например, банк может быть заинтересован в выдаче кредита человеку, для которого вероятность вернуть кредит значительно меньше 0.5).
Разница только в том, что метод с обучением классического ансамбля довольно эвристический в надежде что у базовых моделей ошибки противоположные, а тут ансамбль получается как бы выдающий сэмплы согласно уверенности в данных.
Как раз если брать классическое ресэмплирование, то у него очень даже хорошее математическое обоснование и минимум допущений. В общем-то, сэмплирование как раз и используется в описанном методе для минимизации разницы между распределениями P и Q (см. cекцию "Unbiased Monte Carlo gradients" во второй работе).
они байесовский подход реализовали не построением модели для всех возможных комбинаций параметров [...]
Вот тут не понял, что есть байесовский подход? Байесовский подход к статистике (в противоположность частотному) предполагает некоторую априорную веру в параметры распределения, однако все описанные методы вроде как опираются исключительно на частоту данных.
+2
В моём понимании...
Вы все правильно понимаете, но я не об этом говорил. BNN — это не feed-forward сеть, через нее нельзя прогнать данные. Сначала мы из модели BNN семплируем много обычных NN согласно распределениям параметров, а потом прогоняем данные через эти обычные NN и получаем обычные распределения по классам или на что мы там учились. Получается тот же ансамбль, только базовые модели — это семплы из BNN, а не просто модели, параллельно обученные на разных подмножествах данных в наивной надежде, что ошибки при их усреднении "сократятся", а не усилятся.
Вот тут не понял, что есть байесовский подход?
Я имел ввиду именно то, что вы сказали. Автор этого вольного перевода пошел в лоб согласно теореме Баеса для получения posterior на параметры интегрировать по всему пространству параметров (считать 100500 регрессий). А в оригинале они приближают этот posterior вариационным методом и оптимизируют некую функцию градиентным спуском.
+1
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) байесовские сети вообще связаны друг с другом весьма апосредованно.
+1
Да почему же, вроде обычный belief propagation здесь должен сработать на ура.
Уууу, ну вы загнули, вы хотите BNN трактовать, как графическую модель и считать распределение выходов given input, я правильно понял? Да вы знаете толк :)
ЦПТ работает при числе сэмплов, стремящемся к бесконечности. Ни разу не видел, чтоб был у кого-то ансамбль больше, чем из десятка сетей, а обычно две-три-четыре, что почти наверное является слишком грубой аппроксимацией ЦПТ. Так что это таки надежда.
Ну да, вы меня поймали, я не очень успешно оперирую терминологией, особенно на Русском. Под Байесовыми сетями я, конечно, имел ввиду BNN, а не графические модели, а под Байесовским методом я имел ввиду подмену параметров модели на их распределения и использование posterior из формулы Байеса для сэмплирования этих параметров.
Мне кажется нормальным в комментариях оперировать терминами в контексте статьи без уточнения. Тем более, статьи на такую тему :)
+1
Уууу, ну вы загнули, вы хотите BNN трактовать, как графическую модель и считать распределение выходов given input, я правильно понял? Да вы знаете толк :)
В общем и целом, нейронные сети довольно просто обобщаются до байесовских или марковских, нужно только проверить и причесать всю математику в них. Правда, судя по всему вы всё-таки правы и конкретно в этих работах действительно сэмплируются параметры.
ЦПТ работает при числе сэмплов, стремящемся к бесконечности. Ни разу не видел, чтоб был у кого-то ансамбль больше, чем из десятка сетей, а обычно две-три-четыре, что почти наверное является слишком грубой аппроксимацией ЦПТ. Так что это таки надежда.
ЦПТ даёт теоретическое обоснование, на практике же есть 10-fold cross validation, которая прекрасно работает на практике, хотя и использует всего 10 сэмплов.
+1
нейронные сети довольно просто обобщаются до байесовских или марковских
Теорию можно сколько угодно обобщать, но считать машина вывод в графической модели будет до второго пришествия. Это просто непрактично.
Правда, судя по всему вы всё-таки правы и конкретно в этих работах действительно сэмплируются параметры.
Конкретно во второй статье в экспериментах они, похоже, вообще один сэмпл берут. Я даже спросил, и похоже там суть не в качестве, которое получается, а в том, что сэмплированные модели качественно другие выходят, чем сети, обученные обычным backprop.
10-fold cross validation
Я раньше с деревяшками всегда 200-fold использовал, это считалось стандартом у нас :)
+1
Теорию можно сколько угодно обобщать, но считать машина вывод в графической модели будет до второго пришествия. Это просто непрактично.
У вас какое-то негативное представление о PGM :) Вероятностные сети могут быть очень разными, но в обученной байесовской сети, особенно если она дискретная, вывод делается за линейное время и количество операций чуть большее, чем в стандартной feedforward нейронной сети. С неприрывными переменным всё немного сложней, там нужно, чтобы априорное и апостериорное распределения были сопряжёнными, чтобы апостериорную вероятность можно было считать аналитически, а это не всегда практично. Но и тут есть куча обходных путей, начиная с сэмплирования и заканчивая тем же вариационным Байесом. Так или иначе, это вопросы к методу, вычислительно в большинстве практических сетей ничего тяжёлого нет.
+1
Наверное, вы лучше меня разбираетесь в этом, не могу спорить, но мне всегда казалось, что вывод в графических моделях подразумевает явное построение совместного распределения всех нужных переменных из этой графической модели, что дает многомиллиономерный такой паралеллепипед даже в случае дискретных распределений величин.
Возможно, я просто не разбираюсь достаточно хорошо в теме графических моделей.
Возможно, я просто не разбираюсь достаточно хорошо в теме графических моделей.
+1
Как раз построения полной совместной вероятности все пытаются избежать. Я как-то считал, что таблица полной вероятности для RBM с какими-то шуточными 1000 видимыми и 100 скрытыми бинарными узлами, имеет размер примерно на 5 порядков больше, чем количество атомов во вселенной :) А вот как раз факторизация на графическую модель и параметризация через лог-линейные модели (те же веса) позволяет вполне спокойно с этим работать.
+1
Правильно ли я понимаю, что на таких сетях какого-то дельного результата так и не смогли показать? Я пару лет назад что-то пробовал сделать на них, но получилось неубедительно (если я правильно помню, брал реализацию из Accord).
Из тех статей что я читал тоже получалось, что какого-то качественно нового результата получить не удалось.
Но оно, конечно, офигенно красиво с точки зрения математики, это я не спорю:)
Сам долго впечетлялся.
Из тех статей что я читал тоже получалось, что какого-то качественно нового результата получить не удалось.
Но оно, конечно, офигенно красиво с точки зрения математики, это я не спорю:)
Сам долго впечетлялся.
-1
Там в самом начале две ссылки — вообще идея написать пост была про эти две статьи, но пришлось немного разбить его, потому что вводная в Байеса слегка затянулась) Вторая часть будет про сети, с примерами, шахматами и поэтессами.
Если вкратце, то получилось много чего, особенно за последний год — вот небольшое ревью на тему NIPS 2015, и там можно кликать по всему, где есть слово "variational")
Если вкратце, то получилось много чего, особенно за последний год — вот небольшое ревью на тему NIPS 2015, и там можно кликать по всему, где есть слово "variational")
+3
А круто получается, что если модель не подвержена переобучению (given good data), то можно обучить супербольшую модель с соответствующим улучшением качества на тесте, а потом занулить 95% весов, как они в статье сделали.
+1
Философский диспут.
Некорректная метафора!
Корректная метафора.
У вас есть три молотка.
Если вы разберете все три молотка — вы можете собрать один молоток, у которого хороший наболдашник, удобная ручка и титановый гвоздь.
В ML у нас есть процедура "усреднения", которая недоступна в физическом мире… Вот и все отличие.
И вообще говоря, это не интуитивный вопрос: почему ансамбли вообще работают? В реальной жизни вещи редко ведут себя таким образом: если у вас есть десять плохих молотков, гвоздь не станет забиваться лучше от того, что вы будете использовать их по очереди.
Некорректная метафора!
Корректная метафора.
У вас есть три молотка.
- На одном молотке хороший «наболдашник», но гнилая ручка и ржавый гвоздь, соединяющий «наболдашник» и ручку.
- На втором молотке побитый «наболдашник» и гнилая ручка, но классный титановый гвоздь.
- На третьем молотке у вас хорошая, крепкая, негнилая ручка, но ржавый гвоздь и плохой «наболдашник».
Если вы разберете все три молотка — вы можете собрать один молоток, у которого хороший наболдашник, удобная ручка и титановый гвоздь.
В ML у нас есть процедура "усреднения", которая недоступна в физическом мире… Вот и все отличие.
+2
То, что вы описали, не очень похоже на усреднение. Даже если правильно переставить делали, кроме одного хорошего молотка получится два плохих. Чтобы выбрать из трёх молотков хороший, надо обладать знанием, которое модели недоступно.
0
Если у вас "наболдашник" имеет три степени помятости: "совсем помятый", "немножко помятый" и "идеальный"; то среднее арифметическое будет "немножко помятый".
Если ручка имеет три степени "гнилости": совсем сгнила, немножко сгнила, идеально новая; то среднее арифметическое будет "немножко сгнила"
Аналогичные рассуждения с гвоздем.
Если бы мы умели усреднять, то получили бы молоток со слегка подгнившей ручкой и немножко помятым наболдашником. Вполне сносный инструмент, я считаю.
Если ручка имеет три степени "гнилости": совсем сгнила, немножко сгнила, идеально новая; то среднее арифметическое будет "немножко сгнила"
Аналогичные рассуждения с гвоздем.
Если бы мы умели усреднять, то получили бы молоток со слегка подгнившей ручкой и немножко помятым наболдашником. Вполне сносный инструмент, я считаю.
0
Ансамбли хорошо работают не просто потому, что у них внутри много моделей, а потому что у них внутри много разных моделей. Например, в случайном лесе отдельные деревья специально выращивают на разных подмножествах независимых переменных.
Чем более кардинально отличаются модели в ансамбле, тем больше пользы от усреднения их результатов. У очень разных моделей ошибки скорее всего в разных местах, поэтому с добавлением новых моделей сигнал растёт пропорционально количеству моделей, а шум — пропорционально корню их количества, отсюда и выигрыш.
А если модели примерно одинаковые, то и ошибки у них тоже примерно одинаковые и сигнал с шумом растут вместе.
Чем более кардинально отличаются модели в ансамбле, тем больше пользы от усреднения их результатов. У очень разных моделей ошибки скорее всего в разных местах, поэтому с добавлением новых моделей сигнал растёт пропорционально количеству моделей, а шум — пропорционально корню их количества, отсюда и выигрыш.
А если модели примерно одинаковые, то и ошибки у них тоже примерно одинаковые и сигнал с шумом растут вместе.
0
Фишка Байесового фреймворка как раз в том, что модели получатся более похожие в тех частях входного пространства, где модель очень уверена в своих знаниях, в тех же частях пространства входов, где модель уверена меньше, дисперсия получившихся распределений весов сильно выше, что скажется на большем разнообразии моделей при их сэмплировании из Байесовой сети.
Короче, чем более "сложный" для сети вход, тем большее разнообразие в базовых моделях генерируемого сэмплами ансамбля.
Короче, чем более "сложный" для сети вход, тем большее разнообразие в базовых моделях генерируемого сэмплами ансамбля.
+2
Всё равно мало разнообразия. Тут все модели по сути одинаковые — одна и та же линейная регрессия, отличие только в коэффициентах. Можно посчитать корреляцию между коэффициентами и она наверняка получится весьма сильной, то есть предсказывают они почти одно и то же почти одинаковым способом.
А от ансамблей больше всего пользы, когда модели в ансамбле принципиально разные — регрессия, деревья, ближайший сосед, адабуст, экспертная оценка, больцмановские машины и так далее. Каждая сходит с ума по-своему, но на среднее значение заскоки отдельных моделей мало влияют.
А от ансамблей больше всего пользы, когда модели в ансамбле принципиально разные — регрессия, деревья, ближайший сосед, адабуст, экспертная оценка, больцмановские машины и так далее. Каждая сходит с ума по-своему, но на среднее значение заскоки отдельных моделей мало влияют.
0
Это вы просто почему-то думаете, что нейронные сети с одинаковой топологией но разными параметрами — недостаточно разные. А они очень разные. Прямо вот совсем. Если каждый параметр распределен как N(0, s_i), то выбрав два сэмпла, у вас на руках два, предположим, стомиллионномерных вектора. Основная масса координат этих векторов будет в (-s_i, s_i), так что если в вашей паре параметры будут отличаться на s_i / 4, что очень вероятно, если выбрать достаточно много сэмплов, то это уже отличие на 1/8 основной части "мира" параметров.
Как-то я, наверное, неформально описал, но основная идея, что если кажется, что сети одинаковые так как параметры отличаются на небольшие значения, то это иллюзия, модели отличаются очень сильно.
Да вы хоть посмотрите на людей: насколько все разные, а ДНК отличается на какие-то мизерные доли процента. А тут модели вполне могут на 15% только так отличаться.
Как-то я, наверное, неформально описал, но основная идея, что если кажется, что сети одинаковые так как параметры отличаются на небольшие значения, то это иллюзия, модели отличаются очень сильно.
Да вы хоть посмотрите на людей: насколько все разные, а ДНК отличается на какие-то мизерные доли процента. А тут модели вполне могут на 15% только так отличаться.
0
Обязательно пишите ещё. Тема классная, похоже, многие мечтают совместить достижения классической теории вероятности и нейросети. И даже жалко становится, что нейросети работают так хорошо сами по себе (особенно, с dropout и batch normalization), что теорией вероятности их улучшить пока толком не получается…
В этом плане мне очень понравилась статья http://mlg.eng.cam.ac.uk/yarin/blog_3d801aa532c1ce.html, по-моему, она могла бы стать частями 3, 4 и 5 вашего повествования.
Классическая теория вероятности позволяет оценить степень уверенности в знании, возможно, это помогло бы нейросетям меньше страдать от переобучения и ещё быстрее и ещё качественнее обучаться на смеси из небольшого количества классифицированных (supervised) и большого количества неклассифицированных (unsupervised) данных.
В этом плане мне очень понравилась статья http://mlg.eng.cam.ac.uk/yarin/blog_3d801aa532c1ce.html, по-моему, она могла бы стать частями 3, 4 и 5 вашего повествования.
Классическая теория вероятности позволяет оценить степень уверенности в знании, возможно, это помогло бы нейросетям меньше страдать от переобучения и ещё быстрее и ещё качественнее обучаться на смеси из небольшого количества классифицированных (supervised) и большого количества неклассифицированных (unsupervised) данных.
0
Про ансамбли есть хорошая история о Фрэнсисе Галтоне и толпу зевак с ярмарки, которые пытались угадать вес мяса с разделанного быка — медиана по восьми сотням предположений отклонялась от реального веса на 0,8%.
+3
В Ваших формулах я заблудился. По порядку сверху вниз. Если Вы максимизируете правдоподобие, то лучше явно указать, что это функция от вектора параметров распределения. Обычно же она записывается так:
. Ваши обозначения заставили меня засомневаться в сохранности метода максимального правдоподобия в нейросети внутри моей черепушки. Странные они. В формуле слева почему-то индексируются параметры распределения, а справа с одним индексом и точки выборки, и параметры распределения. Я с просонья долго не мог понять, что Вы имели ввиду. И сейчас не понял, разве что ошибка обозначений. Неплохо также указать, что argmax берется по множеству допустимых параметров распределения, которые фиксируются в распределении, мне это показалось не очевидным из изложенного. А ведь это, если я правильно понял, основное отличие классики от далее излагаемого. Дальше то же, индексация непонятна.
Потом Вы показываете, что в случае наличия аддитивного гауссового шума (зафиксировав дисперсию, но об этом позже) метод максимального правдоподобия сводится к методу наименьших квадратов. И после этого применяете ММП к тестовой выборке! Это после критики классической регрессии в самом начале статьи! Да, последовательно, по одной точке за раз, итеративно уточняя параметры распределения, рассматривая их как случайные величины и вводя дополнительные предположения относительно характера их распределения. То есть, на мой скромный взгляд, не очень четко показана сама фишка описываемого метода. Как такой подход избавляет от проблемы переобучения? Видимо, следствие попытки не залезать в математические премудрости.
Отдельно относительно заявления о невосприимчивости байесовского обучения к проблеме переобучения. Чем подкреплен этот вывод? В случае с минимизацией квадратичного функционала типа того, что используется при обучении нейросетей, проблема переобучения обычно возникает при многократном натаскивании нейросети на одних и тех же данных. Статистически это в определенной мере равнозначно утверждению, что шум в них имеет минимальную дисперсию. Вы в своем примере постулировали заданный уровень дисперсии, ровно как и вид распределения шума (что, кстати, обычно приводится как недостаток параметрических статистических методов байесовского типа), после чего указываете на небольшой разброс правдоподобных кривых. Ясен пень он оказывается небольшим.
И всё-таки за статью спасибо, заставила заинтересоваться вопросом. Вероятно, я в чем-то неправ. Поправьте.
Потом Вы показываете, что в случае наличия аддитивного гауссового шума (зафиксировав дисперсию, но об этом позже) метод максимального правдоподобия сводится к методу наименьших квадратов. И после этого применяете ММП к тестовой выборке! Это после критики классической регрессии в самом начале статьи! Да, последовательно, по одной точке за раз, итеративно уточняя параметры распределения, рассматривая их как случайные величины и вводя дополнительные предположения относительно характера их распределения. То есть, на мой скромный взгляд, не очень четко показана сама фишка описываемого метода. Как такой подход избавляет от проблемы переобучения? Видимо, следствие попытки не залезать в математические премудрости.
Отдельно относительно заявления о невосприимчивости байесовского обучения к проблеме переобучения. Чем подкреплен этот вывод? В случае с минимизацией квадратичного функционала типа того, что используется при обучении нейросетей, проблема переобучения обычно возникает при многократном натаскивании нейросети на одних и тех же данных. Статистически это в определенной мере равнозначно утверждению, что шум в них имеет минимальную дисперсию. Вы в своем примере постулировали заданный уровень дисперсии, ровно как и вид распределения шума (что, кстати, обычно приводится как недостаток параметрических статистических методов байесовского типа), после чего указываете на небольшой разброс правдоподобных кривых. Ясен пень он оказывается небольшим.
И всё-таки за статью спасибо, заставила заинтересоваться вопросом. Вероятно, я в чем-то неправ. Поправьте.
+1
Привет) Правдоподобие все-таки записывается как-то не так, кажется (у вас оно выглядит как совместное распределение). Индекс i у параметров распределения и у икс действительно один и тот же — тут я просто последовал картинке, которая была нарисована перед этим (с лежащим на боку гауссианом): мы как бы считаем, что у каждой точки "свое" среднее значение и "свое" стандартное отклонение. Второе мы потом фиксируем, так что индекс тут, наверное, действительно может быть обманчив, но первое вроде бы индексировано правильно — на каждую i-тую точку у нас есть i-тое мю.
Следующий абзац я немного не понял. У меня тут нигде нет тестовой выборки (кроме слайда про ансамбли) — везде в остальных местах одни и те же десять точек, а "адекватность" регрессии предлагается оценить на глазок.
По поводу переобучения вот да, возможно, стоило рассмотреть подробнее. Тут дело не столько в дисперсии, сколько в том, сколько у нас есть данных и насколько сложная у нас модель:
Следующий абзац я немного не понял. У меня тут нигде нет тестовой выборки (кроме слайда про ансамбли) — везде в остальных местах одни и те же десять точек, а "адекватность" регрессии предлагается оценить на глазок.
По поводу переобучения вот да, возможно, стоило рассмотреть подробнее. Тут дело не столько в дисперсии, сколько в том, сколько у нас есть данных и насколько сложная у нас модель:
- если данных мало, они могут быть нерепрезентативны (выборка из трех бросков монетки может содержать три орла). "Сложная модель" (полином с большой степенью) при этом подгонится под них идеально, приняв случайные отклонения за закономерность (и шум для этого необязательно должен быть очень большим).
- классический выход такой: либо использовать больше данных (взять не десять точек из датасета, а сотню), либо если никак, то взять модель попроще.
- в байесовском случае у нас нет такой проблемы, потому что у нас есть prior — мы с самого начала "верим" одинаково во все возможные кривые, и если данных "мало", то это сдвигает нашу уверенность незначительно (это верно и в случае регрессии с регуляризацией тоже). Более того, мы можем выбирать модель какой угодно сложности, потому что вероятность каждой кривой тем меньше, чем больше у нее параметров (а вот это уже работает только для full Bayes-решения, вроде того, что мы рассмотрели). Я про это впервые прочитал у Хинтона под заголовком "overfitting: a frequenist illusion?", и может быть, вот эта лекция принесет немного больше ясности.
0
Так, давайте разбираться. Правдоподобие — это функция параметров распределения, показывающая (нестрого) степень вероятности того, что выборка отвечает именно этому распределению именно с этими параметрами. Эта функция определяется относительно имеющейся выборки. В приведенной мной формуле p — плотность вероятности параметрического распределения. Корректней было бы написать тету как нижний индекс, но и такая запись допускается. Имейте ввиду, что в википедии, на которую Вы ссылаетесь, приводится нестрогое определение функции правдоподобия, в вашем случае неверное — Вы используете непрерывные случайные величины, для которых вероятность принятия любого конкретного значения равна нулю. Далее, если Вы приписываете каждой точке свои мат. ожидание и дисперсию — то они, очевидно, не принадлежат одному и тому же распределению и говорить о правдоподобии не имеет смысла, поскольку эта величина характеризует распределение относительно выборки. Именно поэтому формула и поставила меня в тупик: по какому множеству берется аргмин, если вроде как свободные параметры в формуле проиндексированны?
Вы ведь строите регрессионную модель по ЭТИМ девяти точкам? Значит это и есть выборка.
Насчет сложности модели — здесь несколько интересней. "Сложная" модель обычно имеет большое количество реализаций, которые в заданной эпсилон-окрестности (в рамках модели сигнал-шум она как раз связана с дисперсией) приближают небольшие наборы данных. Причем обычно такие модели включают в себя как подмножество более простые, типа как полиномы высоких степеней включают полиномы низших степеней. Проблема переобучения тогда заключается в искусственном операционном занижении адекватной окрестности, частный случай — требование полного попадания в точки выборки. Проблема выбора подходящей окрестности — это да, проблема, решаемая обычно примерно и эвристичеки, в частности, оценкой качества на тестовой выборке.
Но с практической точки зрения Вам ведь в конечном счете необходимо остановиться на одной-единственной модели — и Вы это делаете, выбирая реализацию с максимальным правдоподобием. Ровно также, как это делается в "классическом" случае. Так что в этом аспекте я принципиальной разницы не уловил, и в том и в другом случае Вы имеете дело со сжатием к множеству адекватных выборке моделей и к выбору из него по какому-либо критерию единственного решения.
Вы ведь строите регрессионную модель по ЭТИМ девяти точкам? Значит это и есть выборка.
Насчет сложности модели — здесь несколько интересней. "Сложная" модель обычно имеет большое количество реализаций, которые в заданной эпсилон-окрестности (в рамках модели сигнал-шум она как раз связана с дисперсией) приближают небольшие наборы данных. Причем обычно такие модели включают в себя как подмножество более простые, типа как полиномы высоких степеней включают полиномы низших степеней. Проблема переобучения тогда заключается в искусственном операционном занижении адекватной окрестности, частный случай — требование полного попадания в точки выборки. Проблема выбора подходящей окрестности — это да, проблема, решаемая обычно примерно и эвристичеки, в частности, оценкой качества на тестовой выборке.
Но с практической точки зрения Вам ведь в конечном счете необходимо остановиться на одной-единственной модели — и Вы это делаете, выбирая реализацию с максимальным правдоподобием. Ровно также, как это делается в "классическом" случае. Так что в этом аспекте я принципиальной разницы не уловил, и в том и в другом случае Вы имеете дело со сжатием к множеству адекватных выборке моделей и к выбору из него по какому-либо критерию единственного решения.
+1
Может кто нибудь еще объяснит про Bayesian optimization?
https://en.wikipedia.org/wiki/Bayesian_optimization
https://en.wikipedia.org/wiki/Bayesian_optimization
+1
Огромное спасибо за статью, стало гораздо понятнее. Единственное, что ещё хотелось бы — можно ли картинки положить на хабра сторадж? А то много чего не видно, и непонятно, как заставить это всё работать на рабочем компе.
0
Спасибо! Пост готовился по вот этой замечательной технологии, почему все картинки заливались автоматически. И при всем горячем одобрении к хабрастораджу, пусть они лучше поддержку MathJax в посты добавят, не так уж это и сложно ведь)
+1
Байесовская нейронная сеть при очень большом количестве элементов не будет ничем отличаться от «классической», с весами, верно?
0
Э, кажется нет, будет) А почему такие мысли?
0
Соображения не подкреплены формулами, только рассуждения по аналогии.
> веса которой представлены не числами, а демоническими облаками вероятности
Микромир с вероятностными законами квантовой физики на очень большом количестве частиц (10^20, например, по порядку) превращается в «наш» макромир, вполне строгий и логичный.
Если для электрона туннельный эффект в порядке вещей, то для чайника вероятность оказаться за стенкой равна нулю.
«Чудо-эффекты» вероятности «гасятся» большим количеством элементов в макросистемах.
Тот же эффект будет наблюдаться в байесовских нейронных сетях, м?
> веса которой представлены не числами, а демоническими облаками вероятности
Микромир с вероятностными законами квантовой физики на очень большом количестве частиц (10^20, например, по порядку) превращается в «наш» макромир, вполне строгий и логичный.
Если для электрона туннельный эффект в порядке вещей, то для чайника вероятность оказаться за стенкой равна нулю.
«Чудо-эффекты» вероятности «гасятся» большим количеством элементов в макросистемах.
Тот же эффект будет наблюдаться в байесовских нейронных сетях, м?
0
По стилю изложения: на мой вкус — отлично, читается легко, написано не пошло и по делу.
С нетерпением жду продолжения изысканий, автору спасибо.
С нетерпением жду продолжения изысканий, автору спасибо.
+1
Хороший материал, но не понял, — чему равны априорные распределения P(eta) и P(X)? Можно пояснить? Заранее спасибо!
0
Sign up to leave a comment.
Байесовская нейронная сеть — потому что а почему бы и нет, черт возьми (часть 1)