모델 경량화
: 비슷한 수준의 성능을 낼때, 더 적은 파라미터와 연산량을 가질 수 있도록 설계
- layer, network architecture,loss function optimizer hyper parameter, data에 따라서 달라질 수 있다.
-
Deep compression
- Pruning: 불필요한 가중치를 가지는 connection을 제거. weight가 극소하다? => 출력에 영향이 적다 => 불필요
- Quantization
- Encoding: huffman encoding
-
Knowledge Distillation
- 상대적으로 작은 모델이 이미 학습된 모델과 유사한 출력을 가질 수 있도록 학습.
-
Loss function, Fine tuning, optimizer, Training Techniques등등이 존재한다
-
이러한 방법들은 이미 heavy한 모델이 학습된 후에 진행 가능.
가볍게 Design
- 모델을 가볍게 만들고 위의 방법들을 적용하면 더 가벼운 모델을 완성 가능!
- Convolution Layer과 Fully connected Layer
- FC layer : 다양한 변화에 대응하기 어려움. 해상도에 비례하는 파라미터 수
- Convolution layer: 인접 픽섹사이에 존재하는 패턴을 학습. 다양한 변화에 상대적으로 자유로움.
- 하지만, 과도하게 복잡한 모든 패턴을 찾는 것은 그만큼 학습에 좋지않을 수 있음. 어플리케이션에 적용하기에는 모델이 너무 무거워질 수 있음. 과도한 비용, 오버피팅의 위험, 불필요한 요소들이 있을 수 있음.(불필요한 채널을 연산하는 문제)
- Residual Connection
: 입출력 영상에 대한 더 다양한 representation 가능
- Dilated convolution
- contextual information 반영할 수 있는 receptive field를 넓힐 필요가 있음.
- 다른 receptive field를 넓히는 방법 : 커널크기 확장, 더 많은 컨볼루션 레이어의 적층 => 효과가 매우 이상적인 것은 아님.. => dilated convolution
- 기존 컨볼루션 레이어의 stride,polling으로 발생하는 정보 손실을 줄임
- segmentation에서 많이 쓰임
- Point-wise Convolution
- 1*1 conv layer
- 입력영상에 대한 spatial feature는 추출하지 않음. 출력 영상에 대한 크기 변화없이 채널 조절 가능. => dimension reduction => 출력 채널을 줄여 연산량과 파라미터 수를 줄일 수 있다.
- ResNet, Inception, squeezeNet
- Grouped Convolution
- 입력 영상의 채널들을 여러개의 그룹으로 나누어 독립적인 convolution 수행
- 더 적은 파라미터 수와 연산량을 가진다
- 각 그룹의 높은 correalation을 가짐
- 그룹수를 조정하며, 독립적인 필터 그룹을 조정=>그룹수는 hyperparameter가 됨 => group이 많아 지면 오히려 성능이 줄어들수 있음.
- 같은구조를 가지는 독립적 network로 볼 수 있게돼 의미가 없다고 보는 경우도 있음..
- Depth-wise Convolution
- 채널마다 따로 필터를 학습하는 방법. 각 단일 채널에 대해서만 수행되는 필터들을 사용. 각 채널 고유의 spatial한 정보.
- Depth-wise Seperable Convolution
- spatial feature을 찾는것과 채널간의 feature를 찾는것을 factorization
- 연산량이 줄어들음
- Squeezenet
- 더 큰 feature map사용 => 성능 향상 : subsampling을 나중에
- 너무 많은 채널은 연산량 증가 : point-wise conv로 channel reduction
- 커널 크기가 작은 conv: 가능한 3*3conv를 1*1로 대체
- Fire Module
- Squeeze layer: point-wise conv로 channel reduction
- Expand layer: 3*3conv를 1*1로 대체
- Fire module + residual module
- AlexNet과 비슷한 성능, 그러나 경량
- MobileNet
- Point-wise conv의 적극적 사용: matrix-scalr multiplication으로
- Depth-wise Seperable conv: 계산 효율
- Resolution과 channel size보정을 통한 모델 경량화
- 연산량 1/9 파라미터 1/10 (Inception과 비교)
- 모델을 줄어도 많이 떨어지지 않는 성능
- ShuffleNet
- MobileNet: channel이 많아지면서 cost 증가
- 그룹을 나누고 gropued connection으로 relation을 만들어줌.(shuffle)
- MobileNet v2
- Inverted Residual connection
- Bottleneck with Expansion Layer
- Expansion Layer: 일반 conv는 채널의 수에 비례해 cost가 급격하게 증가해 bottleneck구조를 사용해 채널 reduction을 수행. 하지만 DWS conv는 채널 수에 영향을 받지 않는다. 따라서 입력단에서 channel 수를 늘려준다.=> spatial한 representation증가