Смешение контекста - это тип сжатия данных алгоритм, в котором следующий- символ прогнозы двух или более статистических моделей объединяются для получения прогноза, который часто бывает более точным, чем любое из отдельных прогнозов. Например, один простой метод (не обязательно лучший) - это усреднить вероятности, присвоенные каждой моделью. Случайный лес - еще один метод: он выводит прогноз, который является режимом прогнозов, выводимых отдельными моделями. Комбинирование моделей - активная область исследований в машинном обучении.
. В сериях PAQ программ сжатия данных используется смешение контекста для присвоения вероятностей отдельным битам ввода.
Предположим, что нам даны две условные вероятности: и , и мы хотим оценить , вероятность событие X при обоих условиях и . Для теории вероятности недостаточно информации, чтобы дать результат. Фактически, можно построить сценарии, в которых результат может быть любым. Но интуитивно мы ожидаем, что результат будет средним из двух.
Проблема важна для сжатия данных. В этом приложении и - это контексты, - это событие, когда следующий бит или символ данных, подлежащих сжатию, имеет конкретное значение, и и - оценки вероятности по двум независимым моделям. Степень сжатия зависит от того, насколько приблизительная вероятность приближается к истинной, но неизвестной вероятности события . Часто контексты и встречаются достаточно часто, чтобы точно оценить и путем подсчета вхождений в каждом контексте, но два контекста либо не встречались вместе часто, либо недостаточно вычислительных ресурсов (времени и памяти) для сбора статистики для объединенного случая.
Например, предположим, что мы сжимаем текстовый файл. Мы хотим предсказать, будет ли следующий символ переводом на строку, учитывая, что предыдущий символ был точкой (context ) и что последний символ перевода строки имел место 72 символа назад (контекст ). Предположим, что перевод строки ранее происходил после 1 из последних 5 периодов ()) и в 5 из последних 10 строки в столбце 72 (). Как следует объединить эти прогнозы?
Два были использованы общие подходы, линейное и логистическое смешивание. При линейном смешивании используется средневзвешенное значение прогнозов, взвешенных по свидетельствам. В этом примере получает больший вес, чем , потому что основан на большем количестве тестов. В старых версиях PAQ используется этот подход. В более новых версиях используется логистическое (или нейронная сеть ) смешивание путем первого преобразования прогнозы в логистической области, log (p / (1-p)) перед усреднением. Это эффективно дает больший вес прогнозам около 0 или 1, в данном случае . В обоих случаях каждой из входных моделей могут быть присвоены дополнительные веса и адаптированы для того, чтобы отдавать предпочтение моделям, которые давали наиболее точные прогнозы в прошлом. Все версии PAQ, кроме самых старых, используют адаптивное взвешивание.
Большинство компрессоров микширования контекста прогнозируют ввод одного бита за раз. Выходная вероятность - это просто вероятность того, что следующим битом будет 1.
Нам дан набор прогнозов P i (1) = n 1i/ni, где n i = n 0i + n 1i, а n 0i и n 1i являются отсчетами 0 и 1 бит соответственно для i-й модели. Вероятности вычисляются путем взвешенного сложения значений 0 и 1:
Веса w i изначально равны и всегда суммируются с 1. В начальных условиях каждая модель взвешивается пропорционально доказательствам. Затем веса корректируются в пользу более точных моделей. Предположим, нам дано, что фактический прогнозируемый бит равен y (0 или 1). Тогда корректировка веса:
Сжатие можно улучшить, ограничив n i так, чтобы взвешивание модели было лучше сбалансировано. В PAQ6 всякий раз, когда один из счетчиков битов увеличивается, часть другого счетчика, превышающая 2, уменьшается вдвое. Например, после последовательности 000000001 счетчики будут идти от (n 0, n 1) = (8, 0) до (5, 1).
Пусть P i (1) будет предсказанием i-й модели, что следующим битом будет 1. Тогда окончательное предсказание P ( 1) вычисляется:
, где P (1) - вероятность того, что следующим битом будет 1, P i (1) - это вероятность, оцененная i-й моделью, и
После каждого прогноза модель обновляется путем корректировки весов для минимизации затрат на кодирование.
где η - скорость обучения (обычно от 0,002 до 0,01), y - прогнозируемый бит, а (y - P ( 1)) является ошибкой прогнозирования.
Все версии ниже используют логистическое смешивание, если не указано иное.