Автор : Techitfast

В ранее отправленном мы подтвердили способ использования tfprobability — интерфейса R для TensorFlow Chance — для создания многоуровневого или частичного объединения модели выживания головастиков. в иноразмерных (и, таким образом, отличающихся количеством обитателей) резервуарах.

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

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

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

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

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

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

Эспрессо, пожалуйста

В отличие от случая с головастиком, на этот раз мы работаем с смоделированными знаниями. Это информация, которую МакЭлрет использует, чтобы представить подход к моделированию различных уклонов; Затем он продолжает и применяет его к одному из самых популярных наборов данных во многих электронных книгах, к просоциальным (или отстраненным, разумно!) шимпанзе. Ибо в настоящее время мы придерживаемся смоделированного знания по двум причинам: во-первых, предметный материал сам по себе достаточно нетривиален; и, во-вторых, мы должны внимательно следить за тем, что делает наш манекен, и достаточно ли его выходные данные близки к результатам, полученным МакЭлритом от Стэна .

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

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

Таким образом, когда мы частично объединяем перехваты, у нас есть один «предшествующий перехват» (фактически ограниченный предыдущим) и набор перехватов, специфичных для кафе, которые могут располагаться вокруг него. Когда мы частично объединяем наклоны, у нас есть «предварительный наклон», отражающий общую взаимосвязь между утренним и дневным ожиданием, и набор наклонов для конкретных кафе, отражающих отношения людей. Познавательно, это означает, что если вы никогда не были в Café Gerbeaud в Будапеште, но были в кафе раньше, вам может понадобиться менее чем неосведомленная мысль о том, как долго вы’ собираешься ждать; это также означает, что для тех, кто обычно пьет эспрессо в своем любимом закусочном кафе по утрам, а теперь заходит туда днем, есть примерное представление о том, сколько времени это займет (в частности, меньше минут, чем в утра).

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

Итак, теперь, когда мы подумали о том, что это такое, давайте посмотрим, как мы будем моделировать эти результаты с помощью tfprobability. Однако сначала нам действительно нужно сгенерировать информацию.

Имитация информации

Мы полностью соблюдаем требования McElreath, чтобы информация генерировалась наилучшим образом.

Взгляните на знания:

Observations: 200 Variables: 3 $ cafe <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3,... $ afternoon <int> 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,... $ wait <dbl> 3.9678929, 3.8571978, 4.7278755, 2.7610133, 4.1194827, 3.54365,...

Приступаем к изготовлению манекена.

Манекен

Как и в предыдущем представлении о многоуровневом моделировании, мы используем tfd_joint_distribution_sequential для наброска модели и Гамильтоновский Монте-Карло для выборки. Обратите внимание на первую часть этой отправки для быстрого напоминания об общем процессе.

Прежде чем мы начнем кодировать модель, давайте быстро настроим загрузку библиотеки наилучшим образом. Важно отметить, что, как и в предыдущей версии, мы должны настроить grasp конструкцию TensorFlow Chance, поскольку мы используем новые параметры, недоступные в текущей модели запуска. То же самое относится и к пакетам R tensorflow и tfprobability: установите соответствующие варианты расширения с github.

Вот определение манекена. Мы пройдем это шаг за шагом прямо сейчас.

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

Для повышения эффективности мы работаем с моделью, которая в качестве альтернативы вводит и выводит компоненты Холецкого:

# rho, the prior correlation matrix between intercepts and slopes

Что это за приора? Как постоянно напоминает нам МакЭлрит, нет ничего более поучительного, чем выборка из априора. Чтобы увидеть, что происходит, мы используем нижнее распределение LKJ, а не распределение Холецкого:

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

Последующее распределение в очереди

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

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

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

В центре манекена, где происходит частичное объединение. Мы собираемся собрать частично объединенные перехваты и склоны для всех кафе. Как мы упоминали выше, пересечения и наклоны не должны быть беспристрастными; они работают вместе. Таким образом, мы должны использовать многомерное регулярное распределение.
Средние значения задаются априорными средними, описанными выше, тогда как ковариационная матрица строится из вышеупомянутых априорных дисперсий и априорной корреляционной матрицы.
Выходные данные Форма здесь задается разнообразием кафе: Нам нужен перехват и уклон для каждого кафе.

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

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

Делаем выкройку с манекена, после чего проверяем шанс бревна.

Нам нужен скалярный логарифмический шанс на члена в пакете, что мы и получаем.

tf.Tensor([-466.1392 -149.92587 -196.51688], form=(3,), dtype=float32)

Работа с цепями

Точная выборка Монте-Карло работает так же, как и в предыдущей версии, за одним исключением. Выборка происходит в доме с неограниченными параметрами, однако в конце мы должны получить допустимые параметры матрицы корреляции rho и допустимые отклонения sigma и sigma_cafe. Преобразование между областями осуществляется с помощью биекторов TFP. К счастью, это не единственная вещь, которую мы должны делать как клиенты; все, что нам нужно указать, — это допустимые биекторы. Для традиционных дистрибутивов внутри модели делать нечего.

Теперь мы устроим гамильтоновский сэмплер Монте-Карло.

Еще раз, мы получим дополнительную диагностику (здесь: размеры шагов и стоимость приема), зарегистрировав подсказку:

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

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

Результаты

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

Сюжеты-подсказки

Насколько эффективно цепочки объединяются?

Начальство! (Два основных параметра rho, проблема Холецкого в корреляционной матрице, должны оставаться установленными на 1 и 0 соответственно.)

Теперь перейдем к абстрактной статистике апостериорных значений параметров.

Параметры

Как и окончательное время, мы показываем апостериорные средние значения и обычные отклонения в дополнение к лучшему апостериорному интервалу плотности (HPDI). Мы добавляем эффективные размеры шаблонов и правильные значения.

# A tibble: 49 x 7 key imply sd decrease higher ess rhat <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> 1 rho_1 1 0 1 1 NaN NaN 2 rho_2 0 0 0 0 NaN NaN 3 rho_3 -0.517 0.176 -0.831 -0.195 42.4 1.01 4 rho_4 0.832 0.103 0.644 1.000 46.5 1.02 5 sigma 0.473 0.0264 0.420 0.523 424. 1.00 6 sigma_cafe_1 0.967 0.163 0.694 1.29 97.9 1.00 7 sigma_cafe_2 0.607 0.129 0.386 0.861 42.3 1.03 8 b -1.14 0.141 -1.43 -0.864 95.1 1.00 9 a 3.66 0.218 3.22 4.07 75.3 1.01 10 a_cafe_1 4.20 0.192 3.83 4.57 83.9 1.01 11 b_cafe_1 -1.13 0.251 -1.63 -0.664 63.6 1.02 12 a_cafe_2 2.17 0.195 1.79 2.54 59.3 1.01 13 b_cafe_2 -0.923 0.260 -1.42 -0.388 46.0 1.01 14 a_cafe_3 4.40 0.195 4.02 4.79 56.7 1.01 15 b_cafe_3 -1.97 0.258 -2.52 -1.51 43.9 1.01 16 a_cafe_4 3.22 0.199 2.80 3.57 58.7 1.02 17 b_cafe_4 -1.20 0.254 -1.70 -0.713 36.3 1.01 18 a_cafe_5 1.86 0.197 1.45 2.20 52.8 1.03 19 b_cafe_5 -0.113 0.263 -0.615 0.390 34.6 1.04 20 a_cafe_6 4.26 0.210 3.87 4.67 43.4 1.02 21 b_cafe_6 -1.30 0.277 -1.80 -0.713 41.4 1.05 22 a_cafe_7 3.61 0.198 3.23 3.98 44.9 1.01 23 b_cafe_7 -1.02 0.263 -1.51 -0.489 37.7 1.03 24 a_cafe_8 3.95 0.189 3.59 4.31 73.1 1.01 25 b_cafe_8 -1.64 0.248 -2.10 -1.13 60.7 1.02 26 a_cafe_9 3.98 0.212 3.57 4.37 76.3 1.03 27 b_cafe_9 -1.29 0.273 -1.83 -0.776 57.8 1.05 28 a_cafe_10 3.60 0.187 3.24 3.96 104. 1.01 29 b_cafe_10 -1.00 0.245 -1.47 -0.512 70.4 1.00 30 a_cafe_11 1.95 0.200 1.56 2.35 55.9 1.03 31 b_cafe_11 -0.449 0.266 -1.00 0.0619 42.5 1.04 32 a_cafe_12 3.84 0.195 3.46 4.22 76.0 1.02 33 b_cafe_12 -1.17 0.259 -1.65 -0.670 62.5 1.03 34 a_cafe_13 3.88 0.201 3.50 4.29 62.2 1.02 35 b_cafe_13 -1.81 0.270 -2.30 -1.29 48.3 1.03 36 a_cafe_14 3.19 0.212 2.82 3.61 65.9 1.07 37 b_cafe_14 -0.961 0.278 -1.49 -0.401 49.9 1.06 38 a_cafe_15 4.46 0.212 4.08 4.91 62.0 1.09 39 b_cafe_15 -2.20 0.290 -2.72 -1.59 47.8 1.11 40 a_cafe_16 3.41 0.193 3.02 3.78 62.7 1.02 41 b_cafe_16 -1.07 0.253 -1.54 -0.567 48.5 1.05 42 a_cafe_17 4.22 0.201 3.82 4.60 58.7 1.01 43 b_cafe_17 -1.24 0.273 -1.74 -0.703 43.8 1.01 44 a_cafe_18 5.77 0.210 5.34 6.18 66.0 1.02 45 b_cafe_18 -1.05 0.284 -1.61 -0.511 49.8 1.02 46 a_cafe_19 3.23 0.203 2.88 3.65 52.7 1.02 47 b_cafe_19 -0.232 0.276 -0.808 0.243 45.2 1.01 48 a_cafe_20 3.74 0.212 3.35 4.21 48.2 1.04 49 b_cafe_20 -1.09 0.281 -1.58 -0.506 36.5 1.05

Итак, что мы имеем? Если вам случится запустить эту «задержку», для строк a_cafe_n соотв. b_cafe_n вы видите приятное чередование белой и малиновой окраски: Для всех кафе предполагаемые наклоны неблагоприятны.

Предполагаемый наклон до (b) равен -1,14, что не слишком далеко от значения, которое мы использовали для выборки: 1.

По общему признанию, rho апостериорные оценки гораздо менее полезны, за исключением того, что вы, возможно, привыкли составлять компоненты Холецкого в уме. Мы вычисляем последующие апостериорные корреляции и их значение:

Значение, которое мы использовали для выборки, было -0,7, поэтому мы видим влияние регуляризации. Если вы спросите, для аналогичного знания Стэн дает оценку -0,5.

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

Усадка

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

Такое же поведение видно и на шкале результатов.

Подведение итогов

К настоящему моменту мы надеемся, что удовлетворили вас возможностями, присущими байесовскому моделированию, а также поделились некоторыми концепциями того, как этого можно достичь с помощью TensorFlow Chance. Как и в случае с каждым DSL, требуется время, чтобы перейти от понимания сложных примеров к разработке собственной одежды. И не только время — это помогает увидеть множество совершенно разных моделей, специализирующихся на совершенно разных задачах и целях.
В этом блоге мы планируем в общих чертах ознакомиться с байесовским моделированием с помощью TFP, выбрав ряд обязанностей и задач, подробно описанных в последующих главах электронной книги МакЭлрита. Спасибо за изучение!

Первоначально опубликовано на https://www.techitfast.net 12 марта 2023 г.