Повышение точности оценок в контекстных моделях высоких порядков
Наряду с задачей оценки вероятности ухода серьезной проблемой РРМ является недостаточный объем статистики в КМ высоких порядков, что приводит к большим погрешностям оценок. Как побочный результат имеется неприятная зависимость порядка обычной РРМ-модели, обеспечивающего наилучшее сжатие, от вида данных. Как правило, оптимальный порядок обычной модели колеблется от 0 до 16 (для текстов в районе 4-6), кроме того, часто существуют значительные локальные изменения внутри файла. Например, на рис. 4.3 приведен типичный для классического РРМ-алгрритма график зависимости степени сжатия текста от порядка модели. Видно, что максимум достигается при N = 4...5, после чего наблюдается плавное падение степени сжатия.
155
Методы сжатия данных
4
|
♦ ♦ |
ос 3.5
х
я 3
л 2.5
z
§ 2 5 1.5
|
i i i i---------- 1 i i i |
1
012345678 Порядок
Рис. 4.3. Зависимость степени сжатия от порядка модели для классического РРМ-алгоритма
Можно выделить два подхода к решению проблемы:
■ выбор порядка модели, обеспечивающего наилучшее сжатие, при оценивании каждого символа;
■ использование статистики контекстов-предков.
Выбор локального порядка модели
Механизм выбора порядка модели для кодирования каждого символа получил название Local Order Estimation (LOE) - оценки локального порядка. Схемы LOE носят чисто эвристический характер и заключаются в том, что мы задаем некую функцию "доверия" и пробуем предсказать с ее помощью эффективность кодирования текущего символа в той или иной доступной - соответствующей активному контексту и физически существующей -КМ порядка от 0 до заданного N. Можно выделить 3 типа схем LOE:
1) ищем оптимальный порядок сверху вниз от КМ максимального порядка N к КМ минимального порядка; прекращаем поиск, как только КМ меньшего порядка кажется нам более "подозрительной", чем текущая, которую и используем для оценки вероятности символа;
2) поиск снизу вверх;
3) оценка всех доступных КМ.
Если в выбранной КМ закодировать символ не удалось, то, вообще говоря, процедуру поиска следующей оптимальной по заданному критерию КМ можно повторить. Тем не менее обычно ищут только начальный порядок, а в случае ухода просто спускаются на уровень ниже, т. е. дальше используют обычный алгоритм РРМ.
Выбор той или иной функции доверия зависит от особенностей конкретной реализации РРМ, характеристик данных, для сжатия которых разрабатывается компрессор, и, как нередко бывает, личных пристрастий разработчика. Как показал опыт, различные "наивные" энтропийные оценки надежности КМ работают плохо. Эти оценки основываются на сравнении средней длины кодов для текущей КМ(о) и родительской KM(o-l). Неудача объясняется, видимо, тем, что в силу чистой случайности функция распределения в КМ(о) может быть более плоской, чем в следующей рассматриваемой KM(o-l). Поэтому для получения правдоподобной оценки надо сравнивать среднюю длину кодов для всех дочерних контекстных моделей текущей КМ(о) со средней длиной кодов для всех дочерних контекстных моделей родительской КМ(о-1).
В [3] был предложен эффективный и простой метод, дающий оценку надежности КМ исходя из оценки вероятности Q наиболее вероятного в КМ символа (Most Probable Symbol's Probability, MPS-P) и количества уходов Е из КМ. Обобщенно формулу можно записать так:
aQloe2Q + bE(log2E-c) + d(l-Q)Qog2E-c), (4.1)
где константы а, Ь, с, d подбираются эмпирическим путем.
Критерием выбора КМ является минимальное значение выражения (4.1) среди всех доступных КМ.
К счастью, оценка только по Q дает хорошие результаты уже в том случае, когда просто выбираем КМ с максимальным Q (соответствует варианту обобщенной формулы при b = d = 0).
Можно дать следующий пример, демонстрирующий недостатки "наивного" энтропийного подхода и подхода MPS-P. Пусть мы кодируем с помощью РРМ-моделирования порядка 2 последовательность алфавита {"О", "1"}, порожденную источником с такими вероятностями генерации символов:
/>(0|00) = 0,/>(1|00)=1, />(0|10)=р(1|10) = 0.5.
Пусть появление строк "00" и "10" равновероятно. Если уже обработан большой блок входной последовательности и контекст текущего символа равен "10", то в соответствии с заданным описанием источника в КМ(2) оценки вероятностей
<КО|10) = <7(1|10) = 0.5, а в КМ(1) оценки составляют
q(0\0) = 0.25, ?(1|0) = 0.75.
Средняя длина кодов для КМ(2) равна
-*(0|10)tog29(0|10)-tfl|IO)log2rfl|10),
что составляет 1 бит. В то же время средняя длина для КМ(1) равна -?(0|0)1о81?(0|0)-*(1|0)1о«3*(1|0),
что соответствует примерно 0.8 бита. Поэтому, если пользуемся "наивным" энтропийным критерием, то мы должны выбрать для кодирования КМ(1). Критерий MPS-P также указывает на КМ(1). Этот выбор ошибочен. Действительно, если мы кодируем в КМ(2), то символы "О" и "1" требуют по -log2 0.5 = 1 биту. Если в КМ(1), то для кодирования "0" нужно —log2 0.25 = = 2 бита, а для "1" требуется -log2 0.75 ~ 0.4 бита. В соответствии с принятым описанием источника вероятности появления "0" и "1" после строки "10" одинаковы, поэтому при каждом оценивании на основании статистики для контекста "0" вместо статистики для контекста "10" мы будем терять в среднем 0.5(2-1) + 0.5(0.4-1) = 0.2 бита.
Добавим, что известные варианты реализации подхода LOE плохо сочетаются в смысле улучшения сжатия с механизмом наследованием информации, так как эти техники эксплуатируют примерно одинаковые недостатки классического алгоритма РРМ.
Наследование информации
Метод наследования информации позволяет существенно улучшить точность оценок. На конец 2001 г. имеется по крайней мере одна очень эффективная реализация РРМ, обеспечивающая высокую степень сжатия типовых данных, в особенности текстов, в первую очередь из-за применения наследования информации [1].
Метод наследования информации, предложенный Шкариным в [1], борется с неточностью оценок символов в КМ больших порядков и основан на очень простой идее. Логично предположить, что распределения частот символов в родительских и дочерних КМ похожи. Тогда при появлении в дочерней КМ(о) нового символа s,- целесообразно инициализировать его счетчик ,Д.ф) некоторой величиной /°(j, | о), зависящей от информации о данном символе в родительской КМ (или нескольких контекстных моделях-предках). Пусть в результате серии уходов мы спустились с КМ(о) на КМ(о-&), где символ и был успешно оценен. Тогда начальное значение счетчика символа в КМ(о) разумно вычислять, исходя из равенства
/°(^\о)_ f(st\o-k) (42y
f(o) f(0-k) + F._u' l j
где f\st \o)~ наследуемая частота;/(о) - сумма частот всех символов
КМ(о), включая символ ухода; /v*,0- сумма частот всех символов, реально встреченных в контекстах порядков о-к+ \...о.
К-^= Z \Дт)-Ае*с\т)-%Г(5/\т)
где J[esc\m) - частота для символа ухода в KM(m); S(m) - количество символов в КМ(т), не включая символ ухода.
сЭч Упражнение. Объясните смысл слагаемого F^0 в выражении (4.2).
Выражение (4.2) обладает большой вычислительной сложностью и требует существенных затрат памяти для организации вычисления. Кроме того, имеет смысл учитывать только статистику КМ(о-А), так как все равно в большинстве случаев к равно единице, т. е. успешное кодирование происходит в родительской КМ, если же это не так, то скорее всего контексты порядков о-\...о-к+1 являются "молодыми" и для них еще не накоплено полезной статистики. Поэтому на практике целесообразно использовать приближенную формулу
Г0|О)=_____ /(»>•/<'>-*>____ .
f(p)-sio) + f(o-k)-f(s,\o-k)
При самой простой реализации величина f°(s, \ о) вычисляется и присваивается сразу при создании нового счетчика в КМ(о). Но можно отложить наследование частоты до следующего появления символа 5, в этом контексте порядка о. Вероятнее всего, к тому времени родительская КМ будет обладать большим объемом статистики, что должно дать более точную оценку f°(s, | о) и в конечном итоге улучшить сжатие. Такое "отложенное" наследование требует повторного поиска родительской КМ и символа Si в ней, что может существенно замедлить обработку.
В зависимости от порядка модели, особенностей реализации и собственно сжимаемых данных наследование информации позволяет улучшить сжатие примерно на 1-10%. Типичной является цифра порядка 2-4%.
Заключение. Существующие реализации компрессоров, использующих механизм наследования информации, обеспечивают лучшее сжатие, чем компрессоры с LOE.
- Теги:
- 275 просмотров









