Home

[Lightweighting]Quantization

Quantization(양자화) 숫자의 정밀도(precision)를 낮추는 최적화 및 경량화 기법 여기에서 정밀도는 의도한 숫자를 얼마나 정확하게 표현할 수 있는지를 나타내는 것이다. 정밀도가 높을수록 표현력은 올라가기에 오차는 줄어들지만, 계산 속도는 느려지고, 정밀도가 낮아지면 표현력은 떨어져 오차가 증가하지만 계산 속도는 올라간다. 위와 같은 특징을 바탕으로 양자화는 오차를 최소화하는 낮은 정밀도 표현을 찾는 것이 목적이다. Quantization Mapping 높은 Precision 데이터를 낮은 Precision으로 대응시키는 Quantization 계산식을 말한다. 양자화를...

Read more

[Lightweighting]Knowledge Distillation

Knowledge Distillation(지식 증류) 경량화의 한 종류로서, 고성능의 Teacher 모델로부터 지식을 전달 받아 Student 모델을 학습 시키는 기법이다. 모델 성능 속도 파라미터 수 학습 Teacher 좋음 느림 많음 사전 학습 Student 보통(상대적으로 낮음) 빠름 적음 학습 대상 KD 분류 체계 KD 분류 체계는 Knowledge와 ...

Read more

[프로그래머스] 연속된 부분 수열의 합

문제 def solution(sequence, k): answer = [] st = 0 fi = 0 cur_sum = 0 min_len = len(sequence) while fi < len(sequence): cur_sum += sequence[fi] while cur_sum > k and st <= fi: # 합이 k를 초과하면 시작점을 이동 cur_sum -= sequence[st] st += 1 if cur_sum == k: # 조건을 만족하는 구간을 찾은 ...

Read more

[Lightweighting]Pruning

Pruning(가지 치기) Pruning이란 신경망 모델에서 노드나 연결을 제거하여 모델의 크기와 계산 비용을 줄이는 기법이다. 전체적인 과정을 보면 우선 특정 알고리즘을 통해 제거할 파라미터를 판별하여 제거한다. 파라미터들을 서로 의존적인 경향이 있어 이렇게 제거하게 되면 성능이 많이 떨어지게 된다. 이를 방지하기 위해 Fine-Tunning을 하여 최종 모델을 만들어 평가한다. 이러한 과정을 통해 메모리 사용을 줄이고, 연산 속도를 가속화 할 수 있다. 또한 성능도 기존 모델의 성능을 최대한 유지하거나 때로는 개선되는 경우도 있다.(일반적으로는 Pruning정도와 성능은 반비례) ...

Read more