논문 리뷰/경량화 논문 스터디

[논문 리뷰] 경량화 기술 동향

공부중인학생 2021. 9. 21. 19:38

- 경량화 기술 동향: https://ettrends.etri.re.kr/ettrends/176/0905176005/34-2_40-50.pdf 

 

 

최근 들어 여러 분야에서 딥러닝 모델이 만들어졌지만 경량 디바이스, 모바일 디바이스 등과 같은 컴퓨터 자원이 부족한 기기들에서는 직접 학습이나 추론을 진행하기에는 아직 부족한 점이 많습니다. 그래서 현재 경량 딥러닝 연구가 활발하게 진행 중입니다. 경량화를 통한 이점은 크게 본다면 다음과 같습니다.

 

1. 지연시간 감소

2. 민감한 개인 정보 보호 (?)

3. 네트워크 트래픽 감소 등

 

경량화 연구에는 알고리즘 자체를 적은 연산과 효율적인 구조로 설계하는 경량 딥러닝 연구와 만들어진 모델의 파라미터들을 줄여주는 모델 압축 등의 기법이 적용된 알고리즘 경량화 기술이 존재합니다. 간단하게 소개하자면

 

경량 딥러닝 알고리즘

  1.  CNN 계열의 모델에서 가장 많은 연산량을 요구하는 합성곱 연산을 줄이기 위한 효율적인 필터를 연구하고 있습니다. - AdderNet(Conv를 덧셈으로 진행하는 방법)
  2. 또 다른 방법으로는 신규 계층 구조를 설계하여 기본 단일 층별 연산에 그치지 않고 연산량과 피라미터 수를 줄이기 위한 잔여 블록(Residual Block), 병목 블록(Bottleneck Block)과 같은 형태를 반복적으로 쌓아 신경망을 구성하는 방법입니다.
  3. 마지막 방법으로는 기존 신경망 구조를 직접 설계하는 것이 아니라 모델 구조를 자동 탐색함으로써 모델을 자동화하거나 연산량 대비 모델 압축 비율을 조정하는 등의 다양한 자동 탐색 기술입니다. 이는 모바일 딥러닝과 같은 다양한 기기의 성능 대비 추론 속도가 중요한 경우 정확도, 지연시간, 에너지 소모량들에 강화 학습을 적용하여 탐색하는 기술입니다.  - NAS

 

 

알고리즘 경량화

  1. 파라미터가 가지는 표현력은 가능한 유지하면서 불필요한 가중치를 없애는 방법들입니다. 일반적인 딥러닝 모델은 과파라미터화 되어 있기 때문에 모델이 가지는 파라미터 값이 아주 작은 경우 정확도에 큰 영향을 미치지 못하는데 이 값을 모두 0으로 설정하는 방법인 Pruning
  2. 일반적인 모델의 가중치는 부동 소수점 값만 가지지만, 이를 특정 비트 수로 줄여 모델의 저장 크기는 줄이고 표현력을 유지하는 양자화
  3. 0과 1로 표현하여 표현력은 많이 줄이지만 정확도의 손실은 어느 정도 유지하며 모델의 저장 크기를 확연히 줄이는 이진화 

 

 

- 경량 딥러닝 알고리즘 = 새로운 알고리즘을 만듦

- 알고리즘 경량화 = 이전에 존재했던 알고리즘을 경량화 시킴

 

경량 딥러닝 알고리즘

 

- 모델 구조 변경 기술 

 

1. ResNet

 

깊은 신경망의 문제는 층이 깊어질수록 정확도가 저하되는 문제가 생깁니다. ResNet은 왼쪽과 같이 계층이 계속 쌓일 때, 최적의 H(x)를 찾는 문제를 출력과 입력의 차이(H(x)-F(x))로 목표를 변경하여 출력합니다. 길 x를 통해 파라미터 없이 바로 연결되는 구조로 바꾸고 연산량 관점에서 덧셈이 추가되는 형태로 문제를 단순화할 수 있게 합니다. 잔여를 학습하는 형태로 변경되어 이를 통해 더 깊은 신경망에도 쉽게 최적화가 가능해지고 늘어난 깊이로 정확도도 좋아집니다.

 

- 한 번에 연산하는 연산량 것이 아니라 잔여치(작은 수)를 합성곱으로 연산하고 이전 입력을 더해주어서 연산량이 더 줄어듦

- 최적화할 때 이전 입력이 덧셈으로 더해지는 형태라 기울기가 잘 전달됨, 잔여치 측정에 대한 기울기는 잘 전해지나? 옆에 모델과 비슷하게 3 conv를 지나는 구조인데

 

 

2. Densenet

기존 신경망의 여러 장점들을 모아 고안된 모델로 피쳐 맵을 더해주는 형태가 아닌 서로 연결하여 쌓아 가는 형태입니다. 모든 피쳐 맵을 계속해서 연결하면 채널 수가 많아질 수 있기 때문에, 각 레이어의 피쳐 맵 채널 수는 굉장히 작은 값을 사용합니다. (이 때문에 연산량이 줄어듬)

 

- 논문에서 "이미지 판별 문제(Image Classification)의 경우, 맨 마지막 층의 하이 레벨 피처에서만 사용하던 것이, 덴스 넷에서는 이전의 모든 층에서의 정보를 취득하는 형태가 가능하다."라고 했는데 무슨 의미일까?

 

 

3. Squeezenet

Squeezenet은 3x3 필터를 1x1필터로 대체하여 9배 더 적은 파라미터와 채널 수를 원하는 대로 설정할 수 있는 파이어 모듈 기법을 제안했습니다. 그리고 늦은 다운 샘플링 전략을 사용하여 한번에 필터가 볼 수 있는 영역을 좁혀 해당 이미지를 압축시키는 효과를 볼 수 있습니다.

 

- 효율적인 합성곱 필터 기술 

 

합성곱 연산을 진행할 때 채널 방향으로 모두 연산을 수행하여 하나의 특징을 추출하지 않고 채널별(Depthwise)로 합성곱을 수행한 다음 점별(Pointwise)로 연산을 나누어 전체 파라미터를 줄이는 합성곱 필터를 설계하는 연구 방식입니다.

 

 

1. Mobilenet

기존의 합성곱 필터를 채널 단위로 먼저 Depthwise Convolution 하고 그 결과를 하나의 픽셀(point)에 대하여 Pointwise Convolution으로 변경합니다. $3 \times 3$ 필터 연산에 대하여 약 8~9배 연산량 감소 이득이 있다고 합니다.

 

 

2. ShuffleNet

채널별(Dethwise) 개별 합성곱은 표현 성능은 그리 높지 않지만 연산량을 대폭 줄일 수 있기 때문에 현재까지 많이 사용되고 있습니다. ShuffleNet에서 점별 합성곱(Pointwise convolution) 시 특정 영역의 채널에 대해서만 연산을 취하는 형태로 설계하면 연산량을 많이 줄일 수 있습니다. 입력에서만 정보의 흐름을 취하는 대신에 입력의 각 그룹이 잘 섞일 수 있도록 Channel Shuffle을 해준 것이 핵심입니다.

 

 

 

- 경량 모델 자동 탐색 기술

 

다양하게 응용되는 분야로 필터를 설계하고 구현하는데 강화 학습을 통한 자동 탐색 기법입니다. 기존 신경망의 최적화는 MACs(Multiplier-Accumulators) 또는 FLOPS(Floating Operations Per Seconds) 에 의존하였으나 현재는 Latency(지연 시간)또는 Energy Consumption(에너지 소비량) 문제로 기준이 바뀌고 있습니다. 그에 따라 추론에 최적화된 신경망을 자동 생성하거나 연산량 대비 모델 압축비를 조정하는 데 사용되거나 신경망 생성, 훈련, 배포 과정을 크게 단축시킵니다.

 

- 자동으로 모델을 탐색해주니 이 기능의 지연 시간이나 에너지 소비량을 줄이는 것이 중요하다는 건가? 어떻게 됐든지 이 기능을 통해서 최적의 연산량을 가진 모델이 나오니 직접 설계할 때처럼 연산량에 집중할 필요가 없다?

 

- Latency는 실제 환경에서의 지연 시간인가 아니면 이 알고리즘의 지연 시간인가?

 

- ex) Task마다 prunning을 해도 되는 정도가 각각 다른데 이 부분을 알아서 설정해줌

 

 

1. NetAdapt

주어진 Budget을 만족하는 최적의 결과를 얻고자 이를 만족하기 위해 주어진 Budget을 여러 개로 나누어 한번에 일정만큼씩 만족하는 조건을 점차 찾는 방식입니다.

 

 

- Budget = 가지고 있는 컴퓨터 자원?, 자기가 가지고 있는 컴퓨터 자원을 사용하여 최적의 결과를 얻고자 하는 것인지?

- 한 번에 모든 Budget을 만족시키는 값은 찾기 힘들어서 여러 개로 나눠서 진행

 

 

2. MnasNet

모바일 환경에서 사용 가능한 네트워크 이면서 정확도와 속도가 균형을 이루는 모델을 찾는 탐색 방식입니다. 기존 NasNet보다 2, 4배 빠르게 실행되는 모델을 찾을 수 있습니다. MnasNet은 기존 모델 아키텍처의 구조는 다음과 같습니다.

 

1. 학습과 샘플링을 위한 RNN을 기반으로 한 Controller

2. 모델을 만들고 훈련시켜 정확도를 얻는 Trainer

3. 실제 모바일에서 추론 엔진으로 지연 시간과 Trainer의 정확도를 얻어 최적화를 해주는 강화 학습 알고리즘

 

Controller Trainer 

 

 

 

알고리즘 경량화

알고리즘 경량화는 효율적인 네트워크 구조를 설계하거나 합성곱 연산의 다양한 변이, 모델 자동 탐색과 같은 경량 알고리즘의 연구와 달리 기존의 알고리즘의 불필요한 파라미터를 제거하거나 파라미터 값을 공유하거나, 파라미터의 표현력을 잃지 않으면서 기존 모델의 크기를 줄이는 연구 분야입니다.

 

 

 

- 모델 압축 기술

 

1. Pruning

기존 신경망이 가지고 있는 가중치 중 실제 추론을 위해 필요한 값은 비교적 작은 값들에 대한 내성을 가집니다. 작은 가중치값을 모두 0으로 하여 네트워크의 모델 크기를 줄이는 방법입니다. 이후 연구에서는 Pruned 모델을 재훈련 과정에서 신경망을 세밀하게 조율하여 정확도를 높입니다. 비슷한 채널에 대해 가지치기 하는 방법들도 연구 중입니다.

 

- 대부분의 모델들이 과파라미터 형태여서 작은 값들은 0으로 만들어줘도 성능에 큰 변화가 없다. (연산량은 차지하지만 성능 진전에는 영향이 없는 파라미터들이 존재)

 

- 비슷한 채널 = 비슷한 특징을 찾는 필터로 굳이 동일한 특징을 2번 찾아 연산량을 늘릴 필요가 없다.

 

 

 

2. Quantization and Binarization

양자화와 이진화는 기존 신경망의 부동 소수점 수를 줄이는 것을 목적으로 합니다. 양자화는 특정 비트 수만큼으로 줄여서 계산을 하는 방식입니다.

 

ex) $32bit \rightarrow 8bit$

 

이진화는 신경망이 가지고 있던 가중치와 층 사이의 입력을 부호에 따라 -1, +1로 이진 형태의 값으로 변환시킵니다. 기존의 Floating Point를 사용하는 신경망들에 비해 용량과 연산량을 대폭 압축시킵니다.

 

 

 

3. Weight Sharing

가중치 공유 기법은 낮은 정밀도에 대한 높은 내성을 가진 신경망의 특징을 활용해 가중치를 근사하는 방법입니다. 기존 가중치값들은 근사한 값(코드북)을 통해 가중치들을 공유하는데 코드북과 그 값에 대한 인덱스만을 저장하는 구조이므로, 실제 저장 공간을 절약할 수 있습니다. 근사화하는 방식은 가중치들의 유사도에 기반하는데 K-Means 또는 Gaussian Mixture Model을 활용합니다.

 

 

 

- 지식 증류 기술

지식 증류(Knowledge Distillation) 기술은 앙상블 기법을 통해 학습된 다수의 큰 네트워크들로부터 작은 하나의 네트워크에 지식을 전달할 수 있는 방법 중 하나입니다. 큰 모델인 전문가(Experts, Teacher) 모델에서 출력은 일반적으로 특정 레이블에 대한 하나의 확률 값만을 나타내지만, 이를 확률 값들의 분포 형태로 변형하여 숙련가(Specialist, Student) 모델의 학습 시에 모델의 Loss와 전문가 모델의 Loss를 동시에 반영하는 형태로 학습합니다.

 

- Transfer learing과 지식을 전달한다는 공통점이 존재하지만 Transfer learning은 목적은 다른 도메인에 적용을 목적으로 하는 것이고 Knowledge Distillation은 같은 도메인 문제에 대해 적용하는 것

 

- (Transfer learing) + (유사 도메인에 적용) = Knowledge Distillation

 

- Transfer learning은 큰 모델의 가중치를 받아 진행하지만 Knowledge Distillation는 큰 모델과 작은 모델을 앙상블 하여 진행 (같은 도메인이라서 앙상블이 가능한 거 같습니다.) 

 

 

 

- 하드웨어 가속화 기술

1. 벡터/행렬 연산을 병렬 처리하기 위한 전용 하드웨어

2. TPU On-Device AI 응용 추론을 위한 전용 VPU 프로세스

3. GPU Cluseter 기반의 가속기

 

등등이 주요 IT 기업에서 연구 개발이 주도되고 있습니다. 최근에는 경량 디바이스, 임베디드 장치, 모바일 환경에 적용될 수 있는 가속기들로 경량 디바이스에서의 추론 연산 가속화가 이루어지고 있습니다.

 

 

- 모델 압축을 적용한 경량 모델 자동 탐색 기술

경량 딥러닝 알고리즘의 모델 설계를 자동화하기 위하여 합성곱 연산, 커널 크기, 필터 크기, 레이어의 개수 등 다양한  탐색 공간을 통하여 모델을 설계하는 것과 유사하게, 알고리즘 경량화도 모델 압축 기법의 Pruning, Quantization 등의 탐색 공간을 통한 자동화 연구가 진행 중입니다.

 

- 경량 알고리즘의 자동 탐색, NAS: Neural Architecture Search나 AutoML: Automated Machine Learning에 그치지 않고 모델 압축 자동 탐색, AutoMC: Automated Model Compression 형태로 연구되는 추세입니다.