views:

354

answers:

4

I've had some experience dealing with neural networks and probabilistic models, but I'm looking for a resource specifically regarding the practical use of artificial neural networks in data compression.

Any suggestions?

A: 

well... I think this will not help you so much... but anyway... try to look in universities sites; I always find the better materials about data compression on they!

Sorry for I don't to know a good answer =/

Elieder
A: 

http://www.scholarpedia.org/article/Hopfield_network

this can be a good start point (but I'm not sure that Hopfield net is what you really need, I didn't use NN for data compression).

Roman
+4  A: 

A Google search of this topic turned up nothing of any significance. This may just be a semantic problem, though, depending upon what exactly you mean by "data compression".

If, by this term, you mean lossless compression of any arbitrary type of data, then I'm not surprised that there's nothing out there about doing data compression with neural networks. Neural networks are more in the category of "fuzzy logic", in the sense that they (theoretically) yield similar outputs in the presence of similar (but not identical) inputs.

Neural networks could, perhaps, be used in situations where some loss of data was acceptable, like in audio or image compression. Here is a semi-interesting link on the subject of image compression with neural nets: http://www.comp.glam.ac.uk/digimaging/neural.htm

I'd say this area of research was pretty wide-open in general. However, this leads me into one of my favorite rants on the subject. Artificial neural networks were first developed decades ago, when the knowledge of how biological neurons function was much less than it is today. Even given the state of knowledge at the time, the artificial neural units they developed are light-years away from real neurons.

In neural network programming, neurons are basically conceived of as passive switches that weigh their inputs and then "decide" to either fire or not fire, which affects the input weights of the next layer of neurons, and so on, until the output layer is reached. Biological neurons really don't work like this; it's more accurate to say that real neurons have a sort of natural rate at which they fire action potentials, and the inputs from pre-synaptic neurons generally make a neuron fire at a faster or slower rate. I've never read an account of artificial neural networks that takes this phenomenon into consideration at all.

Here are some additional characteristics (off the top of my head) of biological neurons that I have never seen incorporated into artificial neural networks in any way, shape or form:

Axon length: the propagation of an action potential along a neuron's axon is actually a relatively slow process, so the length of a neuron's axon has a major effect on the timing of the overall structure.

Myelination: related to axon length, myelination speeds up the conduction of an action potential by at least an order of magnitude. In the human brain, not all neurons are myelinated, so this factor also has a significant effect on the timing of the structure.

Neurotransmitters: neurotransmitters are the chemicals released from the presynaptic neuron after an action potential, that float across the synapse and "lock" into receptors in the post synaptic neuron, either exciting or inhibiting (i.e. speeding up the firing rate or slowing it down) the receiving neuron. There are a number of different types of neurotransmitters in biological nervous systems, which is relevant because of:

Reuptake: the process by which neurotransmitter molecules are released from the post-synaptic neuron and reabsorbed by the pre-synaptic neuron. Reuptake rates are different for different neurotransmitters, and are further affected by some classes of drugs and hormones found in the brain.

Systemic factors: one well-known behavioral effect in nervous systems is the release of systemic factors like hormones into the bloodstream and into the brain. These chemicals are either actual neurotransmitters themselves (which, when released into the bloodstream, cause an effect as if each pre-synaptic neuron that uses that particular neurotransmitter just fired) or else are chemicals that inhibit the reuptake of particular neurotransmitters (which cause an effect as if each pre-synaptic neuron using that neurotransmitter that recently fired continues to fire away).

And much, much more. I first became interested in biological neurons and artificial neural networks almost 20 years ago, and I'm absolutely astonished at how little progress has been made in this area since then. The aspects of biological neurons I describe above are well known and easy to learn from Wikipedia or any introductory textbook on the subject, and yet these features are utterly and completely unrepresented in any artificial neural networks that I've ever seen or read about.

Sadly, I think this is a perfect example of how programmers tend to know nothing at all about any subjects other than computer programming. On the other hand, this might be a good thing: I don't want to live through a Terminator scenario.

Update: I forgot to mention the problem of aspects of artificial neural networks that aren't found in the real world at all. Back-propagation is the most conspicuous of these; there is absolutely nothing in real-world biological nervous systems that in any way, shape or form corresponds to this phenomenon.

MusiGenesis
+1 That's an awesome summary, but I can't help think that most of those are essentially implementation details for wetware, whereas the artificial neural nets are a abstraction of the fundamental mathematical behaviour. E.g. firing rate is modeled by the weighting. Problems emulating a massively parallel system like a real neural network mean that some simplifications have to be made for performance reasons.
Mike Houston
@Mike: I don't think most of these properties are wetware implementation details (awesome phrase, BTW). For example, it's known that when a presyntaptic neuron releases neurotransmitters across a synapse, and the postsynaptic neuron happens to fire an action potential immediately thereafter, the postsynaptic neuron will migrate receptors to the area of that synapse. The net effect is that the postsynaptic neuron becomes more responsive to that particular presynaptic neuron's input. It's possible that this phenomenon is responsible for what we call "learning" (or at least partially responsible)
MusiGenesis
Regarding simplification and performance, if I were actively working on something like this (and I really wish I was) I would start with emulating a simple critter's nervous system, like a cockroach, and save the human brain for later. Cockroaches have only about 1000 neurons or so, and their nervous system is so well understood that Japanese researchers are actually able to insert probes from a glued-on chip into cockroach neurons and actually drive the things around. You could probably emulate 1000 neurons on a Windows Mobile smartphone.
MusiGenesis
And when tackling something massively more complex like a human brain, parts of the overall circuitry could be replaced with more simple programming representations. For example, neuroanatomists have identified a common 4-neuron timer structure, where each pair of neurons stimulate each other while inhibiting the other pair; the result is an oscillating output that produces regularly-timed pulses, and might be the source of a behavioral phenomenon known as "scalar timing", where time-dependent behavior takes some multiple of a fundamental rate (as opposed to being continuously distributed).
MusiGenesis
A 4-neuron circuit could be replaced by a much simpler and less resource-consuming timer object, without affecting the overall behavior of the neural network. In general, it would probably be possible to simulate large parts of the human brain with simple programming structures that are not actually composed of simulated neurons, while still achieving the same or similar behavioral output.
MusiGenesis
My issue with existing "computational" neural nets is that what they're doing is not really a simplification of biological neurons. It's more like an abstraction or simplification that bears almost no relation to the biological model.
MusiGenesis
Do you by chance have any idea of what actually is like to develop something like neural networks? It's not about the "vision" of hwo they seem to work with animals. We need maths and guarantees of convergence, for example, which have nothing to do with biology at all.
devoured elysium
+1  A: 

Well, perhaps there are not many papers or resources directly talking about NN & compression together.

But the way I see it, if you're compressing some stream of data, there's at least a natural connection between being able to predict the next symbol and compression.

If your NN produces a vector of probabilities for what the next symbol is, you can then encode the actual symbol using arithmetic coding with those probabilities. Then the way to improve your compression ratios is simply to work on improving your NN's prediction accuracy.

jcd