Googles appar
Huvudmeny

Post a Comment On: cbloom rants

"09-14-10 - Challenges in Data Compression 2.5 - More on Sparsity"

8 Comments -

1 – 8 of 8
Blogger Matt Mahoney said...

Hey, you just gave me an idea to improve DMC. You build a state machine like regular DMC, but instead of predicting from the ratio of counts, feed the counts to a secondary model.

September 14, 2010 at 4:49 PM

Blogger Shelwien said...

> In these sensitive parts of the coder, you
> obviously want to use as much context as
> possible, but if you use too much your
> statistics become too sparse and you start
> making big coding mistakes.

In other words, the context quantization function
is a lossy compression function, but unlike
lossy media coders, we have a well defined
quality metric here.

> For example something that hasn't been explored
> very much in general in text compression is
> severely assymetric coders.

I guess you just missed it completely.
In text compression, there're preprocessors, like
http://www.ii.uni.wroc.pl/~inikep/
And in special cases, like Hutter Prize, people
put a lot of work into selection and arrangement
of words in the dictionary.

Also there're quite a few projects with
parameter optimization pass.
For example, see
http://sites.google.com/site/toffer86/m1-project
There's a "o" processing mode which builds a
model profile for given data samples (which
includes context masks and counter update
constants and the like).

There're also many other projects with a similar
approach (eg. epmopt and beeopt), and most of my
coders are made like that, just that it makes
more sense to use in the development stage than
in public utilities.

September 14, 2010 at 5:08 PM

Blogger Shelwien said...

> In these sensitive parts of the coder, you
> obviously want to use as much context as
> possible, but if you use too much your
> statistics become too sparse and you start
> making big coding mistakes.

In other words, the context quantization function
is a lossy compression function, but unlike
lossy media coders, we have a well defined
quality metric here.

> For example something that hasn't been explored
> very much in general in text compression is
> severely assymetric coders.

I guess you just missed it completely.
In text compression, there're preprocessors, like
http://www.ii.uni.wroc.pl/~inikep/
And in special cases, like Hutter Prize, people
put a lot of work into selection and arrangement
of words in the dictionary.

Also there're quite a few projects with
parameter optimization pass.
For example, see
http://sites.google.com/site/toffer86/m1-project
There's a "o" processing mode which builds a
model profile for given data samples (which
includes context masks and counter update
constants and the like).

There're also many other projects with a similar
approach (eg. epmopt and beeopt), and most of my
coders are made like that, just that it makes
more sense to use in the development stage than
in public utilities.

September 14, 2010 at 5:22 PM

Blogger Unknown said...

Increasing context length, as you mentioned sometimes hurt compresssion. But, moreover affects both speed and memory usage. If we try to see in a "lossy" way for context determination, we would definitely improve the compression. Because, "similar" statistics (context clustering) tend to do better prediction, thus improve compression, and "lossy context compression" enables it. That's one of the reason why we use FSM in our compressors (like BIT, M1, CCM, PAQ etc).

September 15, 2010 at 5:58 PM

Blogger cbloom said...

Yep, absolutely. My point is that that lossy quantization really should be adaptive, and we should be using some system that finds it for us based on what's optimal for the data. That doesn't exist yet, so we wind up usually hand tweaking it (or sometimes training it offline, I believe M1 does this).

There's not much of a theoretical formalism behind all this context merging and formation of the lossy FSM's, which means it's hard to tell how close they are to optimal and what's being left on the table.

September 15, 2010 at 6:18 PM

Blogger Unknown said...

M1 optimizes most of model parameters: context masks, weights, non-linear quantization buckets, including FSM construction parameters. Many recent context mixing compressors already tweaked by automated process (including all Shelwien's, Toffer's and my compressors).

BTW, Shelwien has an idea to compress bit history in a lossy way to use as useful context clustering.

September 15, 2010 at 11:57 PM

Anonymous Anonymous said...

I didn't think my crappy stb.h compressor was actually interesting, but I saw that Matt Mahoney's "DCE" book mentioned the NTFS compression file format and some numbers for it, and they seemed suspicious so I went and tested mine against it and found mine was actually better, despite having been written mainly to keep the source code small.

So I wrote mine up just for thoroughness, not that I think it really matters.

September 17, 2010 at 2:49 AM

Blogger cbloom said...

I believe LZ-NTFS is the infamous "Stac" algorithm which they sued MS for (and won) despite the fact that it was almost identical to well known works LZSS and LZRW1.

At the time MS was much hated, so lots of people cheered that David was punching Goliath, but in reality it was a travesty of patent abuse.

September 17, 2010 at 10:11 AM

You can use some HTML tags, such as <b>, <i>, <a>

This blog does not allow anonymous comments.

Comment moderation has been enabled. All comments must be approved by the blog author.

You will be asked to sign in after submitting your comment.