PAQ — серія вільних архіваторів стиснення без втрат із текстовим інтерфейсом, які спільними зусиллями розробників піднялись на перші місця рейтингів багатьох тестів стиснення даних (хоч і ціною процесорного часу й об'єму пам'яті). Спеціально налаштовані версії алгоритму PAQ виграли [en] та . PAQ є вільним програмним забезпеченням і поширюється під ліцензією GNU General Public License.
Алгоритм
PAQ використовує алгоритм [en], який пов'язаний із алгоритмом стиснення PPM. При цьому, компресія поділяється на дві фази: моделювання та кодування. PAQ використовує алгоритм змішування контекстів, який, хоч і пов'язаний із PPM, відрізняється тим, що ймовірність виникнення наступного символу розраховується на основі великої кількості моделей, залежних від різних контекстів, але не обов'язково послідовних. У більшості версій PAQ для збору статистики передбачення ймовірності наступного символу використовують наступні моделі:
- n-грами — контекст, останні n байт перед передбаченим символом (як у PPM);
- словникові n-грами, які ігнорують регістр і несловникові символи (корисні в текстових даних);
- «рідкісні» контексти, наприклад, другий та четвертий символи перед кодованим (корисні у деяких бінарних форматах);
- «аналогові» контексти, які складаються з бітів вищого порядку попередніх 8- або 16-бітних слів (корисні в мультимедійних файлах);
- двовимірні контексти (корисні для зображень, таблиць). Довжина рядку визначається знаходженням повторів груп байтів;
- спеціалізовані моделі, такі, як x86-виконавчі файли, BMP, TIFF або JPEG-зображення. Ці моделі активуються, коли даний тип файлу визначається.
Всі версії PAQ передбачають і стискають за один раз один біт, але розрізняються в деталях застосування того, як передбачення комбінуються й обробляються після. Як тільки була визначена передбачена ймовірність появи наступного біту, біт стискається арифметичним кодером. Існує три способи для комбінування передбачень моделей у залежності від версії PAQ.
- від PAQ1 до PAQ3 кожне передбачення представлено парою бітових лічильників . Ці лічильники комбінувались зваженим підсумовуванням, таким, що більша вага визначається довшим контекстом
- у PAQ4 до PAQ6 передбачення комбінувались, як і в попередньому випадку, але вага, яка належить кожній моделі, призначалась так, щоб більш точні моделі отримували перевагу
- у PAQ7 і пізніших версіях вихід кожної моделі є ймовірністю , на відміну від пари лічильників, ймовірності сумуються за допомогою штучних нейронних мереж.
PAQ1SSE і пізніші версії використовували пост-обробку передбачення шляхом вторинної оцінки символу (SSE). Комбіноване передбачення та невеликий контекст використовувались для обирання наступного передбачення згідно таблиці. Після того, як символ був закодований, дані в таблиці коректувались для зменшення помилки передбачення. Вторинна оцінка символу може бути об'єднана в один процес із різними контекстами, або може виконуватися паралельно, усереднюючись із виходами моделей.
Арифметичне кодування
Рядок s стискається в байтовий рядок, уявляючи число x у 256-значній системі вимірювання big endian на інтервалі [0;1], як P(r < s) ≤ x < P(r ≤ s), де P(r < s) — ймовірність, що випадковий рядок r такої ж самої довжини, як s, лексикографічно менш, ніж s. Завжди можна знайти такий рядок x, що його довжина хоча б на один байт була більша за ліміт Шеннона: -log2 P(r = s) біт. Довжина s зберігається на початку архіву.
Арифметичний кодер у PAQ здійснений шляхом збереження верхньої та нижньої мережі x для кожного кроку передбачення, спочатку [0;1]. Після кожного передбачення поточній інтервал ділився пропорційно ймовірності того, що наступний біт буде 0, потів 1, на підставі попередніх бітів s. Наступний біт кодується, обираючи відповідний інтервал нижньої градації у вигляді нового інтервалу.
Число x декомпресується в рядок s із ідентичною серією бітових передбачень (оскільки попередні біти s відомі). Інтервал ділиться як при стисканні. Частина, яка містить x, стає новим інтервалом і відповідний біт додається до s.
У PAQ верхня та нижня межа інтервалу інтерпретуються трьома частинами. Найбільш важливі розряди по основі 256 однакові, таким чином вони можуть бути записані як старші байти x. Наступні 4 байта зберігаються в пам'яті так, що старший байт відрізняється. Молодші біти передбачається, що є нулями для нижньої межі та всі для верхньої межі. Кодування завершується записом ще одного байта з нижньої межі.
Адаптивне зважування моделей
У PAQ версіях до PAQ6 кожна модель відображала велику кількість різних контекстів на пару лічильників: — кількість нульових бітів і — кількість одиничних бітів. Для збільшення значимості пізнішої історії бітів лічильник зменшувався майже в два рази, коли протилежний біт зустрічався. Наприклад, поточний стан моделі, асоціювання з контекстом , біт 1 спостерігається на виході й лічильник оновлюється до стану (7,4).
Біт стискається арифметичним кодером відповідно його ймовірності або P(1), або P(0)=1-P(1). Ймовірності обчислюються зваженим підсумовуванням лічильників нулів та одиниць:
- ,
де — вага і-ї моделі. До PAQ3 ваги були фіксованими й встановлювались у випадковому порядку (контексти порядку n мали вагу n²). Починаючи з PAQ4 ваги обиралися адаптивно в напрямку зменшення помилки передбачення в однакових наборах контекстів. Якщо треба закодувати біт y, то ваги призначаються наступним чином:
- ni = n0i + n1i
- помилка = y − P(1)
- помилка
Нейронні мережі для змішування
Починаючи з PAQ7 виходом кожної моделі є передбачення (замість пари лічильників). Передбачення усереднюються в логістичному домені:
- xi = стиснути(Pi(1))
- P(1) = розмити(Σi wi xi),
де P(1) — ймовірність того, що наступний біт буде одиницею, а Pi(1) — ймовірність, оцінена і-ю моделлю й
- стиснути(x) = ln(x / (1 - x))
- розмити(x) = 1 / (1 + e-x) (операція, зворотня операції «стиснути»).
Після кожного передбачення модель оновлюється вирівнюванням ваги для зменшення ціни стискання.
- wi ← η xi (y — P(1)),
де η — коефіцієнт навчання (зазвичай від 0.002 до 0.01), y — передбачений біт і (y-P(1)) — помилка передбачення. Алгоритм оновлення ваги відрізняється від звичайного у нейронних мережах навчаючого методу зворотнього поширення помилки в тому, що добуток P(0)P(1) не враховується, тому що мета нейронної мережі — мінімізація вартості кодування, а не стандартне відхилення.
Більшість версій PAQ використовує невеликий конекст під час вибору ваг для нейронної мережі. Деякі версії використовують 2-3-крокові передбачення, які складаються з відповідно двох або трьох множин нейронних мереж. Вихід кожної попередньої є виходом для наступної множини мереж, потужність якого менше. Потім йде вторинна оцінка символу. Більш того, для кожного вхідного передбачення може бути декілька входів, які є нелінійними функціями Pi(1) у доповненні до стиснути(P(1)).
Контекстне моделювання
Кожна модель поділяє вхідний потік біт s на множину контекстів і зображує кожний контекст на стан історії бітів, зображене 8 бітами. У версіях до PAQ6 стан був представлений парою лічильників (n0, n1). У PAQ7 і пізніших версіях стан містив за певних умов також останній біт і цілу послідовність. Значення станів відображаються у ймовірності, використовуючи 256-значну таблицю. Після табличного передбачення в таблиці вирівнювались (зазвичай до 0,4 %) для зменшення похибки передбачення.
У всіх PAQ8-версіях стан історії бітів містить наступну інформацію:
- Точна послідовність до 4 бітів.
- Пара лічильників і індикаторів для останнього біту для послідовностей від 5 до 15 біт.
- Пара лічильників для послідовностей від 16 до 41 біту.
Щоб зберегти кількість станів рівним 256, на лічильники були введені наступні обмеження: (41, 0), (40, 1), (12, 2), (5, 3), (4, 4), (3, 5), (2, 12), (1, 40), (0, 41). Якщо лічильник перевищує ліміт, наступний стан обирається подібним відношенням n0 / n1. Таким чином, якщо поточний стан (n0 = 4, n1 = 4, останній біт = 0) та 1 отримана на виході, тоді новий стан не (n0 = 4, n1 = 5, останній біт = 1), а (n0 = 3, n1 = 4, останній біт = 1).
Більшість контекстних моделей реалізовані як хеш-таблиці. Деякі невеликі контексти реалізовані як індексні масиви.
Попередня обробка тексту
Деякі версії PAQ, особливо PAsQDAa, PAQAR (обидві пішли від PAQ6), і від PAQ8HP1 до PAQ8HP8 (нащадки PAQ8 і ті, що здобули верх у Призі Хаттера) обробляють текст, продивляючись його й заміняючи слова з тексту, які містяться в зовнішньому словнику 1- і 3-байтними кодами. Додатково слова у верхньому регістрі кодуються спеціальним символом і перекладом у нижній регістр. У серії PAQ8HP словник організований групуванням синтаксично та семантично схожих слів разом. Це дозволяє використовувати моделі, які використовують тільки верхні біти словникових кодів як контексти.
Примітки
- . Mailcom.com. Архів оригіналу за 25 квітня 2015. Процитовано 19 травня 2010.
- . Архів оригіналу за 21 грудня 2016. Процитовано 10 липня 2007.
You may download, use, copy, modify, and distribute these programs under the terms of the GNU general public license
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
PAQ seriya vilnih arhivatoriv stisnennya bez vtrat iz tekstovim interfejsom yaki spilnimi zusillyami rozrobnikiv pidnyalis na pershi miscya rejtingiv bagatoh testiv stisnennya danih hoch i cinoyu procesornogo chasu j ob yemu pam yati Specialno nalashtovani versiyi algoritmu PAQ vigrali en ta PAQ ye vilnim programnim zabezpechennyam i poshiryuyetsya pid licenziyeyu GNU General Public License Zrazok sesiyi PAQ8OAlgoritmPAQ vikoristovuye algoritm en yakij pov yazanij iz algoritmom stisnennya PPM Pri comu kompresiya podilyayetsya na dvi fazi modelyuvannya ta koduvannya PAQ vikoristovuye algoritm zmishuvannya kontekstiv yakij hoch i pov yazanij iz PPM vidriznyayetsya tim sho jmovirnist viniknennya nastupnogo simvolu rozrahovuyetsya na osnovi velikoyi kilkosti modelej zalezhnih vid riznih kontekstiv ale ne obov yazkovo poslidovnih U bilshosti versij PAQ dlya zboru statistiki peredbachennya jmovirnosti nastupnogo simvolu vikoristovuyut nastupni modeli n grami kontekst ostanni n bajt pered peredbachenim simvolom yak u PPM slovnikovi n grami yaki ignoruyut registr i neslovnikovi simvoli korisni v tekstovih danih ridkisni konteksti napriklad drugij ta chetvertij simvoli pered kodovanim korisni u deyakih binarnih formatah analogovi konteksti yaki skladayutsya z bitiv vishogo poryadku poperednih 8 abo 16 bitnih sliv korisni v multimedijnih fajlah dvovimirni konteksti korisni dlya zobrazhen tablic Dovzhina ryadku viznachayetsya znahodzhennyam povtoriv grup bajtiv specializovani modeli taki yak x86 vikonavchi fajli BMP TIFF abo JPEG zobrazhennya Ci modeli aktivuyutsya koli danij tip fajlu viznachayetsya Vsi versiyi PAQ peredbachayut i stiskayut za odin raz odin bit ale rozriznyayutsya v detalyah zastosuvannya togo yak peredbachennya kombinuyutsya j obroblyayutsya pislya Yak tilki bula viznachena peredbachena jmovirnist poyavi nastupnogo bitu bit stiskayetsya arifmetichnim koderom Isnuye tri sposobi dlya kombinuvannya peredbachen modelej u zalezhnosti vid versiyi PAQ vid PAQ1 do PAQ3 kozhne peredbachennya predstavleno paroyu bitovih lichilnikiv n0 n1 displaystyle n 0 n 1 Ci lichilniki kombinuvalis zvazhenim pidsumovuvannyam takim sho bilsha vaga viznachayetsya dovshim kontekstom u PAQ4 do PAQ6 peredbachennya kombinuvalis yak i v poperednomu vipadku ale vaga yaka nalezhit kozhnij modeli priznachalas tak shob bilsh tochni modeli otrimuvali perevagu u PAQ7 i piznishih versiyah vihid kozhnoyi modeli ye jmovirnistyu 0 4095 displaystyle 0 4095 na vidminu vid pari lichilnikiv jmovirnosti sumuyutsya za dopomogoyu shtuchnih nejronnih merezh PAQ1SSE i piznishi versiyi vikoristovuvali post obrobku peredbachennya shlyahom vtorinnoyi ocinki simvolu SSE Kombinovane peredbachennya ta nevelikij kontekst vikoristovuvalis dlya obirannya nastupnogo peredbachennya zgidno tablici Pislya togo yak simvol buv zakodovanij dani v tablici korektuvalis dlya zmenshennya pomilki peredbachennya Vtorinna ocinka simvolu mozhe buti ob yednana v odin proces iz riznimi kontekstami abo mozhe vikonuvatisya paralelno userednyuyuchis iz vihodami modelej Arifmetichne koduvannya Ryadok s stiskayetsya v bajtovij ryadok uyavlyayuchi chislo x u 256 znachnij sistemi vimiryuvannya big endian na intervali 0 1 yak P r lt s x lt P r s de P r lt s jmovirnist sho vipadkovij ryadok r takoyi zh samoyi dovzhini yak s leksikografichno mensh nizh s Zavzhdi mozhna znajti takij ryadok x sho jogo dovzhina hocha b na odin bajt bula bilsha za limit Shennona log2 P r s bit Dovzhina s zberigayetsya na pochatku arhivu Arifmetichnij koder u PAQ zdijsnenij shlyahom zberezhennya verhnoyi ta nizhnoyi merezhi x dlya kozhnogo kroku peredbachennya spochatku 0 1 Pislya kozhnogo peredbachennya potochnij interval dilivsya proporcijno jmovirnosti togo sho nastupnij bit bude 0 potiv 1 na pidstavi poperednih bitiv s Nastupnij bit koduyetsya obirayuchi vidpovidnij interval nizhnoyi gradaciyi u viglyadi novogo intervalu Chislo x dekompresuyetsya v ryadok s iz identichnoyu seriyeyu bitovih peredbachen oskilki poperedni biti s vidomi Interval dilitsya yak pri stiskanni Chastina yaka mistit x staye novim intervalom i vidpovidnij bit dodayetsya do s U PAQ verhnya ta nizhnya mezha intervalu interpretuyutsya troma chastinami Najbilsh vazhlivi rozryadi po osnovi 256 odnakovi takim chinom voni mozhut buti zapisani yak starshi bajti x Nastupni 4 bajta zberigayutsya v pam yati tak sho starshij bajt vidriznyayetsya Molodshi biti peredbachayetsya sho ye nulyami dlya nizhnoyi mezhi ta vsi dlya verhnoyi mezhi Koduvannya zavershuyetsya zapisom she odnogo bajta z nizhnoyi mezhi Adaptivne zvazhuvannya modelej U PAQ versiyah do PAQ6 kozhna model vidobrazhala veliku kilkist riznih kontekstiv na paru lichilnikiv n0 displaystyle n 0 kilkist nulovih bitiv i n1 displaystyle n 1 kilkist odinichnih bitiv Dlya zbilshennya znachimosti piznishoyi istoriyi bitiv lichilnik zmenshuvavsya majzhe v dva razi koli protilezhnij bit zustrichavsya Napriklad potochnij stan modeli asociyuvannya z kontekstom n0 n1 12 3 displaystyle n 0 n 1 12 3 bit 1 sposterigayetsya na vihodi j lichilnik onovlyuyetsya do stanu 7 4 Bit stiskayetsya arifmetichnim koderom vidpovidno jogo jmovirnosti abo P 1 abo P 0 1 P 1 Jmovirnosti obchislyuyutsya zvazhenim pidsumovuvannyam lichilnikiv nuliv ta odinic S0 S1win0i displaystyle S 0 Sigma 1 w i n 0i S1 S1win1i displaystyle S 1 Sigma 1 w i n 1i S S0 S1 displaystyle S S 0 S 1 P 0 S0S displaystyle P 0 frac S 0 S P 1 S1S displaystyle P 1 frac S 1 S de wi displaystyle w i vaga i yi modeli Do PAQ3 vagi buli fiksovanimi j vstanovlyuvalis u vipadkovomu poryadku konteksti poryadku n mali vagu n Pochinayuchi z PAQ4 vagi obiralisya adaptivno v napryamku zmenshennya pomilki peredbachennya v odnakovih naborah kontekstiv Yaksho treba zakoduvati bit y to vagi priznachayutsya nastupnim chinom ni n0i n1i pomilka y P 1 wi wi Sn1i S1niS0S1 displaystyle w i gets w i frac S n 1i S 1 n i S 0 S 1 pomilkaNejronni merezhi dlya zmishuvannya Pochinayuchi z PAQ7 vihodom kozhnoyi modeli ye peredbachennya zamist pari lichilnikiv Peredbachennya userednyuyutsya v logistichnomu domeni xi stisnuti Pi 1 P 1 rozmiti Si wi xi de P 1 jmovirnist togo sho nastupnij bit bude odiniceyu a Pi 1 jmovirnist ocinena i yu modellyu jstisnuti x ln x 1 x rozmiti x 1 1 e x operaciya zvorotnya operaciyi stisnuti Pislya kozhnogo peredbachennya model onovlyuyetsya virivnyuvannyam vagi dlya zmenshennya cini stiskannya wi h xi y P 1 de h koeficiyent navchannya zazvichaj vid 0 002 do 0 01 y peredbachenij bit i y P 1 pomilka peredbachennya Algoritm onovlennya vagi vidriznyayetsya vid zvichajnogo u nejronnih merezhah navchayuchogo metodu zvorotnogo poshirennya pomilki v tomu sho dobutok P 0 P 1 ne vrahovuyetsya tomu sho meta nejronnoyi merezhi minimizaciya vartosti koduvannya a ne standartne vidhilennya Bilshist versij PAQ vikoristovuye nevelikij konekst pid chas viboru vag dlya nejronnoyi merezhi Deyaki versiyi vikoristovuyut 2 3 krokovi peredbachennya yaki skladayutsya z vidpovidno dvoh abo troh mnozhin nejronnih merezh Vihid kozhnoyi poperednoyi ye vihodom dlya nastupnoyi mnozhini merezh potuzhnist yakogo menshe Potim jde vtorinna ocinka simvolu Bilsh togo dlya kozhnogo vhidnogo peredbachennya mozhe buti dekilka vhodiv yaki ye nelinijnimi funkciyami Pi 1 u dopovnenni do stisnuti P 1 Kontekstne modelyuvannya Kozhna model podilyaye vhidnij potik bit s na mnozhinu kontekstiv i zobrazhuye kozhnij kontekst na stan istoriyi bitiv zobrazhene 8 bitami U versiyah do PAQ6 stan buv predstavlenij paroyu lichilnikiv n0 n1 U PAQ7 i piznishih versiyah stan mistiv za pevnih umov takozh ostannij bit i cilu poslidovnist Znachennya staniv vidobrazhayutsya u jmovirnosti vikoristovuyuchi 256 znachnu tablicyu Pislya tablichnogo peredbachennya v tablici virivnyuvalis zazvichaj do 0 4 dlya zmenshennya pohibki peredbachennya U vsih PAQ8 versiyah stan istoriyi bitiv mistit nastupnu informaciyu Tochna poslidovnist do 4 bitiv Para lichilnikiv i indikatoriv dlya ostannogo bitu dlya poslidovnostej vid 5 do 15 bit Para lichilnikiv dlya poslidovnostej vid 16 do 41 bitu Shob zberegti kilkist staniv rivnim 256 na lichilniki buli vvedeni nastupni obmezhennya 41 0 40 1 12 2 5 3 4 4 3 5 2 12 1 40 0 41 Yaksho lichilnik perevishuye limit nastupnij stan obirayetsya podibnim vidnoshennyam n0 n1 Takim chinom yaksho potochnij stan n0 4 n1 4 ostannij bit 0 ta 1 otrimana na vihodi todi novij stan ne n0 4 n1 5 ostannij bit 1 a n0 3 n1 4 ostannij bit 1 Bilshist kontekstnih modelej realizovani yak hesh tablici Deyaki neveliki konteksti realizovani yak indeksni masivi Poperednya obrobka tekstu Deyaki versiyi PAQ osoblivo PAsQDAa PAQAR obidvi pishli vid PAQ6 i vid PAQ8HP1 do PAQ8HP8 nashadki PAQ8 i ti sho zdobuli verh u Prizi Hattera obroblyayut tekst prodivlyayuchis jogo j zaminyayuchi slova z tekstu yaki mistyatsya v zovnishnomu slovniku 1 i 3 bajtnimi kodami Dodatkovo slova u verhnomu registri koduyutsya specialnim simvolom i perekladom u nizhnij registr U seriyi PAQ8HP slovnik organizovanij grupuvannyam sintaksichno ta semantichno shozhih sliv razom Ce dozvolyaye vikoristovuvati modeli yaki vikoristovuyut tilki verhni biti slovnikovih kodiv yak konteksti Primitki Mailcom com Arhiv originalu za 25 kvitnya 2015 Procitovano 19 travnya 2010 Arhiv originalu za 21 grudnya 2016 Procitovano 10 lipnya 2007 You may download use copy modify and distribute these programs under the terms of the GNU general public license