Como medir praticamente a entropia de um arquivo?

9

Agora estou tentando medir muitas informações não redundantes (reais) do meu arquivo. Alguns chamam isso de quantidade de entropia.

É claro que existe o log p (x) padrão {p (x)}, mas acho que Shannon estava considerando apenas o ponto de vista da transmissão através de um canal. Portanto, a fórmula requer um tamanho de bloco (digamos em bits, 8 normalmente). Para um arquivo grande, esse cálculo é bastante inútil, ignorando correlações de curta a longa distância entre símbolos.

Existem métodos binários de árvore e Ziv-Lempel, mas estes parecem altamente acadêmicos por natureza.

A compressibilidade também é considerada uma medida de entropia, mas parece não haver um limite inferior quanto ao grau de compressão. Para o meu arquivo hiss.wav,

  • hiss.wav original = 5,2 MB
  • entropia via fórmula de Shannon = 4,6 MB
  • hiss.zip = 4.6 MB
  • hiss.7z = 4.2 MB
  • hiss.wav.fp8 = 3,3 MB

Existe algum método razoavelmente praticável para medir a quantidade de entropia existente no hiss.wav?

Paul Uszak
fonte
11
Não entendo o que você quer dizer com "altamente acadêmico".
David Richerby
Ardente morto. Eu pensaria que, com a escala global de dólares gastos em pesquisa para maximizar a transmissão e o armazenamento de dados, haveria uma maneira mais desenvolvida de estimar quanto do material danado com o qual você está lidando. Eu não pensaria além das possibilidades que haveria um utilitário de arquivo que você passasse sobre alguns dados que produzam a estimativa teórica da entropia. Apenas o que os fabricantes de telecomunicações e discos estão jogando?
Paul Uszak

Respostas:

9

Entropia é um recurso de uma variável aleatória . Um determinado arquivo tem zero entropia, pois é constante. A entropia faz sentido em muitas situações em que não há canal, e você pode aplicá-la a um conjunto aleatório de, por exemplo, arquivos WAV, gerados a partir de uma determinada fonte. Nesse caso, seu é o arquivo WAV inteiro .x

O arquivo WAV real (excluindo o cabeçalho) pode ser pensado para ser gerado por alguma fonte markoviana. Esta fonte produz amplitudes sonoras ("amostras") em uma sequência, cada uma dependendo das anteriores. Depois de executar o processo por muito tempo, a entropia de cada amostra (mais precisamente, a entropia condicional dada as amostras anteriores) fica muito próxima de algum valor limitador, que definimos como a entropia da fonte. A entropia de amostras é vezes esse número (no limite; novamente, com mais precisão, estamos medindo a entropia condicional). Lempel e Ziv mostraram que, se a entropia da amostra for bits , seu algoritmo comprime amostras paraNNHNHN+o(N)bits, com alta probabilidade (a probabilidade está acima das amostras). A compressão Lempel – Ziv é bastante popular na prática, usada, por exemplo, no gzipformato popular .

Devido a este resultado de Lempel e Ziv, a entropia de uma fonte pode ser aproximada comprimindo uma longa sequência de amostras usando o algoritmo Lempel – Ziv. Isso não estima a entropia das amostras específicas, que não é um conceito bem definido (uma sequência constante tem entropia zero), mas a entropia da fonte que a gera.

Um conceito relacionado é a entropia algorítmica , também conhecida como complexidade de Kolmogorov . É a duração do programa mais curto que gera seu arquivo. Essa quantidade faz sentido para um arquivo individual. No caso de um arquivo gerado por uma fonte aleatória, o teorema de Lempel – Ziv mostra que a entropia algorítmica de um arquivo é limitada, com alta probabilidade, por sua entropia de Shannon. Infelizmente, a entropia algorítmica não é computável, por isso é mais um conceito teórico.

Para completar a imagem, sugiro ler o artigo de Shannon sobre Predição e entropia do inglês impresso para uma abordagem diferente para estimar a entropia de uma fonte.

Yuval Filmus
fonte
Eu tenho. E o jornal Schurmann & Grassberger. Com base em suas entropias estimadas para o inglês, parece que a melhor estimativa de entropia que podemos obter é via compressão com uma variante PAQ8 como fp8. Meus resultados se casam muito bem com a prosa shakespeariana.
Paul Uszak
Parece que o problema é que eu pensaria que deve haver um valor teórico limitante para a entropia de uma fonte. A determinação por compressão reflete apenas a eficiência do algoritmo de compressão. Empiricamente, seu gzip é bom, mas 7z é melhor. E o FP8 é muito melhor, como mostrado na minha pergunta. Eu poderia achar que o hiss.wav contém apenas 10 bytes de entropia total quando eu uso o fp12000 em um futuro distante?
Paul Uszak
Entropia não é uma propriedade de um arquivo; todo arquivo individual tem zero entropia. Em vez disso, a entropia é uma propriedade de uma fonte aleatória. Uma medida de aleatoriedade apropriada para arquivos específicos é a complexidade de Kolmogorov (também conhecida como entropia algorítmica), mas infelizmente essa medida não é computável.
Yuval Filmus
Ao compactar um arquivo para estimar a entropia de uma fonte, você usa um teorema que garante que a taxa de compactação dos dados gerados pela fonte se aproxime da entropia da fonte. No entanto, os utilitários de compactação reais não aplicam o algoritmo vanilla Lempel – Ziv, mas uma versão mais prática. Se você deseja estimar a entropia, talvez deva reimplementar o algoritmo com esse objetivo em mente.
Yuval Filmus
Tirei uma discussão pouco construtiva; os comentários não são para discussões longas, exceto para melhorar o post em questão. Se você quiser discutir honestamente questões de entropia, crie uma sala de bate-papo. Lembre-se de mantê-lo civilizado.
Raphael