2019 대한의료인공지능학회 Summer School 참석후기
2019 대한의료인공지능학회 Summer School 에 참석하였습니다. 참여자들을 조사했는데, 대략 전체 참석자중 MD 가 절반정도, 나머지 연구원 및 학생이 절반 정도되었던 것 같습니다. 각 교육 세션은 50분에서 1시간 30분사이로 진행되었습니다.
1일차에는 의료인공지능을 하기 위한 방법론들을 주로 다루었습니다. 역시 현재 의료인공지능 분야의 state-of-the-art 인 deep learning 에 대한 내용이 중점이었습니다 (물론 이를 설명하기 위한 수학적, 통계적 개념은 많이 다루었습니다). 교육 내용은 deep learning 을 기초부터 다루지는 않았고, deep learning을 의료 데이터에 적용할 때 발생할 수 있는 주요 이슈들에 대해서 개념부터 최근 연구 동향까지 다루었습니다. 현재 연구원으로서 엔지니어링을 의료 데이터에 적용하고 있는 저로서는 발표자 분들과 같은 관심선상에서 많은 것을 배울 수 있었습니다.
Recent updates of ML/DL/DCNN
deep learning 중 특히 convolutional neural network (cnn) 을 의료데이터에 적용할 때 생기는 다양한 이슈들에 대해 개념부터 시작해 최근 연구 동향까지 빠르게 다루는 시간이었습니다. 발표자 분께서는 하나의 개념에 대해 깊게 설명하지는 않았으나, 앞으로 관련 개념을 찾아볼 때 충분한 guide 가 될 수 있을 정도로 잘 설명을 해주셨습니다.
이 세션에서는 아래와 같은 주제들을 다루었습니다.
- Transfer learning and domain adaptation
- Weakly supervised learning
- Self-supervised learning
- Explainability
- Model compression and architecture search
- Other issues
위 주제들은 모두 의료 인공지능 분야에서 중요한 이슈가 되는 주제들이라고 생각합니다.
Recent updates of GANs: basic to advanced
아직 연구에 GAN 을 활용하지 않고 있는 저로서는 GAN 의 개념을 잘 모르고 있었는데, 기본 개념과 초기 GAN 의 문제점, 그리고 발전사에 대해 이해하기 쉽게 잘 설명을 해주셨습니다. GAN 은 Generative + Adversarial 두 가지 컴포넌트로 나뉘며, Generator 가 생성된 데이터를 Adversarial 가 진짜 데이터인지 Generator가 생성한 데이터인지를 평가합니다. 이 과정을 반복하면서 Generator 는 Adversarial 을 속일 수 있을 만큼 진짜 같은 데이터를 생성하내게 됩니다. Ian goodfellow가 제안한 초창기 GAN 모델에서 advanced 된 WGAN, CGAN, InfoGAN, Cycle GAN, GauGAN 등의 최근 모델도 다루었습니다. 특히 Cycle GAN 이나 GauGAN 등을 통해 Style transfer를 할 수 있고, 이러한 개념을 활용해 MRI 데이터를 CT 데이터로 변환할 수 있다는 내용이 흥미로웠습니다. 또한 U-net 과 같은 Semantic segmentation model 뿐 아니라, GAN 을 통해서도 segmentation 을 할 수 있다는 사실도 알게 되었습니다. 의료 인공지능 분야에 관심을 갖으며, 아직 GAN 을 많이 접해보지는 않았는데, 이번 강연을 계기로 GAN 관련 내용을 앞으로 공부를 해 보아야겠습니다.
Mathematical tools in deep learning: A primer
이 세션에서는 deep learning 에서 쓰이는 다양한 수학적 개념에 대해 훑어주셔습니다. 각종 커뮤니티에서 딥러닝을 하기 위해서 필요한 선행지식으로, 수리통계학, 확률론, 선형대수, 컴퓨터 알고리즘 등을 꼽고 있습니다. 물론, 이러한 분야에 대한 개념이 딥러닝을 이해하는데 있어서 큰 도움이 되는 것은 사실입니다. 하지만 딥러닝을 하기 위해서 이러한 학문을 처음부터 끝까지 새로 배우는 것은 큰 시간과 비용이 소모됩니다. 특히 수학 관련해서는, 딥러닝에 활용이되는 수학적인 내용중 핵심적인 부분만 빠르게 학습하는 것이 시간을 줄이는 법일 것입니다. 이러한 관점에서 강연자분은 딥러닝에 활용되고 있는, 수학적인 개념을 집어서 강연을 해주셨습니다. 또한 강연자분은 Dive into deep learning 을 딥러닝 처음 학습 교재로 추천해주셨습니다 (https://www.d2l.ai). 개인적으로 저도 Ian good fellow 의 딥러닝보다 더 딥러닝 입문서로 추천하는 책입니다. Ian goodfellow 의 저서는 다소 교과서적이고 딱딱한 면이 있지만 이 책의 경우 보다 insightful 하게 설명을 하고 있고, 코드도 함께 나와 있어 입문서로써도 좋으며 어느정도 딥러닝에 경험이 있는 사람에게도 충분히 도움될 것으로 생각합니다.
Explainability
다음은 Unist XAIC 그룹에서 Explainability 에 대해 다루어주셨습니다. Interpretability와 Explainability의 차이와 그것이 의료에 있어서 왜 중요한지에 대해 조금 더 구체적으로 알 수 있었고, 이를 구현하는 기술적인 방법에 대해 파악할 수 있었던 시간이었습니다. Interpretability 란 모델을 해석할 수 있는 것, 즉 딥러닝을 예로 들면, 각각의 layer 와 node가 무엇을 하는지에 대해 이해하는 것으로 볼 수 있습니다. Explainability란 왜 모델이 그러한 판단 (decision-making)을 내렸는가에 대해 reasonable 한 설명을 할 수 있는가에 대한 것입니다. 딥러닝은 black box의 성격이 강한 over-hyperparameterized 된 모델입니다. 초창기에는 모델이 어떻게 돌아가는지보다는 성능, 즉, 도메인 데이터에 대해 잘 working 하는 것이 중점이었습니다. 특히 하지만 의료 분야의 경우 이러한 decision-making이 매우 중요한 분야 중 하나이기 때문에 Interpretability와 Explainability가 중요한 이슈일 것입니다.
Explaining Deep Neural Networks
- Input Attribution Method (TU Berlin)
딥러닝 모델의 예측 결과에 대해 시각적 해석을 돕는 방법입니다. LIME, CAM, Layer-wise Relevance Propagation(LRP) 등이 유명한 방법입니다. 여기서 LIME 과 CAM 의 경우, CNN 에만 사용할 수 있는 모형이고, LRP 의 경우 모든 Neural Net 에 사용할 수 있는 방법입니다.
- XCAD: Explainable Computer Aided Diagnosis
- Dissecting Deep Neural Networks (MIT)
- Generating Examples inside of Deep Neural Networks (UNIST)
Explaining by Combining Explainable Models
- Automatic Statistician (MIT/Cambridge)
- Relational Automatic Statistician (UNIST)
Automatic statistician 은 학습된 모델을 여러개의 설명 가능한 모델로 분할하여 설명하는 기법입니다.
https://www.automaticstatistician.com/index/
Finding Local Explanations (Model Agnostic Methods)
- Counterfactual Generation (Toronto)
- SHapley Additive exPlanation (SHAP)
위 방법은 모델 불가지론적 방법이라고 부르는 모델에 상관없이 어떤 모델이든 설명 가능하도록 하는 방법들입니다. 즉, 신경망 뿐만 아니라 다른 머신러닝 모델에도 적용할 수 있습니다.
Uncertainty
다음은 루닛의 김민철님께서 딥러닝 모델의 Uncertainty 에 대해 다루어주셨습니다. 아래 3가지 내용에 대해 설명하였습니다.
- Calibration
- Uncertainty within a model
- AUC confidence interval
Calibration 의 정의는 다음과 같습니다.
the probability associated with the predicted class label should reflect its ground truth correctness likelihood.
즉, 예측 모형에서 클래스를 Probability 를 의미하는 값을 통해서 예측할 때, 그것이 실제 정답일 정도 (likelihood) 를 나타내야한다는 것입니다. 모델의 Calibration 을 점검하는 방법은 validation set 에서 probability 가 validation set에서 accuracy 와 비슷한지를 보면 되는데 이 부분에 대해서는 제 이전 포스트를 참조드립니다. Calibration 이 잘되었는지를 측정하기 위해 Expected Calibration Error (ECE) 가 기본적으로 쓰입니다.
Calibration 이 잘안되는 문제는 training 도 중 NLL (Negative log likelihood) Overfitting이 생기기 때문에 일어납니다. 이러한 calibration 문제를 해결하기 위해 가능한 방법은 다음과 같습니다.
The reasons for uncertainty
만약 calibration 이 잘 완료된 모델이 어떤 validation 데이터에 대해 0.95 라는 값을 내보냈을 때, 95 % 확률로 해당 label 이라는 뜻입니다. 하지만 일반적으로 모델에 사용하는 데이터는 population data가 아니라 sample 이며, "모델" 을 사용하는 것이기 때문에 이 값을 얼마나 믿어야할지에 대한 고민이 필요합니다.
두 번째 주제인 Uncertainty within a model 에서는 이러한 모델이 만들어낸 output 의 불확실성을 어떻게 측정하는지에 관한 것입니다. 즉, 모델을 사용하고, sample 을 사용하는 것으로부터 오는 불확실성을 어떻게 제어할 것인가에 관한 것입니다. Linear regression 의 경우 예측값에 대한 분산을 구해서 confidence interval 을 수학적으로 구할 수 있지만 non-linear 에는 분산을 구할 수가 없습니다.
따라서 bayesian 방법을 통해 모델의 파라미터의 분산을 추정하고 이를 통해 예측값의 분산을 구하는 방법을 주로 사용하게됩니다. 즉, 신경망의 모든 weight 에 사전 분포가 존재한다고 가정합니다. 이를 bayesian neural network 라고 합니다.
Dropout as Bayesian Approximation
이를 실제로 하는 방법 중에 drop-out 을 이용하는 방법이 있습니다. 아래와 같은 방법으로 model uncertainty 를 구하게됩니다.
1. Apply Dropout in all layers
2. Train the NN with SGD
3. During the test phase
a. Inference multiple times
b. Aggregate the result to approximate the posterior distribution
ref. Dropout as a Bayesian Approximation: Representing Model Uncertainty in Deep Learning (ICML 2016)
요약
Why uncertainty?
- sample vs population
- Model parameter and complexity
- Non linear models like Deep NN have no closed form solution to model variance
- Bayesian models offer a tractable way to approximate uncertainty within the model
AUC and Confidence Interval
classification 문제에서 label 을 확률값 또는 스코어를 의미하는 값을 통해 예측할 때 주로 사용되는 measure는 Area under curve (AUC) 입니다. 특히 의료분야에서는 모델이 case 와 control을 얼마나 잘 discrimination 할 수 있는지에 대해 default로 사용되는 measure 라고 볼 수 있습니다. 그리고 AUC 의 한 가지 중요한 성질은 Mann-Whitney-Wilcoxon 2-sample U-statistic 과 같다는 것입니다. (Wilcoxon 1945; Mann and Whitney 1947).
왜 그런지에 대해 생각하지 않고, AUC와 U-statistic 이 같은 것이라면, AUC 는 다음과 같은 뜻을 같습니다.
"disease, non-disease 인 sample 각각 random 하게 하나 씩 뽑았을 때, disease 인 사람이 더 클 확률"
AUC의 confidence interval 을 이러한 Wilcoxon U-stat 이 sample size 가 클 때 정규분포를 따른다는 사실을 이용해 구할 수 있습니다 (Hanley and McNeil (1982)).
만약 AUC의 95 % confidece interval 이 (a, b) 인 경우에 이를 어떻게 해석하는 방법은 다음과 같습니다.
같은 population 에서 같은 수의 sample 을 뽑아서 같은 model 을 여러번 만들었을 때, 실제 AUC 가 (a,b)에 포함될 확률이 95 % 이다.
하지만 모든 신뢰구간이 그렇듯 (a,b) 가 sample 을 뽑을 때마다 달라진다는 비판은 있을 수 있다고 생각합니다.
Meta-Learning
Meta-learning 세션에서는 아래와 같은 개념들을 다루었습니다.
- One shot learning
- Network Architecture Search (NAS)
- Auto-agent (Augmentation rule 을 learning)
- Population-based augmentation
- optimization transfer (learn-to-learn)
Meta-learning 의 핵심은 task 마다 새로운 네트워크를 만들지 않고, 새로운 task 에 적용하는 것 (knowledge transfer) 입니다. 최종목적은 모델을 사람처럼 learning 하도록 하는 것입니다. 예를 들어, image classification 에서 동물의 종류를 classification 할 때, 각 class 마다 동물의 이미지가 한 장씩 있다고해보면, 모델은 제대로 학습할 수 없지만 사람은 단 한 장의 이미지만 보고도 classification 할 수 있습니다. 사람은 그만큼 적은수의 데이터를 가지고도 generalization 을 할 수 있습니다. 즉, 사람과 모델이 다른점은 지금까지 배워왔던 지식을 활용할 수 있다는 것입니다. 예를 들어 사람은 지금까지 살면서 쌓아온 지식을 토대로 동물 A와 동물 B가 다른 종이라는 것을 쉽게 파악할 수 있습니다. 하지만 모델은 각 task 마다 새로운 모델을 만들고 학습해야합니다. 이러한 문제를 해결하기 위한 분야가 meta-learning 입니다. 또한 Meta learning 의 범위는 매우 넓으며 network architecture search 나, hyper parameter optimization 같은 분야 (learning-to-learn) 도 meta-learning 으로 분류됩니다.