часть 2
Предположим, условная компания ДомКлик открывает новый филиал в городе Кобылозаводске, и предлагает сервис оценки справедливой рыночной цены квартиры в этом городе.
У дата-сайнтистов ДомКлика имеется обучающая выборка из n квартир в Кобылозаводске, про каждую квартиру номер i известна стоимость ее продажи/покупки y_i и вектор характеристик данной квартиры x_i, которые будут использоваться как факторы линейной регрессии.
Фреквентист просто построит линейную регрессию, которая лучше всего описывает данные.
Фреквентист выберет те веса w, которые максимизируют вероятность наблюдать цены y при заданных факторах X.
Байесианец скажет, что на основании опыта других городов он имеет априорное представление о том, какими могут быть правдоподобные коэффициенты регрессии w.
Если ему нужно будет выбрать из всех регрессий одну, то он выберет ее на основе максимизации апостериорной вероятность наблюдать ее веса факторов, с учетом наблюдаемых данных.
Лучше, однако, рассчитать вероятности каждой регрессии в ансамбле.
Байесианец также может вычислить целое распределение возможных цен на данную квартиру исходя из моделей, имеющихся в его ансамбле. Этим распределением можно будет пользоваться как оценкой неопределенности прогноза модели.
Затем можно вычислить взвешенное среднее цен на данную квартиру по ансамблю регрессий.
Как получить оценки неопределенности предсказания нейронных сетей в задачах регрессии и классификации?
likelihood
prior
posterior
evidence
Задача: вычислить posterior.
Препятствие: проблема обычно состоит в том, что evidence is intractable.
- не вычисляемо
Из лекции David Blei на MLSS 2019
Например: p(z|x) = sin(z), а Q - класс всех многочленов не
выше 3 степени. Тогда мы ищем guide среди функций вида:
ELBO - Evidence lower bound
Expected log-likelihood
Regulariser term
KL-divergence
D. Wingate, T. Weber: https://arxiv.org/pdf/1301.1299.pdf
Основная практическая проблема стохастического вариационного вывода: как добиться того, чтобы дисперсия оценки градиента была не слишком велика?
Идеальный случай: дисперсия градиента убывает с ростом размера мини-батча. Тогда достаточно взять видеокарту с большим количеством видеопамяти, чтобы получить более точную оценку градиента на каждой итерации и лучшую сходимость.
Задача любого автокодировщика - поставить в соответствие входным данным x эмбеддинг z в пространстве низкой размерности
Дважды стохастический вариационный вывод - неоправданно навороченный алгоритм. Зачем было все так усложнять?
Задача похожа на алгоритм EM: поочередно меняем то ϕ, то θ, так, чтобы максимизировать то p(z|x,ϕ) , то p(x'|z,θ).
Имеется серия бросков монеты: x = [0, 1, 0, 0, 0, 0, 1, 0, 1, 1].
Известно, что есть 2 монеты: честная и жульническая, при каждом броске монета в одном из этих двух состояний, эти вектор этих состояний является скрытыми переменными z.
Есть вектор вероятностей замены монеты с честной на жульническую и обратно и есть вероятность выкинуть орла и решку для честной монеты и для жульнической. Это - параметры модели θ.
Алгоритм ищет такие параметры модели θ, при которых достигается максимум вероятности наблюдать x. Каждая итерация i состоит из 2 шагов, E-step и M-step, когда обновляется то состояние скрытой переменной, то параметров модели:
E-step:
M-step:
Из доклада M.Welling на DeepBayes2018
Из доклада M.Welling на DeepBayes2018
Трюк: превращаем randomness во вход нейронки, а по параметрам нормального распределения тогда можно дифференцировать.
Стохастический градиент по параметрам распределения, вычисляемый с помощью reparametrization trick, имеет очень низкую дисперсию, поэтому можно даже не делать minibatch, а брать всего один сэмпл для оценки.
Аналогия с половым размножением - каждая модель
в ансамбле передает половину своих весов потомству с вероятностью p (исходно - 0.5).
Srivastava, Hinton et al. позже показали, что Гауссовский Дропаут с непрерывным шумом работает не хуже и быстрее.
Из доклада Кирилла Неклюдова на DeepBayes2018
Гауссовский дропаут эквивалентен добавлению гауссовских prior'ов на ребра. Дальше используем reparametrization trick, подобный VAE, рассматриваем dropout rate как переменную, по которой можно дифференцировать, а случайный шум забираем с псевдовходов сети.
Снова минимизируем ELBO, снова KL-divergence между guide и prior считается аналитически, а матожидание логарифма постериора нужно вычислять стохастическим Монте-Карловским выводом:
Если ковариация между ячейками ненулевая, то дисперсия градиента не убывает с ростом размера минибатча. Чтобы побороть проблему, делается специальный local reparametrization trick.
Relevance Vector Machines ведут себя примерно как байесовская линейная регрессия с гауссовским prior'ом. То есть они тоже сходятся к kernel ridge regression.
Однако разница в том, что для каждого веса свой коэффициент регуляризации, из-за чего вклад части факторов в итоге обращается в ноль.
Коэффициент регуляризации alpha в Variational Dropout ведет себя аналогично, позволяя делать Automatic Relevance Determination (ARD) части входов или нейронов.
Превосходное изложение доказательства имеется в аппендиксе статьи: