Контекстное смешивание — это тип алгоритма сжатия данных , в котором предсказания следующего символа двух или более статистических моделей объединяются для получения предсказания, которое часто оказывается точнее любого из отдельных предсказаний. Например, один простой метод (не обязательно лучший) — усреднить вероятности , назначенные каждой моделью . Случайный лес — это другой метод: он выводит предсказание, которое является модой предсказаний, выданных отдельными моделями. Объединение моделей — это активная область исследований в области машинного обучения . [ требуется ссылка ]
Программы сжатия данных серии PAQ используют смешивание контекста для назначения вероятностей отдельным битам входных данных.
Предположим, что нам даны две условные вероятности, и , и мы хотим оценить , вероятность события X при обоих условиях и . Для теории вероятностей недостаточно информации , чтобы дать результат. Фактически, можно построить сценарии, в которых результат может быть любым. Но интуитивно мы ожидали бы, что результат будет неким средним из двух.
Проблема важна для сжатия данных. В этом приложении и являются контекстами, событием является то, что следующий бит или символ данных, которые должны быть сжаты, имеет определенное значение, а и являются оценками вероятности по двум независимым моделям. Коэффициент сжатия зависит от того, насколько близко оцененная вероятность приближается к истинной, но неизвестной вероятности события . Часто бывает так, что контексты и происходили достаточно часто, чтобы точно оценить и путем подсчета вхождений в каждом контексте, но два контекста либо не происходили вместе часто, либо не хватает вычислительных ресурсов (времени и памяти) для сбора статистики для объединенного случая.
Например, предположим, что мы сжимаем текстовый файл. Мы хотим предсказать, будет ли следующий символ переводом строки, учитывая, что предыдущий символ был точкой (контекст ) и что последний перевод строки произошел 72 символа назад (контекст ). Предположим, что перевод строки ранее произошел после 1 из последних 5 точек ( ) и в 5 из последних 10 строк в столбце 72 ( ). Как следует объединить эти прогнозы?
Использовались два общих подхода: линейное и логистическое смешивание. Линейное смешивание использует средневзвешенное значение прогнозов, взвешенных по доказательствам. В этом примере получает больший вес, чем , поскольку основан на большем количестве тестов. Более старые версии PAQ используют этот подход. [1] Более новые версии используют логистическое (или нейронное сетевое ) смешивание, сначала преобразуя прогнозы в логистическую область, log(p/(1-p)) перед усреднением. [2] Это фактически дает больший вес прогнозам около 0 или 1, в данном случае . В обоих случаях дополнительные веса могут быть даны каждой из входных моделей и адаптированы для поддержки моделей, которые давали наиболее точные прогнозы в прошлом. Все, кроме самых старых версий PAQ, используют адаптивное взвешивание.
Большинство компрессоров микширования контекста предсказывают один бит ввода за раз. Вероятность вывода — это просто вероятность того, что следующий бит будет 1.
Нам дан набор прогнозов P i (1) = n 1i /n i , где 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)) — ошибка предсказания.
Во всех приведенных ниже версиях используется логистическое смешивание, если не указано иное.