컴퓨터 과학에서 말하는 compression의 개념
1. 손실압축과 비손실압축
비손실압축은 압축된 자료를 원래 자료로 복원하면 그대로 원래 자료가 나오는 압축 방식
손실압축은 압축된 자료를 원래 자료로 복원해도 원래 자료 그대로 나올수가 없는 압축 방식
mp3같은 소리 압축 방식은 original 소리에 사람이 들어도 이해할 수 없는? 너무 저주파나 너무 고주파를 Fourier transform으로 잘라 남은 것을 합쳐 가청주파수로 만드는 방식
그러니까 복원해도 원래 original 소리로 완벽하게 나오지 않는 대표적인 손실 압축이다
2. Huffman coding
message에 대한 encoding 약속이 original message의 길이에 depend하는 방식
original message에 등장을 자주하는 단어는 적은 bit로 압축하고 등장을 자주하지 않는 단어는 많은 bit로 압축하는 방식
무조건 동일한 bit로 압축하는 것보다 효율적으로 압축이 가능하다.
original message에 자주 등장하는 C,A,D는 적은 2bit로 상대적으로 덜 등장하는 B는 3bit로 F,E는 4bit로 표현함
compression rate는 압축 전 16 byte / 압축 후 4.625 byte =3.4595가 맞는 것 같은데 오류로 추측
3. compression
original message를 code rule에 의해 새로운 message로 바꾸는 과정을 encoding이라 한다.
code rule의 반대인 inverse mapping을 적용하여 새로운 message를 original message로 바꾸는 과정을 decoding이라 한다.
특히 original message를 표현하기 위한 bit 수가 새로운 message를 표현하기 위한 bit수보다 많을 때, 즉 encoding을 하여 필요한 bit수가 줄어들면 compression이라고 부른다
compression은 encoding의 subset개념이라고 할 수 있다
길이가 아니라 bit수가 줄어야 compression
huffman coding만 봐도 coding한게 길이가 길잖아
------------------------------------------------------------------------------------------------------------------------------------------------
예시)
1 bit는 2^1으로 2가지 경우의 수인 0과 1을 표현할 수 있다.
2 bit는 2^2으로 4가지 경우의 수인 0,1,2,3을 표현할 수 있다.
비슷하게 32bit는 2^32으로 0부터 ( (2^32) - 1)까지 표현(음수를 고려하지 않은 정수만 생각할 경우)할 수 있다.
1byte는 8bit이다.
문자 1문자당 1byte로 가정
코드북에서 압축하면 0,1,2,3 4가지로 표현하므로 1글자당 2bit표현
1byte=8bit니까 2bit= (1/4) byte여서 4로 나눠서 byte를 구함
문자 1문자당 1byte라고 가정해서 문자 길이만큼 byte로 표현
코드북에서 0,1만 사용했으므로 압축시 문자 하나당 1비트 표현
1byte=8bit니까 1bit는 (1/8)byte이므로 8로 나눠서 byte를 구했음(len(encoded)/8)
압축률은 뜬금없이 4로 나눈걸 사용(len(encoded)/4)하였는데 오타라고 추측하고 있음
------------------------------------------------------------------------------------------------------------------------------------------------
4. compression rate
original model의 parameter 수가 a이고 compressed model의 parameter 수가 a*이다.
original model의 실행 시간이 s이고 compressed model의 실행시간이 s*이다.
compression rate는 a/a*이고 speedup rate는 s/s*이고 공간절약률 space save rate는 (a-a*)/a*
5. deep compression
서로 independent한 pruning, quantization, huffman coding의 적절한 조합으로 compression을 하는 방법을 제안한 논문
P,Q,H 순서대로 해서 P만 할 수도 P+Q만 할 수도 P+Q+H를 할 수도
방법을 추가함에 따른 compression rate가 어느정도인지 알려주고 있음
network 단위로도 압축해봤고 layer 단위로도 압축해보아서 accuracy는 약간 더 좋아졌지만 그에 비해 parameter 수를 획기적으로 줄였다면서 성능이 좋다는 것을 표로 제시했음
평균적으로 거의 40배 정도 줄였음
acuuracy는 약간 더 좋아졌는데?(에러가 약간 감소)
compress rate가 위에서 말한 #original parameter/#compressed parameter
pruning과 quantization이, 필요없는 weight를 제거하는 기법인데
VGG16은 앞단 layer에 필요없는 weight가 많이 몰려있다는 것을 짐작할 수 있음
압축을 많이해도 성능 차이가 거의 없으니까
network 특성일수도 있고 dataset때문일 수도 있고
pruning과 quantization을 조합한 기법이 model size 약 98%까지 압축해도 accuracy loss가 0%, 정확도 손해가 거의 없다는 것도 보였음
각종 기법들의 model size 압축률 대비 정확도 손해(accuracy loss) 정도를 그래프로 나타냄
x축에 11%부분은 89%를 압축했다는 뜻
'딥러닝 > light weight modeling' 카테고리의 다른 글
딥러닝 경량화 기법 pruning은 무엇이고 왜 등장했는가 (0) | 2022.11.09 |
---|---|
CPU,GPU,TPU,.... 여러가지 processing unit 알아보기 (0) | 2022.11.07 |
경량화 모델하면 가장 먼저 떠오르는 MobileNetV1의 핵심 아이디어 (0) | 2022.11.05 |
컴퓨터의 근본 원리가 된 finite state machine 개념 익히기 (0) | 2022.11.04 |
머신러닝 관점에서 information transmission (0) | 2022.11.03 |