무손실 압축 알고리즘이 엔트로피를 줄입니까?


35

Wikipedia 에 따르면 :

Shannon의 엔트로피는 결정된 (또는 예측 가능한) 메시지 부분과 반대로 메시지에 포함 된 정보를 측정합니다. 후자의 예는 언어 구조의 중복성 또는 문자 또는 단어 쌍의 발생 빈도, 삼중 항 등과 관련된 통계적 속성을 포함합니다.

엔트로피는 메시지에 포함 된 정보의 양을 측정 한 것입니다. 엔트로피 코더는 그러한 메시지를이를 나타내는 데 필요한 최소 비트 수 (엔트로피)로 무손실 압축하는 데 사용됩니다. 나에게 이것은 완벽한 엔트로피 인코더처럼 보입니다. 가능한 한 손실없이 메시지를 압축하는 데 필요한 모든 것입니다.

그러나 많은 압축 알고리즘은 엔트로피 코딩 전에 단계를 사용하여 메시지의 엔트로피를 감소시킵니다.

독일 위키 백과 에 따르면

Entropiekodierer 님이 anderen Kodierern kombiniert을 (를) 방문했습니다. Dabei dienen vorgeschaltete Verfahren dazu 님이 Entropie der Daten zu verringern에 있습니다.

영어로:

엔트로피 코더는 종종 다른 엔코더와 결합됩니다. 이전 단계는 데이터의 엔트로피를 줄이는 역할을합니다.

즉, bzip2는 엔트로피 코딩 (이 경우 허프만 코딩)을 적용하기 전에 Burrows-Wheeler-Transform 다음에 Move-To-Front-Transform을 사용합니다.

이 단계는 메시지의 엔트로피를 실제로 줄여서 메시지에 포함 된 정보의 양을 줄입니까? 압축 중에 정보가 손실되어 무손실 압축 해제를 방지한다는 의미이므로 모순되는 것처럼 보입니다. 아니면 단순히 엔트로피 코딩 알고리즘의 효율성을 향상시키기 위해 메시지를 변환합니까? 아니면 엔트로피가 메시지의 정보량과 직접적으로 일치하지 않습니까?


1
엔트로피 를 추정 하는 방법 일 수 있습니다 .
파이프

답변:


39

엔트로피가 때때로 제시된 것만 큼 깔끔하고 깔끔하지 않기 때문에 엔트로피에 대한 많은 평범한 설명이 혼란 스럽습니다. 특히, Shannon 엔트로피 의 표준 정의는 Wikipedia에서 언급 한 것처럼 "독립적 인 사건으로 인한 정보가 부가 적"일 때에 만 적용된다고 규정하고 있습니다.

다시 말해 독립 사건은 통계적으로 독립 해야합니다 . 그렇지 않은 경우, 이벤트를 정의하여 독립적 인 방식으로 이벤트를 정의하는 데이터의 표현을 찾아야합니다. 그렇지 않으면 엔트로피를 과대 평가합니다.

또 다른 방법으로 Shannon 엔트로피는 일반적인 확률 분포에만 적용되며 일반적으로 임의의 프로세스에는 적용되지 않습니다. Shannon 엔트로피의 가정에 맞지 않는 프로세스의 구체적인 예를 보려면 다음을 고려하십시오.

마르코프 프로세스

Markov 프로세스는 하나 이상의 이전 이벤트에 종속 된 분배에서 최신 이벤트를 샘플링하는 일련의 이벤트를 생성합니다. 분명히 많은 수의 실제 현상이 이산적이고 독립적 인 확률 분포보다 마르코프 프로세스로 더 잘 모델링됩니다. 예를 들어 : 지금 읽고있는 텍스트!

순진하게 계산 된 Markov 프로세스의 Shannon 엔트로피 속도는 항상 프로세스의 실제 엔트로피 속도 보다 크거나 같습니다 . 프로세스의 진정한 엔트로피를 얻으려면 이벤트 간의 통계적 의존성을 고려해야합니다. 간단한 경우에 대한 수식은 다음 과 같습니다 .

H(에스)=나는나는j 나는(j)로그나는(j)

이것은 또한 다음 과 같이 표현 될 수 있습니다 :

H(와이)=나는jμ나는나는j로그나는j

다시 Wikipedia를 인용하면, 여기서 " 는 체인 의 점근 적 분포 "입니다. 즉, 주어진 사건이 긴 수평선에서 일어날 확률입니다.μ나는

주어진 이벤트의 전체 확률을 계산할 수 있다고해도 특정 이벤트 시퀀스 가 다른 이벤트보다 Markov 프로세스에 의해 생성 될 가능성이 높다는 것을 말하는 것은 복잡한 방법입니다 . 예를 들어, 다음 세 줄의 영어 단어는 점점 더 적게 사용됩니다.

  • 그들은 나무에 달렸다
  • 나무는 그들에게 달렸다
  • 그들이 도망 갈 나무

그러나 Shannon 엔트로피는 세 줄을 모두 똑같이 평가합니다. Markov 프로세스 엔트로피는 차이를 고려하여 프로세스에 낮은 엔트로피 비율을 할당합니다.

엔트로피 비율은 모델에 따라 다릅니다

축소하면 다음과 같은 큰 그림이 있습니다. 알 수없는 출처의 특정 이벤트 시퀀스의 엔트로피 속도는 모델에 따라 다릅니다. 이벤트를 생성 한 프로세스를 모델링하는 방법에 따라 특정 일련의 이벤트에 다른 엔트로피 속도를 할당합니다.

그리고 종종 프로세스 모델이 정확하지 않을 것입니다. 이것은 간단하거나 해결하기 쉬운 문제가 아닙니다. 사실, 실제 기본 프로세스가 무엇인지 모르는 경우 충분히 길고 복잡한 일련의 이벤트에 실제 엔트로피 속도 를 할당하는 것은 불가능합니다 . 이것은 알고리즘 정보 이론 의 중심 결과입니다 .

실제로 의미하는 바는 일련의 알려지지 않은 사건의 근원이 주어지면, 다른 모델이 다른 엔트로피를 산출 할 수 있으며, 가장 낮은 엔트로피를 할당하는 것이 아마도 최선 일지라도 장기적으로 어느 것이 올바른지를 알 수는 없다는 것입니다.


2
대단히 감사합니다! 이것은 내 추론의 실수가 무엇인지 완벽하게 설명합니다.
로버트

모델링 된 프로세스의 예로 데이터, 이미지 및 오디오 압축 해제 기가 있으면 대답이 훨씬 좋습니다. 예를 들어 LZ 데이터 압축에서 모델은 (D, L)과 같은 입력 명령으로 사용되는 기계 (디코더)를 가정합니다. "현재 출력 위치를 기준으로 오프셋 D에서 L 개의 연속 된 심볼을 출력하기위한 복사"또는 (c) : " 기호 c를 현재 출력 위치로 복사하십시오”. LZ 인코더는 입력 심볼 스트림을 디코더의 명령 언어로 변환하고, 명령 심볼 스트림은 인코딩 된 스트림과 다른 엔트로피 (및 길이)를 갖는다. 다른 압축 유형에는 다른 시스템이 있습니다.
piiperi

도움이되는 것처럼 들리는 @piiperi – 자세한 내용은 모르겠습니다. (나는 기계 학습 관점에서 질문에오고있다.)
senderle

@senderle 필자는 구체적인 프로세스 예제를 통해 "엔트로피 속도는 모델에 따라 다릅니다"장을 확장하는 것을 의미했습니다. 이벤트를 생성하는 프로세스에 대해 이야기하고 데이터, 이미지, 비디오, 오디오 등 압축기의 처리 구성 요소를 이러한 프로세스로 볼 수 있습니다. 순수한 엔트로피 코더는 데이터 압축 파이프 라인의 마지막 단계입니다. 파이프 라인 단계 중 어느 것도 실제로 "엔트로피를 줄이지"않습니다. 대신, 각각은 원래 심볼 스트림을 재생할 수있는 머신에 대한 명령어를 만듭니다. 그리고 각각의 명령 스트림은 다른 엔트로피 및 종종 다른 (즉, 더 짧은) 길이를 갖는다.
piiperi

12

알고리즘이 손실이없는 경우 압축 시퀀스의 어떤 단계도 엔트로피를 줄일 수 없습니다. 그렇지 않으면 압축 해제 / 디코딩 할 수 없습니다. 그러나, 추가적인 엔트로피는 '앞으로 이동'변환을 디코딩하기 위해 유지되어야하는리스트와 같은 '대역 외'정보에 저장 될 수있다.


엔트로피 코딩 전에 엔트로피 코더가 엔트로피에 가까워 지도록하기 위해 압축 알고리즘에 사용되는 추가 단계가 있습니까? 임의의 메시지에 적용될 때 엔트로피 코더 자체가 엔트로피에 근접하지 않습니까?
로버트

실제로는 그렇지 않습니다 ( "닫기"의 정확한 의미에 따라).
Grimmy

추가 단계를 통해 엔트로피 인코더는 원본 메시지의 엔트로피를 유지하면서 불필요한 정보를 자체적으로 적용하는 것보다 더 효과적으로 줄일 수 있습니다. 전처리 적용 여부에 관계없이 엔트로피는 유지되지만 압축은 덜 효과적입니다 (엔코딩이 덜 효율적입니다).
Luke Schwartzkopff

아니요, 전면 이동은 디코더로 전송해야하는 별도의 목록을 출력하지 않습니다. 초기 목록을 의미하지 않는 한.
user253751

Aah, 당신 말이 맞아요, 그건 최고의 예가 아니 었습니다 :)
Luke Schwartzkopff

6

원본 메시지의 구조에 내재 된 겉보기 엔트로피를 줄 입니다. 즉, 다음 압축 단계의 장점을 활용하도록 메시지를 조정합니다.

xml의 ​​끝 태그에있는 이름을 특수 기호로 바꾸는 간단한 예가 있습니다. 원래 XML을 완벽하게 다시 만들 수는 있지만 압축기는 해당 위치에 전체 이름을 다시 포함시킬 필요가 없습니다.

보다 실제적인 예는 png 압축입니다. 엔트로피 컴프레서는 DEFLATE이며, Lempel-Ziff와 Huffman의 조합입니다. 이는 자주 반복되는 값과 패턴에 가장 적합합니다. 대부분의 인접 픽셀은 유사한 색상 인 경향이 있습니다. 따라서 각 행에는 원래 픽셀 값을 차등 인코딩으로 바꾸는 필터가 할당됩니다. 이 방법으로 DEFLATE에 의해 인코딩 된 값은 대부분 0에 가깝습니다. 극단적 인 경우 LZ 부분 또는 DEFLATE가 매우 빠르게 작업하는 행 전체에서 모든 다른 값에서 단일 값으로 부드러운 그라데이션을 설정합니다.


그것은 명백한 엔트로피가 메시지의 실제 정보 내용과 다르다는 것을 의미합니까? 그것은 메시지의 실제 엔트로피와 어떤 관련이 있습니까?
로버트

"겉보기 엔트로피"와 함께 나는 엔트로피 인코딩이 압축 할 수있는 엔트로피를 의미한다. 엔코더마다 찾는 패턴이 다릅니다. 허프만은 자주 사용되는 동일한 기호가 자주 재사용 될 때 가장 잘 수행되며, 청크가 반복되는 경우에는 lempel-ziff가 가장 잘 수행됩니다.
ratchet freak

그러나 Lempel-Ziv 알고리즘은 엔트로피 코딩 알고리즘이 아닙니다. 내가 이해하지 못하는 것은 엔트로피 코더 자체가 이미 메시지를 최소로 압축 할 수있을 때 LZMA와 같이 엔트로피 코더 전에 왜 사용되는지입니다.
로버트

1
@kutschkem 이것은 엔트로피가 메시지의 정보 내용을 절대적으로 측정하는 것이 아니라 기호로 정의 된 것과 관련이 있습니까 (예 : 단일 문자는 기호로 간주되고 1 비트는 기호로 간주 됨)? 나는 그것이 내 가정이 잘못되었다고 설명 할 것이라고 생각합니다.
로버트

1
@robert ... 그러나 트레이드 오프가 있습니다. 루크가 대답에서 언급 한 "대역 외"정보는 일반적으로 해당 단계 (인코딩 된 정보를 디코딩 할 수있는 조회 테이블)에 의해 추가됩니다. 따라서 전체 내용을 하나의 심볼로 정의하고이 0으로 인코딩 된 정보를 저장해야하는 곳에 0으로 인코딩하는 것은 의미가 없습니다.
kutschkem

6

엔트로피 코더는 메시지를 나타내는 데 필요한 최소 비트 수로 메시지를 압축하지 않습니다. 나는 그것을 생각하고 싶은 유혹을 알고 있지만, 그들이하는 일은 아닙니다. 그들은 마술이 아니며 그것을 달성 할 수 없습니다.

대신, 그들은 조금 덜 마술적인 일을하지만 여전히 유용합니다. 메시지의 각 문자가 일부 배포와 독립적으로 선택되었다는 것을 알고 있다고 가정 해 봅시다. 그러면 메시지를 최적으로 압축하는 무손실 압축 알고리즘을 구축 할 수 있습니다. 이러한 알고리즘을 엔트로피 인코더라고합니다.

이제 실제 메시지에는 일반적으로 해당 독립 속성이 없습니다. 예를 들어 Q가 표시되면 다음 문자가 U 일 가능성이 높습니다. 엔트로피 엔코더 알고리즘을 실제 메시지에 적용하는 것이 여전히 가능하며, 여기서 각 문자는 나머지 문자와 독립적으로 선택되지 않습니다. 알고리즘은 여전히 ​​손실이 없으며 압축에 계속 사용될 수 있으며 실제로는 종종 메시지 길이를 단축시킵니다. 그러나 가능한 최소 길이로 줄이지는 않습니다. 길이가 메시지의 엔트로피와 같은 것으로 메시지를 압축하지 않습니다. 그것은 그것보다 덜 압축합니다.

엔트로피 엔코더의 이러한 특성을 알게되면 역설이 증발합니다.

일반적으로 무손실 단계는 메시지의 엔트로피를 감소시키지 않습니다. 그러나 다른 압축 알고리즘이 더 효과적인 형식으로 메시지를 넣을 수 있으므로 실제로는 여전히 유용합니다 (평균).


2

"엔트로피"라는 단어는 종종 느슨하게 사용 된 경우 두 가지 다른 것을 나타냅니다.

  • 메시지 또는 시스템의 "총 정보량"

  • 정보 "밀도"또는 정보가 얼마나 밀접하게 포장되어 있습니까?

https://en.wikipedia.org/wiki/Entropy_(information_theory)에 대한 Wikipedia의 항목에 대한 OP의 인용문은 첫 번째를 나타냅니다.

Shannon's entropy measures the information contained in a message

그러나 (적어도 이것을 작성할 때) 동일한 기사로 시작합니다.

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

따라서 하나는 양이고 하나는 속도입니다 (거리와 속도와 유사). 이를 "확장"및 "집중"속성이라고도합니다 ( https://en.wikipedia.org/wiki/Intensive_and_extensive_properties#Extensive_properties 참조 ).

이 구별의 전형적인 예는 Paul Revere의 유명한 랜턴 신호입니다. 1 비트의 전체 정보 ( '북 교회에 아직 가지 않은 경우 아무도 없음'사례를 무시하는 경우) Paul이 건물의 각 창에 다른 랜턴 세트를 추가 한 경우 '중복' ''입니다. 더 이상 정보가 없으므로 동일한 "전체"또는 "확장"엔트로피입니다. 메시지 길이가 훨씬 길수록 "집중적 인"엔트로피가 훨씬 줄어 듭니다.

그가 그런 식으로 시작하지만 한 세트의 랜턴 만 사용하도록 변경되면 OP의 질문에서와 같이 "무손실 압축"입니다. "확장"엔트로피는 동일하지만 "집중"엔트로피는 다릅니다. 두 번째 창의 랜턴 수는 첫 번째에서 본 것과 많은 상관 관계가 있기 때문에 중복 메시지가 더 예측 가능하거나 덜 랜덤하므로 집중 엔트로피가 훨씬 낮습니다.

기억해야 할 두 가지 중요한 사항이 있습니다.

  • 첫째, 우리는 일반적으로 어떤 의미에서든 시스템의 "진정한"엔트로피를 모른다. 순진한 방관자는 "3 개의 랜턴"이 다른 메시지인지 또는 다른 창의 신호가 중복되는지 여부를 알지 못합니다. 폴이 그의 습관을 타는 경우, 우리는 창문이 항상 서로 일치하는지 계산하고 볼 수 있습니다. 그러나 아마도 우리는 드물고 (아마도 중요한!) 예외를 볼만큼 오래 보지 않았을 것입니다.

  • 둘째, 측정 방법이 중요합니다. 연속되는 각 문자로 의사 소통되는 양을 추정 해보십시오 (이는 "집중적 엔트로피"라고도하는 "집중적"엔트로피 비율입니다).

    • 사람들이 8 비트 단위로 텍스트를 보낸다는 것을 알면 첫 번째 "추정"은 문자 당 8 비트 일 수 있습니다.
    • 사용되는 고유 문자 수를 세면 log2 (26) 또는 문자 당 4.7 비트 (공백, 대소 문자 등을 고려하면 비트가 더 높음)로 추정됩니다.
    • "e"가 "z"보다 "다음 문자"에 더 나은 베팅이라고 생각하면 문자 빈도를 측정하고 약 4.14를 얻을 수 있습니다 ( http://people.seas.harvard.edu/~jones/cscie129/ 참조) . papers / stanford_info_paper / entropy_of_english_9.htm ).
    • 글자 쌍을 세면 "qu", "th"등과 같은 패턴을 선택하고 약 3.56을 얻을 수 있습니다.
    • 최대 약 5 글자의 시퀀스를 세어도 여전히 낮은 값을 얻을 수 있으며, 보너스로 텍스트의 인간 언어를 확실하게 구별 할 수 있습니다).
    • "인쇄 된 영어의 통계 구조에 대한 장기 제약 조건"(American Journal of Psychology 68 (1955))에서 NG Burton 및 JCR Licklider만큼 강력하고 영리한 사람이라면 최대 10 개의 시퀀스를 얻을 수 있습니다. 한 행에 0000 개의 문자가 있고 또 다른 엔트로피 값을 찾습니다.

물론, 메시지는 그러한 n-gram 방법으로 모델링되지 않은 많은 패턴을 가질 수 있으며, 따라서 "진정한"엔트로피는 여전히 낮습니다.

완벽하게 임의의 Zipfian 토큰 분포를 사용하여 이론적 무한 소스를 모델링하면 가능한 광범위하고 집중적 인 엔트로피를 계산할 수 있으며 가능한 고유 토큰 수에만 의존합니다. 숫자가 증가함에 따라 각 엔트로피 유형이 어떻게 보이는지에 대한 그래프는 [ http://www.derose.net/steve/writings/dissertation/Diss.0.html]에 있습니다. 두 가지는 매우 다르게 행동합니다 :

그것이 도움이되거나 최소한 흥미 롭기를 바라 라 ...


1

독일 위키 백과의 문구가 잘못되었다고 생각합니다. 압축기는 엔트로피를 증가시킵니다. 즉, 전체 엔트로피가 아니라 비트 당 엔트로피 : 정보 밀도. 예를 들어 데이터를 압축하기 위해 일부 실행 길이 인코딩 및 사전 체계가 적용됩니다. 이제 동일한 정보가 더 적은 비트로 압축되므로 각 비트에 더 많은 정보가 전달됩니다. 후속 허프만 코딩은 조금 더 동일하게 수행됩니다. 압축의 또 다른 레이어 일뿐입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.