Сжатие данных Руководитель: Жерздев С.В. Участники: Рябикин Н.М. Осокин Д.В.

advertisement
Сжатие данных
Руководитель: Жерздев С.В.
Участники: Рябикин Н.М.
Осокин Д.В.
Капралов Е.И.
Белоусов С.О.
Цель проекта
Цель минимум: получить знания и опыт
работы в этой области.
 Цель максимум: добиться практически
интересных результатов (лучше PPM по
сжатию, лучше PAQ по
производительности).

2/53
Основные задачи


Изучить основные подходы к сжатию данных
(особенно статистические методы) и
используемые в современных системах
стат.модели: в порядке возрастания
сложности адаптивные - контекстные переменной длины (PPM) - составные (PAQ);
Предложить, реализовать и опробовать
собственные подходы к построению
составных моделей.
3/53
Немного о сжатии данных
методом контекстного
моделирования
4/53
Контекстное моделирование – оценка
вероятности появления символа в зависимости
от непосредственно ему предшествующих, или
контекста.
Контекст – последовательность символов,
непосредственно примыкающих к текущему
символу слева.
Например, для последнего символа «о» последовательности «…молоко…»
контекстом является «…молок».
В дальнейшем нас будут интересовать контексты
конечной длины.
5/53
Процесс сжатия состоит из двух
самостоятельных частей:


Моделирование
Кодирование
Моделирование – построение модели информационного
источника, породившего сжимаемые данные.
Кодирование – отображение обрабатываемых данных в сжатую
форму представления на основании результатов моделирования.
6/53
Схема процесса сжатия данных
Кодер источника (компрессор)
Источник
данных
Моделировщик
Сжимаемые
данные
обновить
модель
кодировать символ
на основании его
вероятности
Данные в
компактном
представлении
Кодировщик
Кодировщик создает выходной поток, являющийся компактной формой
представления обрабатываемой последовательности, на основании
информации, поставляемой ему моделировщиком.
7/53
Теорема Шеннона
Элемент si, вероятность появления которого равняется
p(si), выгоднее всего представить log2(si) битами.
Средняя длина кодов будет равна следующей
величине:
H   p( si ) log 2 p( si )
i
Есть реализация кодера (арифметический кодер), который позволяет
максимально приблизиться к теоретическому результату.
Чем точнее оценка вероятностей появления символов, тем лучше сжатие.
8/53
Проблемы контекстного
моделирования

Как выбирать контекст? Текущий символ
может точнее предсказываться контекстом
длины 2, нежели длины 1.
 Возможное


решение: идея смешивания.
Рост ресурсов с ростом длины контекста.
Как оценивать вероятность символов,
имеющих нулевую частоту?
9/53
Классификация стратегий
моделирования




Статическое
Полуадаптивное
Адаптивное (динамическое)
Блочно-адаптивное
10/53
Алгоритмы PPM
PPM – Prediction by partial matching


Моделирование: адаптивное
Контексты: фиксированной длины
11/53
Алгоритмы PAQ



Модификация алгоритма PPM
Основная идея – смешивание контекстов
Вторичная оценка символа
12/53
Контексты







n-граммы 0..7
Словарные n-граммы
Разреженные
Аналоговые
Двумерные
Специальные
Match для длинных
13/53
Комбинирование моделей
(смешивание)
Смешивание контекстов — это техника,
тесно связанная с алгоритмом PPM, но отличие
состоит в том, что вероятность появления
следующего символа вычисляется на основе
взвешенной комбинации большого числа
моделей, зависящих от разных контекстов, не
обязательно следующих друг за другом.
С помощью технологии смешивания можно
существенно увеличить точность предсказания.
14/53
Вторичная оценка символа

Адаптивная корректировка оценки
вероятности по короткому контексту
15/53
Главный плюс PAQ
Обеспечивается максимальная компрессия из
всех существующих ныне алгоритмов.
Есть и минусы:
Потеря устойчивости оценки, если данные
«зашумлены»
 Большие вычислительные расходы на обновление
модели
 Большие расходы оперативной памяти

Локальная цель:

Добиться «золотой середины»
16/53
Модели
17/53
Контекстное моделирование
В случае адаптивной модели оценки
вероятностей строятся на основании
обычных счётчиков частот, связанных с
текущим контекстом
 Проблема символов с “нулевой”
частотой.

18/53
Пример
Используем контекстное моделирование порядка 1, контекст - ‘a’:
б
аб рака даб р а ?
Частоты появления букв в контексте:
б
р
к
д
1
2
0
0
0
1
0
1
Вероятность:
1
21
1234
0
0
11
23
0
4
0134
Частота контекста:
а
4
2
3
1
0
19/53
Состояния → вероятности


В PAQ используется более сложная модель
получения вероятностей: он преобразует
состояния модели в вероятности по таблице.
Переходы между состояниями заданы в
зависимости от входных данных.
Плюсы: состояние теперь описывается 1
байтом, можно более гибко соотносить
состояние модели и оценку вероятности.
20/53
Модели PAQ








MatchModel (совпадающие контексты)
picModel (двухцветное CCITT bitmap изображение)
wordModel (английский текст и колонки)
recordModel (двумерные данные с фиксированной длиной
записи)
sparseModel (контексты порядка 1-2 с пустыми местами)
bmpModel (24 битное несжатое изображение .bmp или .tiff)
jpegModel (только стандартное и 8 битное расширение)
exeModel (x86 код)
21/53
Преимущества моделей PAQ
 Позволяет быстро менять вероятности
появления битов,
 Упрощается реализация модели и кодера,
 Снимается проблема нулевых счётчиков, т.к.
модель меняется очень быстро,
 В качестве контекста придётся брать не
только предыдущие закодированные
символы, но и закодированные биты
текущего символа.
22/53
Созданные модели
Двухбайтовая (16 предыдущих бит +
закодированные биты текущего байта)
 Две однобайтовые (применено
смешивание предсказаний)

23/53
Двухбайтовая модель
Вероятность символа будем оценивать
как отношение числа предсказанных
контекстом единиц к числу его
появления в данных.
 Плюсы:

 модель
быстро изменяется,
 для хранения статистики требуется всего
один массив,
 простота реализации.
24/53
Две однобайтовые модели

Контексты: предыдущий байт и через байт
+ закодированные биты текущего.
К2
К1
+ закодированные
биты текущего
25/53
Две однобайтовые модели

Полученные вероятности смешиваются
в зависимости от значимости, затем
нормируются.
…
double w1 = log((double)(pr1+1)/(4096-pr1)/4096);
double w2 = log((double)(pr2+1)/(4096-pr2)/4096);
if (w1+w2<0.005)
w1=w2=1.0;
int pr=(pr1*w1+pr2*w2)/(w1+w2);
…
26/53
Две однобайтовые модели

Плюсы:
 малый
размер массивов для хранения
статистики,
 возможность улучшения (корректировки)
предсказания.
27/53
Сравнение
Архиватор
Размер
файла (МБ)
Наш PAQ2b
Наш PAQ1b
100
Время
сжатия (с)
Расход
памяти
(МБ)
Коэфф.
сжатия
607
128
2.82
337
1
1.32
28/53
Миксер
29/53
Что такое миксер?
Миксер – это объект, который комбинирует
результаты разных моделей. Ранние версии
PAQ использовали примитивные миксеры с
четко заданными весами. С PAQ6 получили
применение адаптивные, обучаемые модели.
В PAQ8 для смешивания используются
нейронные сети.
30/53
Кратко о нейронных сетях
 Нейронные сети – вычислительные
системы, способные к обучению путем
анализа положительных и
отрицательных воздействий
 Использование: распознавание речи и
рукописного ввода, апроксимация
функций, прогноз поведения функций и
многое другое
31/53
wi 
Искусственный нейрон
i  веса ( умножители)
  сумматор
s   wi xi  b
f – нелинейная
функция от s
(функция
активации)
32/53
Функция активации
Наиболее популярной является сигмоид:
1
f (s) 
1  e s
33/53
Смешивание моделей
Смешивание моделей позволяет лучше
угадывать следующий символ, поскольку с
ростом статистики точность предсказания
увеличивается
34/53
Разные веса
Как правило, чем длиннее контекст, тем
точнее он угадывает. Поэтому с первой
версии PAQ модели имеют разный вес:
длинные больший, короткие меньший.
35/53
Корректировка весов
Корректировка весов – это изменение
весов моделей на каждой итерации. Чем
лучше модель предсказывает следующий
символ, тем сильнее увеличивается ее вес.
Если же она не угадывает, вес уменьшается.
36/53
Миксер с нейронными сетями
Нелинейное преобразование обладает
свойством усиливать слабые сигналы лучше,
чем большие, и предотвращает насыщение
от больших сигналов
37/53
Нейросеть в PAQ8
Входы сети подвергаются
растяжению, чтобы
увеличить значимость
более «уверенных»
моделей
38/53
Миксер в PAQ8
Миксер использует М нейронных сетей
по N входов в каждой, в итоге может
быть выбрано S. Если S = 1, то
предсказание этой модели идет на
выход. Если S > 1, то произойдет
смешивание через еще одну нейронную
сеть.
39/53
Наш миксер

Нелинейное смешивание без обучения
 pi 

wi  ln 
 1  pi 
pw
p
w
i
i
i
i
i
40/53
Вторичная оценка символа (SSE)
41/53


После того, как ContextModel2() выдает
вероятность единицы, для корректировки
последующих предсказаний используется
Вторичная оценка ошибки, реализованная в
виде класса AMP.
Класс APM представляет собой карту
(таблицу), комбинирующую в себе контексты
и вероятности заданных длин. В PAQ
используется одна карта длиной 1 байт и 3
карты по 2 байта.
42/53
Class APM
class APM {
int index;
// last p, context
const int N;
// number of contexts
Array<U16> t; // [N][33]: p, context -> p
public:
APM(int n);
int p(int pr=2048, int cxt=0, int rate=8) {
assert(pr>=0 && pr<4096 && cxt>=0 && cxt<N && rate>0 && rate<32);
pr=stretch(pr);
int g=(y<<16)+(y<<rate)-y-y;
t[index] += g-t[index] >> rate;
t[index+1] += g-t[index+1] >> rate;
const int w=pr&127; // interpolation weight (33 points)
index=(pr+2048>>7)+cxt*33;
return t[index]*(128-w)+t[index+1]*w >> 11;
}
};
// maps p, cxt -> p initially
APM::APM(int n): index(0), N(n), t(n*33) {
for (int i=0; i<N; ++i)
for (int j=0; j<33; ++j)
t[i*33+j] = i==0 ? squash((j-16)*128)*16 : t[j];
}
43/53
Структура APM
p
Масштабировать p в
отрезок
[-8,8]
 p 

p  ln 
1

p


Вычислить
степень
размытия
ошибки
Размыть
ошибку
между двумя
соседними
контекстами
Вычислить
новую
вероятность
p
p
44/53
Корректировка предсказания от
ContextModel c помощью APM


Predictor::update() использует 4 карты
вторичной оценки с различной длинной
контекста символа для корректировки
предсказания, полученного от
ContextModel2()
В качестве предсказания возвращает
взвешенную сумму всех скорректированных
предсказаний.
45/53
Корректировка предсказания от
ContextModel c помощью APM
pr=contextModel2();
pr=a1.p(pr, c0)*3+pr>>2;
int pr2=a2.p(pr, c0+256*buf(1));
int pr3=a3.p(pr, c0^hash(buf(1),
buf(2))&0xffff);
int pr4=a4.p(pr, c0^hash(buf(1), buf(2),
buf(3))&0xffff);
pr=pr2+pr3*2+pr4+2>>2;
46/53
APM::p предсказание с
размытием ошибки
На входе эта функция получает 3 параметра:
 int pr – искомое предсказание
 int cxt – контекст в котором было сделанно это предсказание
 int rate – норма корректировки (определяет скорость
корректировки, чем rate меньше тем скорость быстрее.
значение по умолчанию 8)



В процессе работы вероятность масштабируется в интервал
[0, 4095] и делится на 32 отрезка для объединения с другими
контекстами.
Выходные вероятности интерполируются между двумя
квантуемыми значениями.
На выходе возвращает новую вероятность с учетом
корректировки.
47/53
APM::p предсказание с
размытием ошибки
int p(int pr=2048, int cxt=0, int rate=8)
{
assert(pr>=0 && pr<4096 && cxt>=0 && cxt<N &&
rate>0 && rate<32);
pr=stretch(pr);
int g=(y<<16)+(y<<rate)-y-y;
t[index] += g-t[index] >> rate;
t[index+1] += g-t[index+1] >> rate;
const int w=pr&127;
index=(pr+2048>>7)+cxt*33;
return t[index]*(128-w)+t[index+1]*w >> 11;
}
48/53
Сравнение степени сжатия с
APM и без неё
Версия
Ключ
-0
PAQ8a
-5
-0
-5
-0
PAQ8a
(без APM)
-5
-0
-5
Размер
файла
TXT, RU (МБ)
1
3
1
3
Сжат (КБ)
Время (с)
301
19,23
268
72,61
1016
68,69
878
260,85
304
27,13
271
119,45
1032
96,45
888
422,77
49/53
Выводы




APM обеспечивает 5-7% к проценту сжатия
Разница в скорости сжатия с “родным”
предсказателем с APM и без почти не
заметна
При использовании предсказателя по
формуле Байеса или по Статичным таблицам
APM ощутимо “тормозит” процесс сжатия
Использование APM оправданно только при
необходимости максимально сжать данные
50/53
Результаты
Архиватор
Время
сжатия (с)
Расход
памяти
(МБ)
Коэфф.
сжатия
Наш PAQ2b
607
128
2.82
Наш PAQ1b
337
1
1.32
6,5 ч
2 200
5.67
LPAQ
230
1 500
5.06
7-zip
101
250
4.01
PAQ8a
Размер
файла (МБ)
100
51/53
Итоги эксперимента
На текстовых данных лучше себя
показала двухбайтовая модель.
 Большее значение имеет контекст в два
предыдущих байта, чем два контекста в
предыдущий байт и через байт.
 Более того, две однобайтовые модели
ведут себя хуже, нежели простая
контекстная модель порядка один.

52/53
Список ресурсов







http://www.compression.ru
Ватолин Д., Ратушняк А., Смирнов М., Юкин В. Методы сжатия
данных. Устройство архиваторов, сжатие изображений и видео.
- М.: ДИАЛОГ-МИФИ, 2002. - 384 с.
http://ru.wikipedia.org/wiki/PAQ - описание PAQ
http://www.cs.fit.edu/~mmahoney/compression/ - официальный
сайт PAQ
M. Mahoney, Adaptive Weighing of Context Models for Lossless
Data Compression, Florida Tech. Technical Report CS-2005-16,
2005.
http://www.cs.fit.edu/~mmahoney/compression/paq.html - история
версий и исходники PAQ
Круглов В.В., Дли М.И., Голунов Р.Ю. Нечеткая логика и
искусственные нейронные сети. М.: Физматлит, 2001. 221с.
53/53
Download