Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Контекстное кодирование (ppm - prediction by partial matching)

Лекция



Привет, Вы узнаете о том , что такое контекстное кодирование, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое контекстное кодирование, ppm, prediction by partial matching , настоятельно рекомендую прочитать все из категории Теория информации и кодирования.

PPM (англ. Prediction by Partial Matching — предсказание по частичному совпадению) — адаптивный статистический алгоритм сжатия данных без потерь, основанный на контекстном моделировании и предсказании. Модель PPM использует контекст — множество символов в несжатом потоке, предшествующих данному, чтобы предсказывать значение символа на основе статистических данных. Сама модель PPM лишь предсказывает значение символа, непосредственное сжатие осуществляется алгоритмами энтропийного кодирования, как например, алгоритм Хаффмана, арифметическое кодирование.

Длина контекста, который используется при предсказании, обычно сильно ограничена. Эта длина обозначается n и определяет порядок модели PPM, что обозначается как PPM(n). Неограниченные модели также существуют и обозначаются просто PPM*. Если предсказание символа по контексту из n символов не может быть произведено, то происходит попытка предсказать его с помощью n-1 символов. Рекурсивный переход к моделям с меньшим порядком происходит, пока предсказание не произойдет в одной из моделей либо когда контекст станет нулевой длины (n=0). Модели степени 0 и −1 следует описать особо. Модель нулевого порядка эквивалента случаю контекстно-свободного моделирования, когда вероятность символа определяется исключительно из частоты его появления в сжимаемом потоке данных. Подобная модель обычно применяется вместе с кодированием по Хаффману. Модель порядка −1 представляют собой статическую модель, присваивающую вероятности символа определенное фиксированное значение; обычно все символы, которые могут встретиться в сжимаемом потоке данных, при этом считаются равновероятными. Для получения хорошей оценки вероятности символа необходимо учитывать контексты разных длин. PPM представляет собой вариант стратегии перемешивания, когда оценки вероятностей, сделанные на основании контекстов разных длин, объединяются в одну общую вероятность. Полученная оценка кодируется любым энтропийным кодером (ЭК), обычно это некая разновидность арифметического кодера. На этапе энтропийного кодирования и происходит собственно сжатие.

Описание

Определение:
Адаптивное моделирование (adaptive context modeling) — метод моделирования, при котором, по мере кодирования модель изменяется по заданному алгоритму.

Определение:
Энтропийное кодирование (entropy coding) — кодирование последовательности значений с возможностью однозначного восстановления с целью уменьшения объема данных с помощью усреднения вероятностей появления элементов в закодированной последовательности.

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

РРМРРМ (Prediction by partial matching) — адаптивный алгоритм сжатия данных без потерь, основанный на контекстном моделировании и предсказании. Исходно кодеру и декодеру поставлена в соответствие начальная модель источника данных. Будем считать, что она состоит из КМ(−1), присваивающей одинаковую вероятность всем символам алфавита входной последовательности. После обработки текущего символа кодер и декодер изменяют свои модели одинаковым образом, в частности наращивая величину оценки вероятности рассматриваемого символа. Следующий символ кодируется (декодируется) на основании новой, измененной модели, после чего модель снова модифицируется и т. д. На каждом шаге обеспечивается идентичность модели кодера и декодера за счет применения одинакового механизма ее обновления.

Если символ «s » обрабатывается при помощи РРМРРМ, то, в первую очередь рассматривается KM(N) Если она оценивает вероятность «s » числом, не равным нулю, то сама и используется для кодирования «s ». Иначе выдается сигнал в виде символа ухода, и на основе меньшей по порядку KM(N1) производится очередная попытка оценить вероятность «s ». Кодирование происходит через уход к КМКМ меньших порядков до тех пор, пока «s » не будет оценен. КМ(1)КМ(−1) гарантирует, что это в конце концов произойдет. Таким образом, каждый символ кодируется серией кодов символа ухода, за которой следует код самого символа. Из этого следует, что вероятность ухода также можно рассматривать как вероятность перехода к контекстной модели меньшего порядка.

РРМ лишь предсказывает значение символа, непосредственное сжатие осуществляется алгоритмами энтропийного кодирования, как например, алгоритм Хаффмана или арифметическое кодирование.

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

Опубликованные исследования алгоритмов семейства PPM появились в середине 1980-х годов. Программные реализации не были популярны до 1990-х годов, потому как модели PPM требуют значительного количества оперативной памяти. Современные реализации PPM являются одними из лучших среди алгоритмов сжатия без потерь для текстов на естественном языке.

Контекстное кодирование (ppm - prediction by partial matching)

Текущая ситуация

Исследования этого семейства алгоритмов публикуются с середины 1980-х годов . Однако программные реализации не пользовались популярностью до середины 1990-х годов из-за высокой потребности в энергозависимых ресурсах памяти . Самые последние реализации PPM являются одними из лучших систем сжатия без потерь для текста на естественном языке .

Пример

Кодирование

Имеется последовательность символов “абвавабввбббв” алфавита {а,б,в,г}, которая уже была закодирована.

Контекстное кодирование (ppm - prediction by partial matching)
рис. Об этом говорит сайт https://intellect.icu . 2
Контекстное кодирование (ppm - prediction by partial matching)
рис. 3

Пусть счетчик символа ухода равен единице для всех КМ, при обновлении модели счетчики символов увеличиваются на единицу во всех активных КМКМ, применяется метод исключения и максимальная длина контекста равна трем, т. е. N=3 . Первоначально модель состоит из КМ(−1), в которой счетчики всех четырех символов алфавита имеют значение 11. Состояние модели обработки последовательности “абвавабввбббв” представлено на рис.3, где прямоугольниками обозначены контекстные модели, при этом для каждой КМ указан курсивом контекст, а также встречавшиеся в контексте символы и их частоты.

Контекстное кодирование (ppm - prediction by partial matching)

Пусть текущий символ равен «г», т. е. «?» = «гг», тогда процесс его кодирования будет выглядеть следующим образом. Сначала рассматривается контекст 3-го порядка “ббв”. Ранее он не встречался, поэтому кодер, ничего не послав на выход, переходит к анализу статистики для контекста 2-го порядка. В этом контексте (“бв”) встречались символ «а» и символ «в», счетчики которых в соответствующей КМ равны 11 каждый, поэтому символ ухода кодируется с вероятностью 12+1, где в знаменателе число 2 — наблюдавшаяся частота появления контекста “бв”, 1 — значение счетчика символа ухода. В контексте 1-го порядка «вв» дважды встречался символ «а», который исключается (маскируется), один раз также исключаемый «вв» и один раз «б», поэтому оценка вероятности ухода будет равна 1+1. В КМ(0) символ «г» также оценить нельзя, причем все имеющиеся в этой КМ символы «а», «б», «в» исключаются, так как уже встречались нам в КМКМ более высокого порядка. Поэтому вероятность ухода получается равной единице. Цикл оценивания завершается на уровне КМ(−1), где «гг» к этому времени остается единственным до сих пор не попавшимся символом, поэтому он получает вероятность 1 и кодируется посредством 00 бит. Таким образом, при использовании хорошего статистического кодировщика для представления «г» потребуется в целом примерно 2.6 бит. Перед обработкой следующего символа создается КМ для строки “ббв” и производится модификация счетчиков символа «гг» в созданной и во всех просмотренных КМ. В данном случае требуется изменение КМ всех порядков от 0 до N

Декодирование

Алгоритм декодирования абсолютно симметричен алгоритму кодирования. После декодирования символа в текущей КМ проверяется, не является ли он символом ухода; если это так, то выполняется переход к КМКМ порядком ниже. Иначе считается, что исходный символ восстановлен, он записывается в декодированный поток и осуществляется переход к следующему шагу. Содержание процедур обновления счетчиков, создания новых контекстных моделей, прочих вспомогательных действий и последовательность их применения должны быть строго одинаковыми при кодировании и декодировании. Иначе возможна рассинхронизация копий модели кодера и декодера, что рано или поздно приведет к ошибочному декодированию какого-то символа. Начиная с этой позиции вся оставшаяся часть сжатой последовательности будет разжата неправильно. Разница между кодами символов, оценки вероятности которых одинаковы, достигается за счет того, что РРМ-предсказатель передает кодировщику так называемые накопленные частоты (или накопленные вероятности) оцениваемого символа и его соседей или кодовые пространства символов. Так, например, для контекста бв“бв” можно составить следующую таблицу:

Контекстное кодирование (ppm - prediction by partial matching)

Хороший кодировщик должен отобразить символ «s» с оценкой вероятности p(s) в код длины log2p(s), что и обеспечит сжатие всей обрабатываемой последовательности в целом.

Проблема нулевой частоты

Определение:
Проблема нулевой частоты (zero frequency problem) — проблема обработки новых символов, еще не встречавшихся во входном потоке.

На сегодняшний день можно выделить два подхода к решению этой проблемы: априорные методы, основанные на предположениях о природе сжимаемых данных, и адаптивные методы, которые пытаются приспособиться к сжимаемым данным.

Априорные методы

Выедем следующие обозначения:

  • С — общее число просмотров контекста
  • Q — количество разных символов в контексте
  • Qi — количество таких разных символов, что они встречались в контексте ровно i раз
  • Escx — ОВУ(оценка вероятности кода ухода) по методу x

Изобретатели алгоритма РРМ предложили два метода ОВУОВУ: так называемые метод A и метод B. Частные случаи алгоритма РРМРРМ с использованием этих методов называются, соответственно, PPMA и PPMB.

PPMA: EscA=1/(С+1)

PPMB: EscB=(QQ1)/С

Затем был разработан метод С, а в след за ним метод D:

PPMC: EscC=Q/(С+Q)

PPMD: EscD=Q/(2С)

Адаптивные методы

Определение:
SEE (Secondary Escape Estimation) — модель оценки, которая адаптируется к обрабатываемым данным.

Для нахождения ОВУОВУ строятся контексты уходаконтексты ухода (Escape Context), формируемые из различный полей. Всего используется 44 поля, в которых содержится информация о:

  • порядке РРМРРМ−контекста
  • количестве уходов
  • количестве успешных кодирований
  • последних двух символах РРМРРМ−контекста

ОВУОВУ для текущего контекста находится путем взвешивания оценок, которые дают три контекста ухода (order2 EC , order1 EC, order0 EC, соответствующие текущему РРМ−контексту. Order2 EC наиболее точно соответствует текущему контексту, контексты ухода порядком ниже формируются путем выбрасывания части информации полей order2 EC.

При взвешивании контекстов ухода используются следующие веса w:

Контекстное кодирование (ppm - prediction by partial matching), где pОВУ, которую дает данный взвешиваемый контекст.

Величину, которая формируется из фактического количества успешных кодирований и количества уходов в PPM-контекстах, соответствующих этому EC обозначим как pi.

Контекстное кодирование (ppm - prediction by partial matching)

Практическое использование

Варианты алгоритма PPM на данный момент широко используются, главным образом для компрессии избыточной информации и текстовых данных. Следующие архиваторы используют PPM :

  • boa, основан на PPMz (Ian Sutton)
  • HA, PPM order 4, оригинальный метод оценки вероятности ухода (Harry Hirvola)
  • lgha, основан на коде архиватора ha (Юрий Ляпко)
  • ppmpacktc, основан на коде PPMd, PPMz, PPMVC и коде HA с реализацией hsc (Александр Мясников)
  • arhangel, основан на алгоритмах ha с добавлением набора фильтров для различных данных (Юрий Ляпко)
  • PPMd — реализация PPM order-2..16, применяется наследование информации («дурилка» Дмитрия Шкарина)
  • ppmz — реализован метод Z (Charles Bloom)
  • rk — реализация PPMz с набором фильтров (Malcolm Taylor)
  • rkuc — PPM с порядками 16-12-8-5-3-2-1-0 (Malcolm Taylor)
  • rkive (Malcolm Taylor)
  • x1 — реализация LZP и PPM (Stig Valentini)
  • RAR (версии 3 и 4) — реализация варианта PPMd, PPMII
  • 7-Zip — реализация варианта PPMd
  • WinZip (версии 10 и выше) — реализация варианта PPMd

Вау!! 😲 Ты еще не читал? Это зря!

Исследование, описанное в статье про контекстное кодирование, подчеркивает ее значимость в современном мире. Надеюсь, что теперь ты понял что такое контекстное кодирование, ppm, prediction by partial matching и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Теория информации и кодирования

создано: 2023-11-01
обновлено: 2024-11-14
28



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Теория информации и кодирования

Термины: Теория информации и кодирования