Verringern verlustfreie Kompressionsalgorithmen die Entropie?

35

Laut Wikipedia :

Shannons Entropie misst die in einer Nachricht enthaltenen Informationen im Gegensatz zu dem Teil der Nachricht, der bestimmt wird (oder vorhersehbar ist). Beispiele für letztere sind Redundanz in der Sprachstruktur oder statistische Eigenschaften in Bezug auf die Häufigkeit des Auftretens von Buchstaben- oder Wortpaaren, Tripletts usw.

Die Entropie ist also ein Maß für die Informationsmenge, die in einer Nachricht enthalten ist. Entropiecodierer werden verwendet, um eine solche Nachricht verlustfrei auf die minimale Anzahl von Bits zu komprimieren, die erforderlich sind, um sie darzustellen (Entropie). Für mich sieht das so aus, als wäre ein perfekter Entropie-Encoder alles, was benötigt wird, um eine Nachricht so verlustfrei wie möglich zu komprimieren.

Viele Komprimierungsalgorithmen verwenden jedoch Schritte vor der Entropiecodierung, um angeblich die Entropie der Nachricht zu verringern.

Laut deutscher Wikipedia

Entropiekodierer werden häufig mit anderen Kodierern kombiniert. Dabei dienen vorgeschaltete Verfahren dazu, die Entropie der Daten zu verringern.

Auf Englisch:

Entropiecodierer werden häufig mit anderen Codierern kombiniert. Vorherige Schritte dienen dazu, die Entropie der Daten zu verringern.

dh bzip2 verwendet die Burrows-Wheeler-Transformation, gefolgt von einer Move-To-Front-Transformation, bevor die Entropiecodierung angewendet wird (in diesem Fall Huffman-Codierung).

Verringern diese Schritte wirklich die Entropie der Nachricht, was bedeuten würde, dass die in der Nachricht enthaltene Informationsmenge verringert wird? Dies erscheint mir widersprüchlich, da dadurch Informationen während der Komprimierung verloren gehen und eine verlustfreie Dekomprimierung verhindert wird. Oder transformieren sie lediglich die Nachricht, um die Effizienz des Entropiecodierungsalgorithmus zu verbessern? Oder entspricht die Entropie nicht direkt der Informationsmenge in der Nachricht?

Robert
quelle
1
Könnte eine Möglichkeit sein, die Entropie zu schätzen .
Pipe

Antworten:

39

Viele beiläufige Beschreibungen der Entropie sind auf diese Weise verwirrend, weil die Entropie nicht ganz so ordentlich ist, wie es manchmal dargestellt wird. Insbesondere sieht die Standarddefinition der Shannon-Entropie vor, dass sie nur dann gilt, wenn, wie Wikipedia es ausdrückt, "Informationen aufgrund unabhängiger Ereignisse additiv sind".

Mit anderen Worten, unabhängige Ereignisse müssen statistisch unabhängig sein. Wenn dies nicht der Fall ist, müssen Sie eine Darstellung der Daten finden, die Ereignisse so definiert, dass sie wirklich unabhängig sind. Andernfalls überschätzen Sie die Entropie.

Um es noch anders auszudrücken, die Shannon-Entropie gilt nur für wahre Wahrscheinlichkeitsverteilungen und nicht für zufällige Prozesse im Allgemeinen. Betrachten Sie für konkrete Beispiele von Prozessen, die nicht den Annahmen der Shannon-Entropie entsprechen, ...

Markov-Prozesse

Ein Markov-Prozess generiert eine Reihe von Ereignissen, bei denen das letzte Ereignis aus einer Verteilung abgetastet wird, die von einem oder mehreren vorherigen Ereignissen abhängt. Offensichtlich ist eine große Anzahl von realen Phänomenen besser als Markov-Prozesse als diskrete, unabhängige Wahrscheinlichkeitsverteilungen modelliert. Zum Beispiel: der Text, den Sie gerade lesen!

Die naiv berechnete Shannon-Entropierate eines Markov-Prozesses ist immer größer oder gleich der tatsächlichen Entropierate des Prozesses. Um die wahre Entropie des Prozesses zu erhalten, müssen Sie die statistische Abhängigkeit zwischen Ereignissen berücksichtigen. In einfachen Fällen ist die Formel für das sieht wie folgt aus :

H(S)=-ichpichj pich(j)Logpich(j)

Dies kann auch so dargestellt werden :

H(Y.)=-ichjμichPichjLogPichj

Wiederum zitiert Wikipedia hier " ist die asymptotische Verteilung der Kette" - das ist die Gesamtwahrscheinlichkeit, mit der ein bestimmtes Ereignis über einen langen Horizont hinweg eintreten wird.μich

Das ist alles eine komplizierte Art zu sagen , dass , selbst wenn man die Gesamtwahrscheinlichkeit eines bestimmten Ereignisses berechnen kann, bestimmte Sequenzen von Ereignissen sind wahrscheinlicher als andere durch einen Markov - Prozess erzeugt werden. So werden beispielsweise die folgenden drei englischen Wortfolgen immer unwahrscheinlicher:

  • Sie rannten zum Baum
  • Der Baum lief zu ihnen
  • Baum die sie rannten

Aber die Shannon-Entropie bewertet alle drei Zeichenfolgen als gleich wahrscheinlich. Die Markov-Prozessentropie berücksichtigt den Unterschied und weist dem Prozess daher eine niedrigere Entropierate zu.

Entropieraten sind modellabhängig

Wenn Sie weit herauszoomen, sehen Sie das große Ganze: Die Entropierate einer bestimmten Sequenz von Ereignissen aus einer unbekannten Quelle ist modellabhängig. Sie weisen einer bestimmten Reihe von Ereignissen eine andere Entropierate zu, je nachdem, wie Sie den Prozess modellieren, der sie generiert hat.

Und sehr häufig wird Ihr Modell des Prozesses nicht ganz korrekt sein. Dies ist kein einfaches oder leicht zu lösendes Problem. Tatsächlich ist es im Allgemeinen unmöglich, einer ausreichend langen und komplexen Folge von Ereignissen eine echte Entropierate zuzuweisen, wenn Sie nicht wissen, was der wahre zugrunde liegende Prozess ist. Dies ist ein zentrales Ergebnis der algorithmischen Informationstheorie .

In der Praxis bedeutet dies, dass unterschiedliche Modelle bei einer unbekannten Quelle von Ereignissequenzen unterschiedliche Entropien liefern, und es ist unmöglich zu wissen, welche auf lange Sicht korrekt ist - obwohl diejenige, die die niedrigste Entropie zuweist, wahrscheinlich die beste ist.

Senderle
quelle
2
Vielen Dank! Dies erklärt perfekt, was der Fehler in meiner Argumentation war.
Robert
Ihre Antwort wäre noch besser, wenn es Daten-, Bild- und Audio-Dekomprimierer als Beispiele für modellierte Prozesse gäbe. Bei der LZ-Datenkomprimierung geht das Modell beispielsweise von einer Maschine (Decoder) aus, die als Eingabebefehle (D, L) verwendet: Symbol c an die aktuelle Ausgabeposition kopieren “. Der LZ-Codierer transformiert seinen Eingabesymbolstrom in die Befehlssprache des Decodierers, und der Befehlssymbolstrom hat eine andere Entropie (und Länge) als der codierte Strom. Andere Kompressionsarten haben andere Maschinen.
Piiperi
@piiperi, das klingt hilfreich - ich kenne jedoch keine dieser Details. (Ich komme auf die Frage vom Standpunkt des maschinellen Lernens.)
Senderle
@senderle Ich wollte das Kapitel "Entropieraten sind modellabhängig" um einige konkrete Prozessbeispiele erweitern. Sie sprechen von einem Prozess, der Ereignisse generiert, und die Verarbeitungskomponenten von Daten-, Bild-, Video-, Audio- usw. Kompressoren können als solche Prozesse angesehen werden. Ein reiner Entropiecodierer ist der letzte Schritt einer Datenkomprimierungspipeline. Keiner der Pipeline-Schritte "reduziert wirklich die Entropie". Stattdessen erstellt jeder von ihnen Anweisungen für eine Maschine, die den ursprünglichen Symbolstrom reproduzieren kann. Und jeder Befehlsstrom hat eine andere Entropie und oft eine andere (dh kürzere) Länge.
Piiperi
12

Nein, wenn der Algorithmus verlustfrei ist, können keine Schritte in der Komprimierungssequenz seine Entropie verringern - andernfalls könnte er nicht dekomprimiert / dekodiert werden. Die zusätzliche Entropie kann jedoch in "Out-of-Band" -Informationen gespeichert werden - beispielsweise in der Liste, die verwaltet werden muss, um die Move-to-Front-Transformation zu decodieren.

Luke Schwartzkopff
quelle
Werden also die zusätzlichen Schritte in Kompressionsalgorithmen vor der Entropiecodierung verwendet, um dem Entropiecodierer zu ermöglichen, näher an die Entropie heranzukommen? Kommt ein Entropiecodierer nicht von sich aus der Entropie nahe, wenn er auf eine beliebige Nachricht angewendet wird?
Robert
In der Tat nicht (na ja, abhängig von der genauen Bedeutung von "schließen").
Grimmy
Die zusätzlichen Schritte ermöglichen es dem Entropiecodierer, die Entropie der ursprünglichen Nachricht beizubehalten, während überflüssige Informationen effektiver reduziert werden, als wenn sie allein angewendet würden. Unabhängig davon, ob Sie die Vorverarbeitung anwenden oder nicht, bleibt die Entropie erhalten, die Komprimierung wäre jedoch weniger effektiv (Sie würden am Ende eine weniger effiziente Codierung erhalten).
Luke Schwartzkopff
Nein, die Move-to-Front-Transformation gibt keine separate Liste aus, die an den Decoder übertragen werden muss. Es sei denn, Sie meinen die ursprüngliche Liste.
user253751
Aah, du hast recht, das war nicht das beste Beispiel :)
Luke Schwartzkopff
6

Sie reduzieren die scheinbare Entropie, die der Struktur der ursprünglichen Nachricht innewohnt. Mit anderen Worten, sie optimieren die Nachricht, um die Stärken der nächsten Komprimierungsstufen zu nutzen.

Ein einfaches Beispiel wäre, den Namen in den End-Tags von xml durch ein spezielles Symbol zu ersetzen. Sie können die ursprüngliche XML-Datei perfekt wiederherstellen, aber der Kompressor muss an dieser Stelle nicht erneut den vollständigen Namen angeben.

Ein realistischeres Beispiel ist die PNG-Komprimierung. Sein Entropiekompressor ist DEFLATE, eine Kombination aus Lempel-Ziff und Huffman. Dies bedeutet, dass es am besten mit Werten und Mustern funktioniert, die sich häufig wiederholen. Bei den meisten benachbarten Pixeln handelt es sich in der Regel um ähnliche Farben. So ist jeder Zeile ein Filter zugeordnet, der die ursprünglichen Pixelwerte in eine Differenzkodierung umwandelt. Auf diese Weise liegen die Werte, die von DEFLATE codiert werden, meist nahe bei 0. Im Extremfall wird dadurch ein gleichmäßiger Verlauf aller unterschiedlichen Werte in einen einzigen Wert in der gesamten Zeile umgewandelt, mit dem der LZ-Teil oder DEFLATE sehr schnell arbeitet.

Ratschenfreak
quelle
Bedeutet das, dass sich die scheinbare Entropie vom tatsächlichen Informationsgehalt einer Nachricht unterscheidet? Wie hängt das mit der tatsächlichen Entropie der Nachricht zusammen?
Robert
mit "scheinbare Entropie" meine ich die Entropie, auf die die Entropiecodierung herunterkomprimieren kann. Unterschiedliche Encoder haben unterschiedliche Muster, nach denen sie suchen. Huffman macht es am besten, wenn die gleichen Symbole oft wiederverwendet werden, Lempel-Ziff am besten, wenn Brocken wiederholt werden usw.
Ratschenfreak
Aber die Lempel-Ziv-Algorithmen sind keine Entropie-Kodierungsalgorithmen, oder? Was ich nicht verstehe, ist, warum sie vor Entropiecodierern in zB LZMA verwendet werden, wenn der Entropiecodierer alleine die Nachricht angeblich bereits auf das Minimum komprimieren könnte.
Robert
1
@kutschkem Bedeutet dies, dass die Entropie kein absolutes Maß für den Informationsgehalt einer Nachricht ist, sondern sich auf das bezieht, was als Symbol definiert ist (z. B. wird ein einzelnes Zeichen als Symbol betrachtet, während 1 Bit als Symbol betrachtet wird)? Ich denke, das würde erklären, wo meine Annahmen falsch waren.
robert
1
@robert ... Es gibt jedoch einen Kompromiss, nämlich die "Out-of-Band" -Information, die Luke in seiner Antwort erwähnt und die im Allgemeinen durch diese Schritte ergänzt wird (Nachschlagetabellen, um die codierten Informationen decodieren zu können). Es macht also keinen Sinn, den gesamten Inhalt als ein Symbol zu definieren und als 0 zu codieren, da die Informationen irgendwo gespeichert werden müssen, was diese 0 codiert.
Kutschkem
6

Entropiecodierer komprimieren die Nachricht nicht auf die minimale Anzahl von Bits, die zur Darstellung erforderlich sind. Ich weiß, es ist verlockend, das zu denken, aber es ist nicht das, was sie tun. Sie sind keine Magie und das können sie nicht erreichen.

Stattdessen machen sie etwas weniger Magisches - aber immer noch nützlich. Nehmen wir für den Moment an, dass wir wussten, dass jedes Zeichen der Nachricht unabhängig von einer Verteilung ausgewählt wurde. Dann wäre es möglich, einen verlustfreien Komprimierungsalgorithmus zu erstellen, der die Nachrichten optimal komprimiert. Diese Algorithmen werden als Entropiecodierer bezeichnet.

Jetzt haben echte Nachrichten normalerweise nicht diese Unabhängigkeitseigenschaft. Wenn Sie beispielsweise ein Q sehen, ist der nächste Buchstabe wahrscheinlich ein U. Und so weiter. Es ist weiterhin möglich, einen Entropie-Encoder-Algorithmus auf eine echte Nachricht anzuwenden, bei der nicht jedes Zeichen unabhängig vom Rest ausgewählt wird. Der Algorithmus ist weiterhin verlustfrei, kann weiterhin für die Komprimierung verwendet werden und verkürzt in der Praxis häufig die Länge der Nachricht. Es wird jedoch nicht auf die minimal mögliche Länge gekürzt. Sie komprimiert die Nachricht nicht zu etwas, dessen Länge der Entropie der Nachricht entspricht. es komprimiert es weniger als das.

Sobald Sie diese Eigenschaft von Entropie-Encodern erkennen, verflüchtigt sich das Paradoxon.

Im Allgemeinen verringert ein verlustfreier Schritt niemals die Entropie der Nachricht. Möglicherweise wird die Nachricht jedoch in eine Form gebracht, in der ein anderer Komprimierungsalgorithmus effektiver ist, sodass sie in der Praxis möglicherweise (im Durchschnitt) immer noch nützlich ist.

DW
quelle
2

Das Wort "Entropie" wird oft etwas locker verwendet, um sich auf zwei verschiedene Dinge zu beziehen:

  • Die "Gesamtmenge an Informationen" in einer Nachricht oder einem System

  • Die Informationsdichte oder wie dicht die Information gepackt ist.

Das Zitat von OP aus dem Wikipedia-Eintrag für https://en.wikipedia.org/wiki/Entropy_(information_theory) bezieht sich auf das erste:

Shannon's entropy measures the information contained in a message

Aber (zumindest wenn ich das schreibe) der gleiche Artikel beginnt mit:

Information entropy is the average rate at which information is produced by a stochastic source of data.

Einer ist also ein Betrag und einer eine Rate (ähnlich der Entfernung vs. Geschwindigkeit). Diese werden manchmal als "umfangreiche" und "intensive" Eigenschaften bezeichnet (siehe https://en.wikipedia.org/wiki/Intensive_and_extensive_properties#Extensive_properties ).

Ein klassisches Beispiel für diese Unterscheidung ist das berühmte Laternensignal von Paul Revere: "Eins zu Land, zwei zu Wasser". 1 Bit Gesamtinformation (wenn wir den Fall "Keine, wenn ich noch nicht in North Church angekommen bin" ignorieren). Wenn Paulus in jedem Fenster des Gebäudes eine weitere Reihe von Laternen anbringen würde, wäre dies überflüssig: keine weiteren Informationen, also dieselbe "totale" oder "umfangreiche" Entropie; aber viel mehr Nachrichtenlänge, so viel weniger "intensive" Entropie.

Wenn er so anfängt, sich aber ändert, um nur einen Satz Laternen zu verwenden, ist das "verlustfreie Komprimierung" wie in der Frage von OP. Die "umfangreiche" Entropie ist die gleiche, aber die "intensive" Entropie ist anders: Da die Anzahl der Laternen im zweiten Fenster in hohem Maße mit der Anzahl der im ersten Fenster gesehenen korreliert, ist die redundante Nachricht vorhersehbarer oder weniger zufällig, hat also viel weniger intensive Entropie.

Es gibt zwei weitere wichtige Dinge, an die Sie sich erinnern sollten:

  • Erstens kennen wir normalerweise die "wahre" Entropie eines Systems in keiner Weise. Ein naiver Zuschauer weiß nicht, ob "3 Laternen" eine andere Nachricht wären oder ob Signale in verschiedenen Fenstern redundant sind oder nicht. Wenn Paul seine Fahrt zur Gewohnheit macht, können wir zählen und sehen, ob die Fenster immer zueinander passen. Aber vielleicht haben wir nicht lange genug geschaut, um die seltenen (und wahrscheinlich wichtigen!) Ausnahmen zu sehen.

  • Zweitens ist es wichtig, wie Sie messen. Versuchen Sie zu schätzen, wie viel von jedem aufeinanderfolgenden Textbrief übermittelt wird (das ist eine Rate, also "intensive" Entropie, manchmal auch "relative Entropie" genannt):

    • Wenn Sie nur bemerken, dass Text in 8-Bit-Einheiten gesendet wird, beträgt Ihre erste "Schätzung" möglicherweise 8 Bit pro Buchstabe.
    • Wenn Sie die Anzahl der verwendeten unterschiedlichen Buchstaben zählen, würden Sie log2 (26) oder 4,7 Bits pro Buchstabe schätzen (ein bisschen höher, wenn Sie Leerzeichen, Groß- und Kleinschreibung usw. berücksichtigen).
    • Wenn Sie der Meinung sind, dass "e" eine bessere Wahl für "nächster Buchstabe" als "z" ist, messen Sie die Buchstabenhäufigkeit und erhalten ungefähr 4,14 (siehe http://people.seas.harvard.edu/~jones/cscie129/). papers / stanford_info_paper / entropy_of_english_9.htm ).
    • Wenn Sie Buchstabenpaare zählen, nehmen Sie Muster wie "qu", "th" usw. auf und erhalten ungefähr 3,56.
    • Wenn Sie Sequenzen mit bis zu 5 Buchstaben zählen, erhalten Sie noch niedrigere Werte, und als Bonus können Sie ziemlich zuverlässig erkennen, in welcher menschlichen Sprache der Text vorliegt.
    • Wenn Sie so hartnäckig und klug sind wie NG Burton und JCR Licklider in "Long-Range Constraints in der statistischen Struktur des gedruckten Englisch" (American Journal of Psychology 68 (1955)), können Sie bis zu 10 Folgen erhalten, 0000 Buchstaben in einer Reihe und finde noch einen weiteren Entropiewert.

Aber natürlich können (und tun) Nachrichten viele Muster haben, die nicht mit solchen n-Gramm-Methoden modelliert wurden, so dass die "wahre" Entropie immer noch niedriger ist.

Wenn Sie eine theoretische unendliche Quelle mit einer perfekt zufälligen Zipfian-Verteilung von Token modellieren, können Sie die umfangreiche und intensive Entropie berechnen, die nur von der Anzahl der möglichen unterschiedlichen Token abhängt. In [ http://www.derose.net/steve/writings/dissertation/Diss.0.html] sind Diagramme zu finden, wie jeder Entropietyp mit zunehmender Anzahl aussieht . Die beiden verhalten sich ganz unterschiedlich:

Hoffe das hilft oder ist zumindest interessant ...

TextGeek
quelle
1

Ich vermute, dass die Formulierung in der deutschen Wikipedia falsch ist. Kompressoren erhöhen die Entropie. Das heißt, nicht die Gesamtentropie, sondern die Entropie pro Bit : die Informationsdichte. Beispielsweise wird ein Lauflängencodierungs- und Wörterbuchschema angewendet, um die Daten zu verdichten. Jetzt wird dieselbe Information in weniger Bits gepackt, sodass jedes Bit mehr Information enthält. Die nachfolgende Huffman-Codierung macht ein bisschen mehr vom Gleichen; Es ist nur eine weitere Kompressionsschicht.

Kaz
quelle