Kayıpsız sıkıştırma algoritmaları entropiyi azaltır mı?


35

Wikipedia'ya göre :

Shannon'un entropisi, bir mesajda yer alan bilgileri, mesajın belirlenen (veya tahmin edilebilir) kısmının aksine ölçmektedir. İkincisinin örnekleri, dil yapısındaki fazlalığı veya harf veya kelime çiftlerinin, üçüzlerin ve benzerlerinin oluşum sıklıklarına ilişkin istatistiksel özellikleri içerir.

Bu yüzden entropi bir mesajda yer alan bilgi miktarının bir ölçüsüdür. Entropi kodlayıcıları, kayıpsız bir şekilde böyle bir mesajı, onu temsil etmek için gereken minimum bit sayısına sıkıştırmak için kullanılır (entropi). Bana göre bu, mükemmel bir entropi kodlayıcısı bir mesajı mümkün olduğunca kayıpsız şekilde sıkıştırmak için gerekli olan tek şey olabilir.

Ancak birçok sıkıştırma algoritması, mesajın entropisini azaltmak için entropi kodlamadan önce adımları kullanır.

Almanca'ya göre Vikipedi

Entropiekodierer, Kodierern kombiniert firmasında bir araya geldi. Dabei dienen vorgeschaltete Verfahren dazu, Entropie der Daten zu verringern.

İngilizcede:

Entropi kodlayıcıları sıklıkla diğer kodlayıcılarla birleştirilir. Önceki adımlar verilerin entropisini azaltmaya yarar.

yani bzip2, Entropy kodlamasını uygulamadan önce Burrows-Wheeler-Transform'u ve ardından Bir Öne Taşı özelliğini kullanır (bu durumda Huffman kodlaması).

Bu adımlar mesajın entropisini gerçekten azaltıyor mu, bu mesajda yer alan bilgilerin miktarını azaltmak anlamına mı geliyor? Bu bana çelişkili görünüyor çünkü bu, bilgilerin sıkıştırma sırasında kaybedilmesi ve kayıpsız dekompresyonun önlenmesi anlamına geleceği anlamına geliyor. Yoksa entropi kodlama algoritmasının etkinliğini artırmak için mesajı sadece dönüştürüyorlar mı? Yoksa entropi doğrudan mesajdaki bilgi miktarına karşılık gelmiyor mu?


1
Entropiyi tahmin etmenin bir yolu olabilir .
boru

Yanıtlar:


39

Entropinin birçok gündelik tanımı bu şekilde kafa karıştırıcıdır, çünkü entropi bazen sunulan kadar düzgün ve düzenli değildir. Özellikle, Shannon entropisinin standart tanımı, yalnızca Vikipedi'nin dediği gibi, "bağımsız olaylardan kaynaklanan bilgiler katkı" dır.

Başka bir deyişle, bağımsız olaylar istatistiksel olarak bağımsız olmalıdır . Olmazlarsa, olayları tamamen bağımsız kılacak şekillerde tanımlayan verinin bir temsilini bulmanız gerekir. Aksi takdirde, entropiyi abartırsınız.

Başka bir şekilde ifade etmek gerekirse, Shannon entropisi genel olarak rastgele işlemlere değil, yalnızca gerçek olasılık dağılımlarına uygulanır. Shannon entropisinin varsayımlarına uymayan somut süreç örnekleri için ...

Markov süreçleri

Bir Markov süreci, en son olayın bir veya daha fazla önceki olaya bağlı bir dağıtımdan örneklendiği bir dizi olay oluşturur. Açıkçası, çok sayıda gerçek dünya olgusu, Markov süreçleri olarak, bağımsız ve bağımsız olasılık dağılımlarından daha iyi modellenmiştir. Örneğin: Şu anda okuduğunuz metin!

Bir Markov işleminin saf olarak hesaplanmış Shannon entropi oranı, her zaman işlemin gerçek entropi oranına eşit veya ondan daha büyük olacaktır . Sürecin gerçek entropisini elde etmek için, olaylar arasındaki istatistiksel bağımlılığı hesaba katmanız gerekir. Basit durumlarda, bu görünüm için formül şöyle :

H(S)=ipij pi(j)logpi(j)

Bu aynı zamanda temsil edilebilir şöyle :

H(Y)=ijμiPijlogPij

μi

Tüm bunlar, belirli bir olayın genel olasılığını hesaplayabilseniz bile, belirli olay dizilerinin bir Markov süreci tarafından yaratılan diğerlerinden daha muhtemel olduğunu söylemenin karmaşık bir yoludur . Örneğin, aşağıdaki üç İngilizce kelime dizgisi giderek daha az olasıdır:

  • Ağaca koştular
  • Ağaç onlara koştu
  • Koştukları ağaç

Ancak Shannon entropisi, üç dizenin tümünü eşit olarak değerlendirecektir. Markov süreci entropisi farkı hesaba katar ve sonuç olarak işleme daha düşük bir entropi oranı atar.

Entropi oranları modele bağlıdır

Uzaklaşırsanız, işte büyük resim: belirli bir olay dizisinden belirli bir olay dizisinin entropi oranı modele bağlıdır. Belirli bir dizi olaya, onları oluşturan süreci nasıl modellediğinize bağlı olarak farklı bir entropi hızı atayacaksınız.

Ve sıklıkla, süreç modeliniz tam olarak doğru olmayacak. Bu, sorunu çözmek için basit veya kolay değildir. Aslında, genel olarak, altında yatan sürecin ne olduğunu bilmiyorsanız, yeterince uzun ve karmaşık bir olay sırasına gerçek bir entropi oranı atamak imkansızdır . Bu algoritmik bilgi teorisinde merkezi bir sonuçtur .

Uygulamada ne anlama geldiği bilinmeyen bir olay dizisi kaynağı verildiğinde, farklı modellerin farklı entropiler üreteceği ve uzun vadede hangisinin doğru olduğunu bilmek mümkün değildir - en düşük entropiyi atayan birinin muhtemelen en iyisi olmasına rağmen.


2
Çok teşekkür ederim! Bu, mantığımdaki hatanın ne olduğunu tam olarak açıklıyor.
Robert

Modellenmiş süreçlere örnek olarak veri, görüntü ve ses kod çözücüleri olsaydı cevabınız daha da iyi olurdu. Örneğin, LZ veri sıkıştırmasında, model (D, L) gibi giriş komutları gibi bir makine (kod çözücü) varsaymaktadır: “geçerli çıkış pozisyonuna göre ofset D'den L bitişik sembollerin çıkışına kopyala” veya (c): “ c sembolünü geçerli çıkış konumuna kopyala ”. LZ kodlayıcı, giriş sembolü akışını kod çözücünün komut diline dönüştürür ve komut sembolü akışı kodlanmış akıştan farklı bir entropiye (ve uzunluğa) sahiptir. Diğer sıkıştırma türleri farklı makinelere sahiptir.
piiperi

@piiperi kulağa faydalı geliyor - Bu ayrıntılardan hiçbirini bilmiyorum. (Makine öğrenme açısından soruya geliyorum.)
gönderici

@senderle Bazı somut süreç örnekleriyle "Entropi oranları modele bağımlı" bölümünü genişletmeyi kastettim. Olayları meydana getiren bir süreçten bahsediyorsunuz ve veri, görüntü, video, ses vb. Kompresörlerin işleme bileşenleri bu işlemler olarak görülebilir. Saf bir entropi kodlayıcı, bir veri sıkıştırma boru hattının son adımıdır. Boru hattı adımlarının hiçbiri gerçekten "entropiyi azaltmıyor". Bunun yerine, her biri orijinal sembol akışını yeniden üretebilecek bir makine için talimatlar oluşturur. Ve her bir talimat akışının farklı bir entropiye ve genellikle farklı (yani daha kısa) bir uzunluğa sahiptir.
piiperi

12

Hayır, eğer algoritma kayıpsız ise, sıkıştırma sırasındaki hiçbir adım entropisini azaltamaz - aksi halde dekompresyon / kod çözme işlemi yapılamaz. Bununla birlikte, ilave entropi, "öne hareket" dönüşümünün kodunu çözmek için tutulması gereken liste gibi, "bant dışı" bilgilerde saklanabilir.


Öyleyse, entropi kodlayıcısının entropi kodlayıcısının entropiye yaklaşmasına izin vermek için kullanılmadan önce sıkıştırma algoritmalarında kullanılan ek adımlar var mı? Bir entropi kodlayıcısı, keyfi bir mesaja uygulandığında kendi başına entropiye yaklaşmaz mı?
Robert

Gerçekten de öyle değil (peki, "close" in tam anlamına bağlı olarak).
Grimmy

Ek adımlar, entropi kodlayıcısının, orijinal bilginin entropisini korurken, gereksiz bilgileri kendi başına uygulanmasına göre daha etkili bir şekilde azaltır. Ön işleme uygulansın da yapmasan da entropi korunur, ancak sıkıştırma daha az etkili olur (daha az verimli bir kodlama ile sonuçlanır).
Luke Schwartzkopff

Hayır, öne taşı dönüşümü, kod çözücüye aktarılması gereken ayrı bir liste çıkarmaz. İlk listeyi kastetmedikçe.
kullanıcı253751

Aah, haklısın, bu en iyi örnek değildi :)
Luke Schwartzkopff

6

Onlar azaltmak belirgin orijinal mesajın yapısı doğasında entropi. Ya da başka bir deyişle, bir sonraki sıkıştırma aşamalarının kuvvetlerinden yararlanmak için mesajı ayarlarlar.

Basit bir örnek, xml uç etiketlerindeki adı özel bir sembolle değiştirmek olabilir. Orijinal xml'yi bundan tamamen mükemmel bir şekilde yeniden oluşturabilirsiniz, ancak kompresörün tam adını o yere tekrar dahil etmesi gerekmez.

Daha gerçek dünyadan bir örnek, png sıkıştırmasıdır. Entropi kompresörü, Lempel-Ziff ve Huffman'ın bir kombinasyonu olan DEFLATE'dir. Bu, en sık tekrarlayan değerler ve modeller ile en iyi şekilde çalıştığı anlamına gelir. Bitişik piksellerin çoğu benzer renkler olma eğilimindedir. Böylece her satıra, orijinal piksel değerlerini bir diferansiyel kodlamaya dönüştüren bir filtre atanır. Bu şekilde, DEFLATE tarafından kodlanan son değerler çoğunlukla 0'a yakındır. Aşırı durumda, bu, LZ kısmının veya DEFLATE'in çok hızlı bir şekilde çalıştığı sıra boyunca tüm farklı değerlerden düzgün bir gradyanı tek bir değere dönüştürür.


Bu, görünen entropinin, bir mesajın gerçek bilgi içeriğinden farklı olduğu anlamına mı geliyor? Bunun mesajın gerçek entropisi ile ilgisi nedir?
robert

"görünen entropi" ile entropinin kodlayabildiği entropiyi kastediyorum. Farklı kodlayıcı, aradıkları farklı kalıplara sahip olacaktır. Huffman aynı birkaç semboller genellikle yeniden sıklıkla kullanıldığında, Lempel-ziff geleni yapar geleni yapar parçalar tekrar edildiğinde, vs.
mandal ucube

Fakat Lempel-Ziv algoritmaları entropi kodlama algoritmaları değildir, değil mi? Anlamadığım şey, neden entropi kodlayıcısının kendi başına sözde mesajı en aza indireceği zaman, örneğin LZMA'daki entropi kodlayıcılarından önce kullanılmalarıdır.
Robert

1
@kutschkem Bu ortalama entropi, bir mesajın bilgi içeriğinin mutlak bir ölçüsü değil, bir sembol olarak tanımlanmış olana göre mi (ör. tek bir karakter, bir sembol, bir bit bir sembol olarak kabul edilir) kabul edilir? Bunun varsayımlarımın nerede yanlış olduğunu açıklayacağını düşünüyorum.
robert

1
@ robert ... Yine de, Luke'un cevabında bahsettiği “bant dışı” bilgi olan bir tradeoff var, bu genellikle bu adımlarla eklenir (şifreli bilginin kodunu çözebilmek için arama tabloları). Bu nedenle, içeriğin tamamını tek bir sembol olarak tanımlamak ve onu 0 olarak kodlamak mantıklı değil çünkü bir yerde bu bilgilerin kodladığı yerde saklanması gerekir.
kutschkem

6

Entropi kodlayıcıları mesajı, onu temsil etmek için gereken minimum bit sayısına sıkıştırmaz. Bunu düşünmenin cazip olduğunu biliyorum ama yaptıkları şey bu değil. Sihir değiller ve bunu başaramazlar.

Bunun yerine, biraz daha az büyülü bir şey yaparlar - ama yine de faydalıdır. Mesajın her karakterinin bazı dağıtımlardan bağımsız olarak seçildiğini bildiğimiz anı varsayalım. Daha sonra mesajları en uygun şekilde sıkıştıran kayıpsız bir sıkıştırma algoritması oluşturmak mümkün olacaktır. Bu algoritmalara entropi kodlayıcı denir.

Şimdi, gerçek mesajlar genellikle bu bağımsızlık özelliğine sahip değildir. Örneğin, bir Q görürseniz, bir sonraki harfin bir U olması muhtemeldir. Her karakterin diğerlerinden bağımsız olarak seçilmediği gerçek bir mesaja bir entropi kodlayıcı algoritması uygulamak hala mümkündür. Algoritma hala kayıpsız olacak, sıkıştırma için hala kullanılabilir ve pratikte hala mesajın uzunluğunu kısaltacaktır. Ancak, mümkün olan en az uzunlukta onu kısaltmaz. İletiyi uzunluğu iletinin entropisine eşit olan bir şeye sıkıştırmaz; bundan daha az sıkıştırır.

Entropi kodlayıcıların bu özelliğini fark ettiğinizde, paradoks buharlaşır.

Genel olarak, kayıpsız herhangi bir adım hiçbir zaman mesajın entropisini azaltmaz. Bununla birlikte, mesajı başka bir sıkıştırma algoritmasının daha etkili olduğu bir forma sokabilir, bu yüzden pratikte hala yararlı olabilir.


2

"Entropy" kelimesi, genellikle biraz gevşek kullanılırsa, iki farklı şeye atıfta bulunmak için:

  • Bir mesajdaki veya sistemdeki "toplam bilgi miktarı"

  • Bilgi "yoğunluğu" veya bilgilerin ne kadar sıkı bir şekilde paketlendiği.

OP’nin Wikipedia’nın https://en.wikipedia.org/wiki/Entropy_(information_theory için yazdığı alıntı ) birincisine atıfta bulunur:

Shannon's entropy measures the information contained in a message

Ancak (en azından bunu yazarken) aynı makale şöyle başlar:

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

Yani biri bir miktar, biri ise orandır (mesafe ve hıza benzer). Bunlara bazen "kapsamlı" ve "yoğun" özellikler denir (bkz. Https://en.wikipedia.org/wiki/Intensive_and_extensive_properties#Extensive_properties ).

Farklılığın klasik bir örneği Paul Revere'nin ünlü fener sinyalidir: "biri kara, diğeri deniz". 1 bit toplam bilgi (eğer "henüz Kuzey Kiliseye gitmediysem yok" vakasını dikkate almazsak). Eğer Paul binanın her penceresine başka bir fener seti eklerse, bu '' '' gereksiz '' 'olurdu: daha fazla bilgi yok, yani aynı "toplam" veya "kapsamlı" entropi; ama çok daha fazla mesaj uzunluğu, çok daha düşük "yoğun" entropi.

Bu şekilde başlasa da, sadece bir fener seti kullanacak şekilde değişirse, OP'nin sorusunda olduğu gibi "kayıpsız sıkıştırma" dır. "Kapsamlı" entropi aynıdır, ancak "yoğun" entropi "farklıdır: 2. penceredeki fenerlerin sayısı, ilkinde gördüğünüz kaç kişi ile yüksek oranda ilişkiliyse, gereksiz mesaj daha öngörülebilirdir veya daha az rastgele, bu yüzden çok daha düşük yoğun entropiye sahiptir.

Hatırlanması gereken iki önemli şey daha var:

  • İlk önce, tipik olarak bir sistemin “gerçek” entropisini her iki anlamda da bilmiyoruz. Naif bir seyirci, "3 fenerin" farklı bir mesaj olup olmayacağını veya farklı penceredeki sinyallerin gereksiz olup olmadığını bilmiyor. Eğer Paul yolculuğunu bir alışkanlık haline getirirse, pencerelerin daima birbiriyle uyuşup uyuşmadığını sayabilir ve görebiliriz. Ama belki de nadir (ve belki de önemli!) İstisnaları görecek kadar seyretmedik.

  • İkincisi, nasıl ölçtüğünüz önemli. Her art arda gelen metin mektubu ile ne kadar iletildiğini tahmin etmeye çalışmayı düşünün (bu oran, "bazen" göreceli entropi "olarak da adlandırılan" yoğun "bir entropidir):

    • İnsanların 8 bitlik birimlerle etrafta metin gönderdiğini fark ederseniz, ilk "tahmininiz" harf başına 8 bit olabilir.
    • Kullanılan farklı harflerin sayısını sayarsanız, log2 (26) veya harf başına 4.7 bit (boşluk, dava vb. Dikkate alırsanız biraz daha yüksek) tahmin edersiniz.
    • "E" nin "z" harfinden "sonraki harf" için daha iyi bir bahis olduğunu düşünüyorsanız, harf sıklıklarını ölçüp 4.14'e çıkar (bkz. Http://people.seas.harvard.edu/~jones/cscie129/ kağıtları / stanford_info_paper / entropy_of_english_9.htm ).
    • Harf çiftlerini sayarsanız, "qu", "th", vb.
    • Yaklaşık 5 harfe kadar olan dizileri sayarsanız, daha düşük değerler elde edersiniz ve bir bonus olarak metnin hangi insan dilini güvenilir bir şekilde ayırt edersiniz).
    • "Basılı İngilizcenin İstatistiksel Yapısındaki Uzun Menzilli Kısıtlamaları" nda (Amerikan Psikoloji Dergisi 68 (1955)) NG Burton ve JCR Licklider kadar sert ve akıllıysanız, 10 sekansa kadar gidebilirsiniz. Üst üste 0000 harf ve başka bir entropi değeri bulun.

Ancak, elbette, mesajlar bu tür n-gram yöntemleriyle modellenmemiş birçok desene sahip olabilir, bu nedenle "gerçek" entropi hala daha düşüktür.

Kusursuz rastgele Zipfian belirteç dağılımına sahip teorik bir sonsuz kaynağı modelliyorsanız, sahip olabileceği kapsamlı ve yoğun entropiyi hesaplayabilirsiniz; bu, yalnızca olası farklı belirteçlerin sayısına bağlıdır. Her bir entropi türünün bu sayı arttıkça nasıl göründüğünün grafikleri [ http://www.derose.net/steve/writings/dissertation/Diss.0.html] 'dedir . İkisi oldukça farklı davranıyor:

Umarım yardımı olur ya da en azından ilginç ...


1

Almanca Vikipedi'deki ifadelerin yanlış olduğundan şüpheleniyorum. Kompresörler entropiyi arttırır. Yani, genel entropi değil, bit başına entropi : bilgi yoğunluğu. Örneğin bazı yoğunluğa sahip kodlama ve sözlük şeması verileri yoğunlaştırmak için uygulanır. Artık aynı bilgi daha az bit halinde paketlendiğinden, her bir bit daha fazla bilgi taşır. Bir sonraki Huffman kodlaması da aynısını biraz daha yapar; bu sadece başka bir sıkıştırma katmanı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.