- 2020년 12월 5일 오전 3:30
- 조회수: 12214
INFORMATION
- 2020년 12월 11일
- 오후 1시 ~
- 온라인 비디오 시청 (YouTube)
TOPIC
On-Line Video
OVERVIEW
GPU기반의
컴퓨팅
자원을
통해
다양한
정확도
높은
딥러닝
모델이
개발되었지만, 해당 모델들을
모바일
기기
및 IoT 센서와 같은
디바이스에서
직접
연산하기엔
어려움이
따른다. 이러한 추세로
기존
모델의
정확도를
유지하면서
작은
모델
구조로
간소화된
연산을
가능하게
하는
연구인
경량
딥러닝
연구가
활발히
진행되고
있다. 이번 세미나에서는
알고리즘
경량화
연구의
대표적인 ‘Knowledge distillation’의
개념과
응용
논문에
대해
소개하고자
한다.
참고문헌 :
1. Hinton, G., Vinyals, O., & Dean, J. (2015). Distilling the knowledge in a neural network.
2. Heo, B., Lee, M., Yun, S., & Choi, J. Y. (2019). Knowledge transfer via distillation of activation boundaries formed by hidden neurons.
3. Park, W., Kim, D., Lu, Y., & Cho, M. (2019). Relational knowledge distillation.
4. Anil, R., Pereyra, G., Passos, A., Ormandi, R., Dahl, G. E., & Hinton, G. E. (2018). Large scale distributed neural network training through online distillation.
5. Zhang, L., Song, J., Gao, A., Chen, J., Bao, C., & Ma, K. (2019). Be your own teacher: Improve the performance of convolutional neural networks via self distillation.
발표자 후기
연구실에 입학하여 첫 세미나를 진행했다. 딥러닝 모델을 사용하면서 실질적으로 가장 불편했던 부분 중 하나가 무거운 알고리즘으로 인한 용량 및 속도 문제였다. 이러한 문제를 해결하기 위해 공부하던 중, 최근에 경량 딥러닝 분야가 활발하게 연구되고 있음을 알 수 있었다. MobileNet과 같이 모델 자체를 가볍게 하는 경량 알고리즘 방법이 가장 먼저 접하기 쉬운 분야였지만, ‘선생님이 학생에게 지식을 전달한다’라는 사람들의 생활양식을 딥러닝 분야에 적용한 아이디어가 인상 깊어 Knowledge distillation 분야 연구에 관심을 가지게 되었다. AI는 궁극적으로 인간의 추론, 예측, 언어 능력을 닮고자 하는 목표를 가지고 있기 때문에 흥미로운 접근 방식이라고 생각한다. 이번 세미나를 통해 Knowledge distillation 연구 흐름을 정리해볼 수 있었고 향후 연구 방향성에 대해서도 생각해볼 수 있었다. 첫 세미나인 만큼 개인적으로 아쉬움이 많이 느껴지지만, 항상 적극적으로 도와주신 DMQA 연구원분들께 감사 인사를 전하고 싶다.
청취자 후기
Knowledge Distillation에 대해서는 이전에 영어단어가 뭔가 해서 보다가 쉬운 어떤 영상을 보며 개념을 알고 있었고 참 Teacher와 Student를 두고 학습하는게 Actor Critic 계열의 강화학습이나 GAN과 비슷한 접근법으로 신기하게 본적이 있다. 그리고 최근에 한규가 TinyML이라는 주제로 SSD에 적용한 케이스 스터디를 다루면서 경량 딥러닝 쪽에 대해서 흥미가 일어 좀 더 알고 있었다. 이 경량화에서는 모델 압축쪽에 해당된다고 볼수 있는 강화학습으로 필요없는 파라메터들에 대한 pruning을 하는 논문을 인상적으로 봐서 알고 있었는데 지식 증류라는 방법에 대해서 다루었다. Teacher Model로 이미 학습된 모델에 대해서 Student Model에 지식 전달을 하는 방법이라고 한다 역사는 2014년도 닙스 논문이 시작이었다. 이 논문에선 간단한 이미지 분류 예시를 들었는데 target의 softmax 결과를 하드 타겟이 아닌 소프트 타겟으로 tau값으로 softness를 조절하며 지식 전달이 잘되도록 하였다. 그리고 논문의 아이디어가 Keras에 기본적으로 API에 탑재되어 있는 부분을 보고 연구자로써 부러운 생각이 들었다. 그만큼 범용적이고 사용에 대한 실효성이 입증이 되었다라는 말이기 때문에 그 연구의 주인공이 부러운 것 당연하다. 방법은 Reponse Based외에도 Feature와 Relation 기반의 Distillation이 있고 학습 방법에 대해서 Online과 Self Distillation이라는 종류가 있다고 한다. 그중 Online Distillation 쪽의 Activation Boundary를 가져오기 위해 Identity function이 discrete하게 되므로 유사하게 나오게 미분가능한 식을 정의하는 부분은 참 수학이 이런데서 힘을 발휘하는구라라는 인사이트를 그리고 2018년 ICLR에 발표된 Large Scale DIstributed neural network training through online distillation의 경우에는 서로 지식이 전달되는 것도 참 신기한 접근이다 다른 네트웍의 출력을 가져와서 해당 네트워크의 loss로 사용하는 접근은 강화학습 분산학습쪽에 사용해도 좋겠다라는 생각이 들었다. 오늘 발표해준 하은이에게 감사의 인사를 전하며 시계열 분석에 적용하고 연구하겠다라고 했는데 나중에 얘기가 듣고 싶어졌다.
금일 세미나는 하은이가 “Knowledge Distillation”에 대해서 소개해주었다. Knowledge Distillation은 최근 다양한 태스크에서 사용되고 있는 딥러닝의 성능이 모델의 복잡성과 파라미터의 수에 비례함에 따라 메모리, 학습 시간과 같은 물리적인 한계와 실용적인 한계점을 보완하는데 도움을 주는 이론이라고 이해하였다. 학습을 통해 성능이 보장된 복잡한 모델인 Teacher 모델을 확보하고 해당 모델의 지식을 경량화된 Student 모델에 전달하여 보다 단순한 모델로도 복잡한 모델과 유사하게 우수한 성능을 보이고자 하는 것이 Knowledge Distillation의 핵심이다. 어떤 지식을 어떻게 전달하느냐에 따라 다양한 종류의 advanced knowledge distillation 이론이 있었고 하은이가 기본적인 knowledge distillation 알고리즘부터 다양하게 개선된 knowledge distillation 알고리즘의 핵심과 원리에 대해서 이해하기 쉽도록 설명해주었다. 기본적인 knowledge distillation 알고리즘은 Teacher 모델을 미리 학습하여 동일한 샘플에 대해서 Student 모델의 예측 분포가 Teacher 모델과 유사하도록 학습하는 방식으로 상당히 간단한 원리였다. 알고리즘에서 인상 깊었던 부분은 모델의 예측 결과가 0 또는 1로 극단적인 분포 값을 예측하는데 갖는 문제점을 Temperature scaling을 통해 해결하는데 이 방법은 특정 모델의 예측 분포 결과를 이용하고 싶을 때 유용하게 사용할 수 있을 것 같아서 꼭 기억하고 싶은 이론이었다. 세미나 후반부에는 지식의 종류와 전달 방식에 따라 여러 개선된 알고리즘을 설명해주었는데 핵심을 정확하게 전달해주어서 이해하는데 불편함이 없었다. 다양한 휴대용 기기에 딥러닝 알고리즘이 적용됨에 따라 knowledge distillation은 산업적 관점에서도 앞으로도 상당히 중요하게 여겨질 연구 분야 중 하나가 될 것이라고 생각된다. 오늘도 새로운 이론에 대해서 이해하기 쉽게 설명해준 하은이에게 고맙다고 전하고 싶다.
최근 GPU의 발전과 풍부한 데이터의 공급에 따라 SOTA 딥러닝 모델과 성능(정확도)이 동시에 우상향하는 경향을 보이나, 이런 우수한 모델들을 Edge단에서 그대로 돌리기에는 너무 무거운 한계점이 있다. 이러한 배경에서 비교적 가벼운 모델에 SOTA 모델이 학습한 바를 전달하여 준수한 정확성과 빠른 추론속도를 가지고자 하는 것이 금일 발표하는 Knowledge Distillation의 탄생 배경이다. 가장 처음으로 소개해준 논문은 2014년 힌튼이 참여한 논문으로, Pretrained된 Teacher 모델의 마지막 단의 Softmax temperature를 조절하여 최종적으로 student에게 smoothen된 soft target을 제공하여 hidden knowledge를 학습시키는 방법론이다. 실제로 2019년 HuggingFace의 DistilBERT이 해당 방법론을 사용하였으며, 최근에는 Keras에 본 방법론이 모듈로 제공될 만큼 클래식한 방법론이라고 할 수 있다. 이 논문을 시발점으로 그 후에 나온 논문들은 1.Teacher 모델의 어떠한 지식(Response, Feature, Relation)을, 2.Student 모델에게 어떻게(Offline, Online, Self) 전달하느냐에 따라 구분될 수 있다. 예를 들어, DistilBERT는 Student모델은 Teacher 모델이 Fix된 상태로 Offline 형태로 학습시켰으며, 모델 은닉층 변수(Feature, Relation) 대신 최종 반응(Response)인 Softmax값을 기준으로 학습시켰다고 볼 수 있다. 이렇게 마지막 Response를 사용하는 경우 은닉층 구조가 서로 달라도 무방할 것이지만, 일반적으로 teacher와 student의 구조는 상당히 다를텐데, 각각의 어떤 hidden layer의 output을 어떤 크기로 서로 대응시켜야 하는가가 큰 하이퍼파라미터 요소로 남을 듯하다. 끝으로 아무리 GPU 성능이 좋아져도 실제 산업 현장에서는 더 빠르고, 가벼운 모델을 원하는 수요는 항시 있을 듯하여 Knowledge Distillation 테크닉은, 실제 현장 프로젝트의 마지막 고도화 단계에서 유용하게 쓸 수 있을 것으로 보여 듣는이 모두에게 실용적인 세미나가 되었을 듯하다. 바쁜 기말고사 중에도 자료를 일목요연하게 만들어준 하은이에게 감사의 말을 전한다.
금일 세미나는 하은이가 Knowledge Distillation(지식 증류)을 주제로 진행해주었다. 지식 증류는 딥러닝을 경량화하는 연구 중 하나로 딥러닝 실용성을 높이기 위한 중요한 연구이다. 지식 증류를 이해하는데 중요한 두 가지 키워드는 Teacher Model(원본 모델)과 Student Model(경량화된 모델)였으며, 금일 세미나에서는 Teacher Model이 Student Model에게 어떤 지식을 전달하고자 하고, 전달 방식에 대한 연구 흐름을 자세하게 소개해준 시간이였다. 지식 대상과 지식 전달 방식에 따른 여러가지 논문 리뷰를 실시해주었는데, 리뷰 전 지식 증류 알고리즘에 대한 기초 process 설명으로 이해하는데 불편함이 없었다. 전달 방법 중 인상 깊은 방식은 self-distillation이였는데, Deepest(Teacher model 역할) 모델의 예측 분포와 feature를 Shallow(Student model 역할) 모델에 증류하면서, 동시에 student model(레이어 중간 중간 사이의 bottle neck feature들을 F.C.N에 입력해 예측) 학습을 수행하는 방식이였다. 학습이 완료된 뒤, 모델 활용에는 Shallow 모델만을 추출하여 사용할 것으로 예상되는데, Shallow 모델에 대한 입력은 어떻게 구성될지 호기심이 생겨 논문을 더 읽어봐야겠다 생각했다. 향후 복잡한 모델을 이용하는 프로젝트를 수행할 시 해당 알고리즘을 꼭 적용해보아야 생각했고, 금일 모델 경량화에 대한 흥미로운 주제로 세미나를 열심히 준비해준 하은이에게 감사의 말을 전하고 싶다.
Knowledge distillation (KD)에 대한 소개를 하는 세미나를 청취했다. BERT와 같은 크고 무거운 알고리즘들이 좋은 성능을 내기 시작했지만, 학습에 걸리는 시간은 물론이고 실질적으로 모델을 사용하는 추론 단계에서도 오랜 시간을 걸리면서 KD의 필요성은 점점 더 두드러졌다. 작년에 BERT 경량화에 관한 과제를 진행한 적이 있었는데 성능을 유지시키면서 파라미터 수를 줄이는 것이 상당히 어려운 작업이라는 것을 느꼈다. KD 성능에 관한 loss와 task에 관한 loss의 균형을 맞추기도 까다로웠고, 학습을 자칫 조금이라도 많이 시킬 경우 성능이 갑자기 떨어지는 경우도 발생했었다. KD의 가장 기본적인 컨셉은 teacher 모델에서 학습된 지식을 가벼운 student 모델에 최대한 손실 없이 전달하는 것이다. 어떤 지식을 전달할 것인가에 대해서 response, feature, relation으로 구분할 수 있다. 또한, 전달하는 방식에 따라서 offline, online, self로 구분할 수 있다.
가장 처음에는 response & offline에 관한 연구로 많이 시작을 했었다. 학습된 teacher 모델의 예측값과 유사하게 예측할 수 있도록 student 모델을 새롭게 학습시키는 방법이다. 여기에서 feature를 유사하게 예측하게 바꾸면 feature & offline 조합이라고 볼 수 있다. KD에 대해서 쭉 살펴보면 결과적으로는 '잘 예측하는 복잡한 함수'를 간단하게 approximation하는 과정이라고 생각이 든다. 이러한 관점에서 teacher 모델이 갖는 feature 들을 중간중간 예측하게 만들어두고, 예측과 실제의 차이값을 residual 개념으로 갖고 가는 컨셉에 관한 컨셉도 재미있을 것 같다. 찾아보니 적용하기 간단해서 그런지 residual과 관련된 접근방법을 KD에 적용한 사례도 몇몇 있는 것 같다. 이전에 재미있게 살펴보던 분야였는데 이번 세미나를 통해서 다시 한번 복습할 수 있어도 좋았던 것 같다. 알고리즘의 실제 사용에 아주 밀접한 분야인만큼 재밌고 좋은 연구를 했으면 좋겠다.
오늘은 하은이가 ‘Introduction to Knowledge Distillation’이라는 주제로 세미나를 진행해주었다. 최근 여러 computing power가 뒷받침되면서 딥러닝 알고리즘은 복잡해지고, 이에 대한 파라미터 수 또한 기하급수적으로 증가하고 있다. 모델 구조가 복잡해짐에 따라 우수한 성능을 도출하는 데에는 기능해졌지만, 메모리의 한계 혹은 추론 시간의 증가 등으로 인해 실용적인 측면에서는 여러 어려움이 따르게 되었다. 이에 따라 딥러닝 알고리즘을 경량화하기 위한 연구들이 활발하게 수행되고 있다. 이 중 대표적인 knowledge distillation은 teacher model과 student model로 구성된다. Model capacity가 크며 성능이 좋은 teacher model의 지식을 상대적으로 가벼운 모델인 student model에게 전달하여 student model의 성능이 teacher model과 유사한 성능까지 달성시키는 것을 목표로 한다. 지식을 증류하는 과정에서는 잘 학습된 teacher model의 soft target을 활용하게 된다. Soft target은 predict probability라고 이해하면 되는데, hard target이 아닌 soft target을 사용하는 이유는 아무래도 one-hot encoding을 통해 정보가 많이 요약된 hard target대비 soft target은 상대적인 class간 비교도 가능하기 때문에 훨씬 많은 정보를 포함하고 있다. 또한, soft target을 정의하는 과정에서 softmax의 특징인 1,0에 쏠리게 되는 현상을 smoothness하기 위해서 logit에 temperature scaling을 수행하게 된다. 이렇게 soft target이 정의가 된 이후에는 teacher model로부터 도출된 soft target값과 student model로부터 도출된 soft target값의 분포가 유사해지도록 KLD loss가 활용되며, student model의 soft target과 ground truth 사이 cross entropy loss가 down stream task loss로 활용된다. 앞서 설명한 방법론은 response based offline distillation 방법론이라고 할 수 있는데, 지식의 대상에 따라 feature based, relation based 그리고 전이 방식에 따라 online distillation, self distillation으로 나누어 연구가 수행되고 있다. 오늘 세미나를 통해 전반적인 knowledge distillation에 대해 이해할 수 있었고, 어떠한 가지로 연구가 수행되고 있는지 까지 이해할 수 있었다. 딥러닝 연구를 수행하면서 computing cost에 대해 간과하게 되는 경우가 많았는데, 이제는 딥러닝이 다양한 도메인에 활용되는 사례가 증가함에 따라 경량화 이슈들이 각광받을 것 같다. 실용적인 관점에서 knowledge distillation이 앞으로 더욱 활발히 연구가 수행될 것 같으며, 나 또한 관심을 갖고 공부해볼 필요가 있다고 생각했다. 하은이가 새롭게 공부하는 분야에 대해 소개해주어 고맙고, 좋은 연구로 승화시키길 응원한다.
이번 세미나는 “Introduction to Knowledge Distillation”이라는 주제로 진행되었다. 최근 다양한 알고리즘들이 개발되었지만, 메모리나 모바일, 컴퓨터 등에서 실용적으로 사용하기에 한계점을 보이면서 경량 딥러닝이라는 연구가 등장하게 되었다. 이번에는 그 중에서도 지식 증류(Knowledge Distillation)라는 분야에 대하여 알아볼 수 있었다. Knowledge Distillation이란, 높은 예측 정확도를 가진 복잡한 Teacher 모델의 지식을 단순한 Student 모델에게 전달하여 유사한 높은 성능을 내도록 하는 방법론이다. 기본적인 방법은 예측 결과의 확률 분포 및 smoothing 역할의 하이퍼 파라미터를 적용시킨 결과를 함께 전달하여 Student 모델에서 이를 기반으로 학습을 진행하는 방식이다. 이 외에도 어떠한 지식을 전달할지, 그리고 어떻게 전달할지에 대한 연구들을 각각 설명해주어 지식 증류라는 분야에 대하여 깊이 있게 이해할 수 있었다. ‘Knowledge’ (어떠한 지식의 전달)의 관점에서는 Activation Boundary에 관심을 갖고 이를 전달하거나 output vector간의 구조와 관계를 고려하여 전달하는 연구들이 진행되었다. 또한, ‘Distillation’ (어떻게 지식을 전달)의 관점에서는 데이터의 병렬처리를 통하여 네트워크들끼리 병렬적으로 파라미터를 업데이트하는 방법, 또는 하나의 네트워크 내에서 Teacher 모델과 Student 모델의 역할을 하는 단계를 구분하여 지식의 전달과 학습을 한 번에 진행하는 방법 등이 있었다. 해당 세미나를 통하여 Knowledge Distillation이라는 분야에 대하여 알아보고, 다양한 방법론들의 핵심 아이디어를 명확하게 들어볼 수 있어서 의미있었다. 해당 분야는 여러 딥러닝 알고리즘들의 개발과 함께 활발하게 연구될 수 있겠다는 생각이 들었고, 많이 활용될 수 있는 아이디어인만큼 관심을 갖고 공부해보아야 할 것 같다. 하은이가 오늘 소개해준 지식 증류 분야에서 의미있는 연구 결과를 제안하여 알고리즘 경량화에 기여하는 분석가가 되길 응원한다.
딥러닝의 1차적인 목표는 높은 정확성이다. 이러한 목표를 달성하기 위해 그 동안 더욱 더 복잡한 모델을 사용하고, 이러한 연산량을 처리할 수 있도록 비싸고 성능 좋은 GPU를 많이 사용하였다. 실제로 최근의 연구에 적용된 모델들을 직접 구현해보려 하면 컴퓨팅 소스의 한계로 시도하지 못해 안타까웠던 적이 많았다.
딥러닝의 최종 목표는 식별성 높은 모델을 만들어 자동차에 탑재를 하던 카메라에 탑재를 하던 실생활에 적용하는 것이라고 생각한다. 그러나 현재의 SOTA 모델들은 너무 무겁고, 그럼으로 인해 추론 속도도 저하된다. 하드웨어에 탑재하기 위해서 가장 필요한 것은 경량성과 기동성, 속도이다. 가벼워야 하고 빨라야하고, 어디든 쉽게 휴대할 수 있어야한다.
Knowledge Distillation은 이러한 실용성을 충족시키기 위해 생겨난 연구분야라고 할 수 있다. 기존의 복잡한 모델의 성능을 거의 유지하며 더욱 경량화된 모델을 만드는 것이다. 금일 세미나는 Knowledge Distillation을 거의 처음 접한 사람들을 위한 간단한 등장 배경과 Scheme, 그리고Relation-Based, Response-Based, Feature-Based, Self-Distillation 등 세부 분야별로 대표적인 논문들을 하나씩 알아보았다. 한가지 좋았던 점은 인용횟수가 적거나 국내 저자들이 쓴 논문도 알아 볼 수 있었던 점이다. 기존에 논문을 찾아볼 떄는 무턱대고 인용횟수가 적거나, 유명한 국제 기업이나 유명 대학이 쓴 논문이 아니면 거의 찾아보지 않았었는데, 편협했던 시각을 깰 수 있었던 것 같다.
이번 세미나는 "Introduction to knowledge distillation"이라는 주제로 진행되었다. 딥러닝 모델의 성능이 향상됨에 따라 딥러닝 모델의 파라미터 수가 급격하게 증가했다. 하지만 파라미터가 수가 많은 모델은 학습과 추론에 큰 비용이 필요할 뿐 아니라 실제 서비스에 적용되기 어렵다. 따라서 딥러닝 모델의 경량화에 대한 필요성이 대두되었으며 이번 세미나에서는 모델의 경량화 기법의 하나인 knowledge distillation 기법에 대해 소개되었다. 먼저 teacher 모델과 student 모델이라는 개념이 소개되었다. Teacher 모델은 성능이 좋은 큰 모델을 의미하며 student 모델은 teacher 모델의 지식을 받아서 작지만 좋은 성능을 내는 모델을 의미한다. Teacher 모델의 지식은 teacher 모델에서 softmax 함수를 통과한 출력값을 의미한다. 해당 출력값은 입력값의 정답에 대한 정보뿐 아니라 다른 클래스와 유사한 정도에 대한 정보를 함께 담고 있기 때문에 지식이라고 이야기할 수 있다. 소개된 논문에서는 softmax에 temperature 라는 하이퍼 파라미터를 도입해 실제 출력값보다 soft 한 출력값을 지식으로 활용한다. Student 모델을 학습할 때에는 동일한 데이터를 활용해 student 모델과 teacher 모델의 출력분포가 동일해지도록 하는 distillation loss를 추가해서 학습을 진행한다. 앞서 소개된 논문은 출력값을 지식으로 가정하고 전달하기 때문에 response 기반의 지식 증류 기법이라고 할 수 있으며 feature 기반 혹은 relation 기반의 연구들도 진행되고 있다. Feature 기반의 연구로 소개된 논문에서는 activation boundary를 지식으로 가정하였으며 relation 기반의 연구에서는 단순히 출력값을 사이의 관계를 고려하기 위해 벡터 사이의 각이 비슷해지도록 학습을 하게 된다. 지식 전달 방법으로 처음 소개된 논문에서는 pre-train 된 teacher 모델을 사용했기 때문에 off-line 방식의 distillation이라고 이야기하며 online 방식이나 self-distillation 등의 방법들도 연구되고 있다. Online 방식의 연구에서는 앙상블 모델을 가정하고 업데이트하고자 하는 모델을 student 모델로 나머지 모델의 평균을 teacher 모델로 사용하여 병렬적으로 파라미터를 업데이트하는 방식을 취하게 된다. 마지막으로 self-distillation 방법에서는 깊은 분류기를 teacher 모델로 활용하고 중간에 깊은 분류기 중간에 나오는 feature를 활용해 얕은 분류기를 학습하게 된다. 이를 통해 얕은 분류기의 앙상블 결과가 정답 값과 같아지도록, 얕은 분류기들의 출력값이 깊은 분류기의 출력값과 분포가 동일해지도록, 얕은 분류기의 feature가 깊은 분류기의 feature와 동일해지도록 하는 총 3가지의 loss term을 활용해 학습을 진행하게 된다. 이번 세미나를 통해 knowledge distillation에 대한 개념을 알게 되었으며 최근에 연구 방향에 대해서까지 살펴볼 수 있어서 의미 있는 시간이었다. 세미나를 열심히 준비해준 하은이에게 감사의 말을 전한다.
이번 세미나는 하은이가 ‘Introduction to Knowledge Distillation’이라는 주제를 가지고 진행하였다. Knowledge Distillation이 등장한 이유는 모델이 복잡해지면서 메모리 한계, 계산 시간의 증가로 인해 실용적인 측면에서 한계가 존재하게 된다. 따라서 이러한 문제를 해결하기 위해서는 경량 딥러닝에 대한 연구가 활발히 진행되고 있다. 경량 딥러닝에는 경량 알고리즘, 알고리즘 경량화에 해당하는 방향이 존재한다. Knowledge에는 teacher 모델과 student 모델로 구성되어있다. teacher모델의 어떠한 지식을 student 모델에 어떻게 전달할 것인지가 Knowledge Distillation의 목표이다. Distilling the Knowledge in a Neural Network는 Knowledge Distillation의 기초가 되는 논문이다. 해당 논문에서는 teacher모델을 미리 학습하여 높은 성능을 확보한 뒤에 student 모델을 학습시킨다. Student 모델에서 나온 loss를 추가하여 loss값을 구하게 된다. Computing power가 증가하면서 그만큼 복잡한 모델들이 쏟아져 나오고 있는 지금 knowledge distillation이 유용하게 사용 될 것 같다. Knowledge Distillation에 대해 전반적인 설명과 자세한 설명까지 준비해준 하은이에게 감사하다는 말을 전하고 싶다.
최근 기계 학습 관련 연구는 분류 모형, 이미지 분할 모형 등 특정 문제를 해결하며 뛰어난 성능을 보이는 것에 집중되어 있다. 하지만 연구한 모형을 실제 데이터 및 한정적 자원에서 있는 그대로 적용하는 것은 완전히 다른 문제이다. 그 중 한정적 자원(예-핸드폰, 자율주행 차량)에서 성능을 일정 수준으로 유지하며 빠른 추론 시간을 가지는 모델을 학습하는 것에 관해 이번 세미나가 진행되었다. 일반적으로 사용하는 방법인 Teacher-Student 기법을 중심으로 어떻게 파라미터가 많은 큰 모형에서 작은 모형으로 모형 가중치 전달 및 학습 방법에 관해 중점적으로 소개해주었다. 발표자가 명시해준 논문 내 Student 모형에 대해 집중적으로 추가적으로 살펴보고자 하는 의지가 생긴 세미나였다. 왜냐하면 나의 연구 분야에서는 단순히 성능이 뛰어난 것 뿐 만 아니라 실제 제조 현장에서도 사용 가능해야하기에 관심이 갔었다. 마지막으로 산업공학에서 중요하게 생각하는 연산 비용, 추론 속도 등 비용 관점에서 Knowledge Distillation은 굉장히 중요한 문제인 것으로 생각하고 있다. Knowledge Distillation에 계속적인 관심을 보이는 하은이의 개인 연구에서도 성과가 있길 응원한다.
이번 세미나에선 황하은 연구원이 Knowledge Distillation(지식 증류) 연구 분야를 소개해줬다. 지식 증류는 복잡한 딥러닝 모델에서 정말 필요한 부분만 ‘증류’해, 빠르고 성능 좋은 모델을 만드는 것을 목표로 한다. 딥러닝 모델이 점차 고도화하면서 예측 성능은 좋아졌지만 추론에 오랜 시간이 걸리는 등 활용도가 떨어지는 문제가 발생하고 있다. 이에 복잡하지만 정확도가 높은 딥러닝 모델을 teacher 모델로 삼고, 이 모델의 지식을 훨씬 단순한 student 모델로 전달해 유사한 성능을 내게 하는 것이 지식 증류 기법이다.
지식 증류 기법은 전달하고자 하는 지식, 그리고 전달하는 방식에 따라 여러 모델이 나뉜다. 지식은 response/ feature/ relation based로 나뉘며, 전달 방식에는 offline/ online/ self distillation이 제안됐다. 이중 response-based의 offline distillation 모델의 경우, 우선 티처 모델을 학습시켜 높은 성능을 확보한 후, 최종 결과값 1 또는 0으로 변환되기 이전의 확률분포와 최대한 유사하게끔 스튜던트 모델을 학습시키는 방식이다.
이번 세미나를 들으면서 지난달 졸업생 이한규 박사님의 세미나가 떠올랐다. 당시에도 매우 작은 사이즈의 SSD에는 딥러닝 모델은커녕 머신러닝 모델도 탑재하기 어렵다는 한계를 얘기해주셨는데, 그만큼 앞으로 알고리즘 경량화에 관한 연구가 더욱 각광 받을 것이라고 느꼈다. 해당 분야의 주요 연구들을 두루 소개해 준 하은이에게 감사의 말을 전한다.
이번 세미나는 황하은 연구원이 Knowledge Distillation에 대한 소개로 세미나를 진행해주었다. 최근 딥러닝 모델은 점점 복잡해지는 모델 구조와 파라미터 수의 급격한 증가로 메모리의 한계, 추론 시간의 증가 등의 문제가 생길 수 있는데, 특히 실용적인 측면에서의 한계가 있다는 점이 중요한 내용인 것 같다. 이러한 문제를 극복하기 위해 경량 알고리즘 또는 알고리즘 경량화에 대한 연구가 최근 활발히 진행되고 있고, 그 중 Knowledge Distillation은 Teacher 모델과 Student 모델의 개념을 적용하여 잘 학습된 Teacher 모델이 단순한 Student 모델에게 지식을 잘 전달할 수 있도록 하는 방법이다. 기본적인 Distillation의 방법은 Offline으로 사전학습된 Teacher 모델의 결과값에 대한 확률분포를 Student 모델에서도 똑같은 확률분포가 나올 수 있도록 학습해주는 방법이다. 이러한 방법은 Response-based 라고 할 수 있는데 이 외에도 Feature-based, Relation-based에 대한 방법이 소개되었다. Feature-based 방법은 Teacher와 Student의 Activation boundary만 같아지도록 학습하는 방법이고, Relation-based 방법은 Teacher 모델이 학습한 Activation 구조를 Student 모델에 전해주는 방법이라고 할 수 있다. Student 모델에게 어떻게 지식을 전할 것인가에 대한 연구도 소개가 되었는데, 이에 대한 내용으로 기본적인 Offline 방법외에 Online 방법과 Self-distillation 방법에 대한 논문을 소개해주었다. 이렇게 더 빠르고 가벼운 딥러닝 모델을 가능하게 하는 Knowledge Distillation 분야의 연구가 실용적인 측면에서 정말 필요한 연구가 되겠다는 생각이 들었고, 모델의 성능이라는게 정확도만이 아니라 추론 시간이나 실제 활용성까지 포함해야 할 것 같다는 생각이 들었다. 이번 세미나를 통해 Knowledge Distillation이라는 연구분야에 대해 새롭게 알게 되었는데, 좋은 내용으로 세미나를 준비해준 황하은 연구원에게 감사의 말을 전한다.
이번주 세미나는 'Introduction to knowledge distillation'으로 세미나가 진행되었다. 최근 딥러닝의 발달로 성능이 좋아졌다는 말은 다르게 말하면 더 복잡한 모델 구조를 가지고 엄청난 파라미터의 수의 증가를 뜻한다. 하지만 메모리 한계 추론 시간 증가 실용적 측면에서 한계가 있다. 그래서 약간 성능은 떨어져도 가벼운 경량 딥러닝의 분야가 생기게 되었다. 보통 경량 알고리즘으로 -모델 구조 변경, 합성곱 필터 변경, 자동모델 탐색 과 -알고리즘 경량화로 모델 압축, 지식 증류, 모델 압축 자동 탐색이 있다. 그중 지식 증류란 잘 학습된 Teacher모델의 지식을 전달하여 단순한(가벼운) student모델로 비슷한 좋은 성능을 내는 것이다. 즉 이번 세미나의 목적은 Teacher모델의 어떠한 지식을 student모델로 어떻게 전달할 것인가이다. 이번 논문은 'Distilling the Knowledge in a Neural Network'이다. Teacher의 knowledge는 soft target을 사용하여 t(temperature):scaling역활의 하이퍼 파라미터로 t가 클수록 더 soft한 확률 분포를 가지도록 한다. student에게 distillation하는 방법은 offline방식인데 Lsoft로 KL로 값을 찾고 Ltask로 corssentropy로 값을 찾아 student Ltotal은 Lsoft와 Ltask를 더하는데 Losft에 람다를 곱해줘서 계산을 조절한다. Distillation방법이 여러가지가 사용된다. Online 방식의 연구에서는 앙상블 모델을 가정하고 업데이트하고자 하는 모델을 student 모델로 나머지 모델의 평균을 teacher 모델로 사용하여 병렬적으로 파라미터를 업데이트하는 방식이다. 마지막으로 self-distillation 방법은 하나의 네트워크 안에서 지식이 전달되면서 학습한다. 더 빠르고 가벼운 딥러닝 모델을 가능하게 하는 knowledge distillation분야의 연구가 활발하게 진행중인다. 기존은 이미지로 진행되었으나 최근 음성인식과 NLP분야에서도 적용이 되는 추세다. distillation이 어떤분야인지 감이 안왔었는데 좋은 세미나로 인해 이해하게 되었다. 세미나를 해준 하은이에게 감사의 말 전한다.
황하은 연구원이 Introduction to Knowledge Distillation 이라는 주제로 세미나를 진행하였다.
딥러닝의 모델 구조가 점점 복잡해 짐에 따라 좋은 실험의 결과를 얻을 수 있는 반면 parameter 의 수 증가, 메모리 한계 등 현실적인 문제가 있는 것도 사실이다.
Knowledge Distillation 방법은 예측정확도를 가진 Teacher 모델의 Knowledge를 Student 라고 불리는 다소 가벼운 모델에 전달하여 경량화된 모델에서 좋은 성능을 얻고자 하는 것을 목표로 한다. 이 때 1. Teacher 모델의 어떠한 정보를 2. Student 모델로 어떻게 전달 할지에 대한 연구가 수행되고 있다. Teacher 모델의 Knowledge 를 연구하는 Response Based, Feature Based, Relation Based 방법과 Student로 모델을 전달하는 Offline Distillation, Online Distillation, Self Distillation 방법들이 연구가 되고 있다.
모델의 성능이 아닌 Data 측면에서 보았을 때, 기존에는 Data를 Data Warehouse에 수집하여 실험을 하는 방법이 일반적이었지만, 다량의 데이터 전송, Storage 관리 등을 이유로 점점 Edge 단계에서 Data를 이용하는 방법이 주목받고 있다. 산업현장에서 이러한 니즈가 있다는 것을 알고 있었지만, 구체적으로 그 방법론에 대해서는 고민해본 적이 없었는데 이번 세미나에서 부분을 많이 충족시켜주었고 아주 유익한 세미나였다.
오늘 하은이가 "Knowledge distillation"을 주제로 세미나를 진행했다. 먼저 용어를 살펴보면 지식을 (Knowledge) 증류한다(distillation)고 직역된다. 처음에 증류라는 단어가 의미(액체->기체->액체) 때문에 그 의미가 잘 와닿지 않았는데 딥러닝 관점에서 살펴보면 다음과 같았다. 학습된 모델로부터 지식을 추출(액체->기체)하여 다른 모델에 잘 전달(기체->액체)하는 과정을 일컫는다. 그래서 지식을 추출하는 대상을 Teacher (T) model 이며 전달받는 대상을 Student (S) model로 말한다. 즉, 여기서 지식이란 선생님이 잘 학습한 파라미터를 뜻한다. 그럼 지식 증류는 어느 상황에서 필요한 지 살펴보면 다음과 같다. 복잡한 T 모델은 단순한 S 모델보다 정확도는 뛰어나지만 그 정도에 비해 많은 시간 비용적(예를들어 예측 소요 시간 T모델 3시간, S모델 3분)으로 소모가 크다. 그래서 복잡한 T 모델에 일반화 성능을 덧대어 S 모델에 전달하면 많은 응용에서 효용성을 발휘할 수 있게 된다. 그럼 어떻게 지식 증류를 수행할 수 있을 지 가장 시초가 되는 논문(Distilling the knowledge in a neural entwork, Hinton. et al., 2014)의 개념을 살펴보면 다음과 같다. 우리는 분류를 수행할 때 softmax함수를 통해 각 범주별 예측확률을 도출한다. 예측확률분포에서 가장 높은 확률을 갖는 범주로 예측을 수행하는 데 그 외 범주들의 확률분포도 참고하자는 게 핵심이다. 즉, 1 또는 0으로 분류를 수행하는 hard 한 예측결과 이전에 soft한 확률 분포를 이 모델이 갖는 지식으로 보자는 것이다. 그럼 softmax로부터 도출된 예측확률을 더 soft하게 만들기 위해 softmax 함수 기본 파라미터에 temperature (T) 변수를 분모로 추가해 활용하였다. 그럼 S 모델에 어떻게 전달할까? 이 soft한 예측확률 분포를 Y변수로 활용하는 비용함수 term을 추가한다. 즉, S모델은 학습할 때 one-hot vector로 표현되는 범주형 변수를 학습하는 게 아닌 T모델로부터 추출도니 soft한 예측확률을 반응변수로 학습하는 과정을 추가하여 T모델에 대해 일반화 성능을 표현하게 되며, 더 light한 모델구조로 예측 성능을 확보할 수 있게 된다. 지난번 adversarial attack and defense 관련 세미나를 준비하며 Knowledge distillation 개념이 모델 일반화 성능을 높여 adversarial defense 효과를 갖는다는 점을 언급한 적이 있는데 오늘 세미나로 관련 개념을 되짚을 수 있었다. 오늘 매우 간단한 아이디어이면서도 강력한 일반화 성능을 보장하는 모델을 구축할 수 있는 프레임워크로 많은 확장연구가 이루어지고 있는 Knowledge distillation 개념에 대해 살펴볼 수 있었다. 그 밖에 Knowledge transfer, transfer learning, meta learning과 연관지어 설명해 볼 수 있을 것 같은데 한번 정리해보는 시간을 가져도 좋을 것 같다.
이번 세미나는 하은이가 knowledge distillation을 주제로 진행하였다. 빅데이터 시대 이래로 복잡하고 많은 데이터를 처리할 수 있는 기술이 발달하고 이에 대한 분석과 모델링이 가능한 GPU 등의 연산 장치 혹은 개발 환경의 스펙이 고도화되었다. 이러한 기술 발전에 따라 수많은 파라미터를 갖는 복잡한 구조의 딥러닝 모델이 학습가능하게 되었고 딥러닝은 vision, NLP 등 다양한 테스크에서 눈부신 성공을 거두었다. 그러나 각 영역에서 SOTA라고 불리는 모델의 구조가 너무 복잡하고 학습해야 하는 파라미터가 많아서 학습에 필요한 시간이 많이 필요하고 모델 튜닝에 어려움을 겪기 마련이다. 또한 on-device 환경과 같이 빠르고 실시간 추론이 가능한 서비스에 적용하기에는 어려움이 있다. 이러한 문제를 모델 성능은 유지하면서도 구조를 간단하게 하여 극복하는 모델 경량화 연구가 다양한 방식으로 진행되고 있으며 하은이가 이번 세미나에서 다룬 knowledge distillation은 그 중 한 방식이라고 볼 수 있다. Knowledge distillation 복잡하고 깊은 구조의 teacher model이 갖고 있는 지식을 간단하고 얕은 구조의 student model으로 전이하는 방식으로 정의할 수 있으며, teacher의 어떤 지식을 어떻게 student로 전달할지를 loss customization을 통해 다양한 방식으로 설계할 수 있다. 여러 연구의 핵심을 하은이가 잘 설명해주었는데, 그 중에서도 마지막에 설명해준 self-distillation 연구가 흥미로웠는데, 이미지를 분류하는 Resnet 구조를 teacher으로, 각 bottleneck feature에 fcn을 연결한 레이어들을 student으로 두고 task, soft, feature loss를 각각 설계하여 새로운 구조의 모델을 두지 않고 하나의 모델만으로 student model을 학습시킬 수 있게 된다. 별도의 쿼리를 두지 안고도 feature의 학습을 가능하게 했던 self-attention과 전혀 다른 분야이지만 같은 접근법 때문에 네이밍을 이렇게 하지 않았을까 생각이 들었고, 이 모델의 아이디어를 NLP 등 다양한 모델에 적용해보면 좋은 연구가 될 것 같다는 생각이 들었다.
내 메인 연구분야인 NLP분야에서는 BERT가 표준으로 자리잡은 2018년 이후로 복잡한 모델 구조 경량화에 대한 연구 필요성이 지속적으로 제기되던 분야였다. distillBERT와 같은 모델이 파라미터 수를 상당히 줄이면서도 좋은 성능을 냈지만 최근 GPT계열이 또 대세가 되고 나서는 또다른 경량화 모델이 필요한 시점이다. 어느 시점에서 규모의 경제가 되버린 NLP 분야이기에 경량화 연구는 반드시 필요한 연구 분야이고 나도 관심을 갖고 공부를 해봐야 겠다는 생각을 한다. 바쁜 와중에 세미나를 잘 해준 하은이에게 감사하다는 말을 전한다.
오늘 세미나는 하은이가 Knowledge distillation 관련하여 진행해주었다. 등장하게된 배경부터 taxonomy를 설명해주는 것을 시작으로 Student-Teacher 모델을 사용하는 지식 증류 기법 연구들 가지를 소개해주어서 해당 연구가 어떻게 발전되고 있는지 손쉽게 파악할 수 있었다. 나는 지식 증류 기법 연구의 첫 시작 논문인 2015 Neurips에서 소개된 Distilling the knowledge in a neural network가 model의 최종 softmax 출력 값이 잘 학습된 모델의 지식을 함축하고 있다고 가정하는 것으로 시작되었다는 설명이 흥미롭게 들렸다. 얼마전 박영준 박사님의 세미나에서 논문에서 가정하고 있는 것에 대해서 의심하면서 새로운 연구가 시작된다는 말에 큰 울림이 있었는대 같은 맥락으로 이번에도 또 한번 깨달았던 것 같다. 또한 (1) 어떠한 지식을 (2) 어떻게 전달하는가에 따라 후속 연구들의 큰 개념을 설명해주어서 연구의 발전의 흐름을 설명해주어 처음 해당 분야 연구를 접한 연구원들도 이해가 쉬웠을 것 같다. 내가 연구하고 있는 분야에서 연구 흐름의 발전도, 개념도를 직접 그려보고 어떻게 발전하고 있는지 스스로 정리하면 새로운 연구의 방향을 잡는대 도움이 될 수 있겠구나 생각이 들었다. 많은 생각과 깨달음을 얻을 수 있도록 유용한 세미나를 진행해준 하은이에게 고마운 마음을 표한다.
이번 세미나는 “Introduction to Knowledge Distillation” 주제로 하은이가 발표했다. Knowledge Distillation (KD)는 Bert, GPT, object detection 알고리즘 등 각 분야에서 좋은 성능을 냈지만 크고 무거운 구조로 학습 및 추론 시간이 오래 걸린다는 점에서 필요성이 부각되었다. 실제 google, facebook 등 컴퓨팅 자원이 강력한 기업에서는 좋은 성능을 내는 무거운 알고리즘들이 종종 개발되지만 한정적인 컴퓨팅 자원에서는 한계가 존재하기 때문에 기존 알고리즘에서 경량화하는 연구들도 이루어지고 있다. 경량화에는 모델 구조, 합성곱 연산 방식, KD 등의 방식이 있다. 이번 세미나의 핵심인 KD는 teacher모델에서 잘 학습된 지식을 가벼운 student 모델에 전달하여 경량화하는 방식이다. Teacher에서 student로 어떤 지식을 전달할 것인가?는 response, relation, feature로 구분할 수 있으며 전달하는 방식에는 offline, online, self 방식이 있다. 지난 한화 ATP 2기 멘토를 맡았을 때에는 모바일에 심기 위해 object detection 경량화 모델에 대한 주제로 진행한 적이 있었다. 이 때에는 모델 구조를 경량화하여 계산 복잡도, 학습 및 추론 시간을 줄이는 경량화 방식으로 진행했다. 이번 세미나를 통해 새로운 경량화 방식인 KD의 개념과 KD의 최신 연구 흐름까지 알아볼 수 있는 유익한 시간이었고 실제 연구에도 사용해볼 수 있는 분야인 만큼 관심을 갖고 틈틈이 공부할 계획이다.