의생명 분야에서의 신경망 모델 (Deep learning in biomedicine)

본 포스팅에서는 Nation biotechnology에서 publish된 논문을 기반으로 하여 의생명 분야에서 적용되고 있는 신경망 모델 (Deep learning) 에 대해서 살펴보려고합니다. (https://www.nature.com/articles/nbt.4233)

자율 주행차, 게임, 음성 인식, 텍스트 인식 등 Deep learning은 인공지능 연구자들과 일반 대중들의 마음을 사로잡고 있습니다. 최근에는 Deep learning은 임상 의사들의 관심도 끌고 있습니다. 지금까지의 많은 분야에서의 AI를 통한 모델링의 목표는 인간 레벨의 인공지능 (human-level AI)였습니다. 이미 사람이 잘 하는 것들을 높은 정확도로 모방하는 것입니다. 

이러한 분야들과 의생명 분야 (Biomedical) 데이터의 차이점은 의생명 분야의 데이터는 사람도 이해하기 힘들다는 것입니다. 예를 들어, genome 데이터는 사람이 맨눈으로 보고 바로 이해하기 어렵습니다. Biomedical 분야에 AI를 적용하는 것의 한가지 목표는 이렇게 사람이 쉽게 하기 힘든 분야에서 AI가 추론을 통해 사람에게 통찰력을 전해줄 수 있을까 하는 것입니다. 

딥러닝과 Biomedical 분야의 간략한 역사


실제로 이러한 것들을 실현 가능하도록하는 기회가 만들어지고 있습니다. 큰 규모의 Biomedical dataset들이 수집되고 있기 때문입니다. 예를 들어, NGS 데이터를 들 수 있습니다. Biomedical 분야에 Deep learning을 적용한다는 것은, 다양한 분야에서 각광 받고 있는 AI의 방법론인 Deep learning 라는 도구를 이용해서 이 데이터들로부터 유용한 가치를 이끌어내고, 과학적인 발견을 하고자 하는 것입니다. 


NGS (Next-generation sequencing) 데이터의 증가




머신러닝과 Deep learning의 핵심 아이디어를 간단하게 이야기해보겠습니다. 간단한 모델, 예를 들어, Linear regression과 다르게 Deep learning은 조금 더 복잡하고 유연한 모델링을 할 수 있습니다. Label을 Input feature로 바로 mapping 하는 것이 아니라 intermediate variable을 만들고, 이 intermediate variable의 function으로 output을 예측하는 모델을 만드는 것입니다. Deep learning의 강점은 이러한 Feature (독립변수)와 Label(종속변수) 사이의 어떠한 복잡한 함수관계도 유연하게 모델링할 수 있다는 것이며, 이론적으로도 이것이 가능하다는 것입니다 (Universal approximation theorem). 1980-90년대쯤 이러한 복잡한 모델링이 대한 이론적이 이미 정립이 되어있었지만, 이를 실현 가능한 하드웨어 기술이 부족해 실현할 수 없었습니다. 현 시대에서는 이러한 복잡한 모델에서 계수를 찾는 것이 계산적으로 가능합니다. 이는 이러한 Deep learning model의 수많은 계수 추정을 효율적으로 할 수 있는 다양한 알고리즘 및 라이브러리들 (Pytorch, tensorflow) 의 등장과 GPU 등의 발전으로 인한 컴퓨팅 파워의 발전의 결과입니다.  


Shallow model vs. Deep model.
 


우선 Shallow model과 Deep model의 차이에 대해 간단하게 설명을 하고 넘어가려고 합니다. Linear regression의 경우, Input feature와 Label 사이의 Linear 한 관계를 가정합니다. 그래서 예측값은 Input feature와 Weight의 linear combination으로 만들어 집니다. (여기에 bias를 더해준 값이 됩니다.) 

하지만 딥러닝의 한 종류인 Multi-layer perceptron의 경우, Layer라는 개념을 도입해서 output을 바로 예측하지 않고, Intermediate variable들을 만듭니다. Deep learning 이란 이러한 Layer 구조를 도입하여 Input feature와 Label 사이의 복잡한 함수관계를 모델링 하는 것을 말합니다. 이러한 구조를 도입하면, X와 Y의 관계가 linear한 관계가 아닌 경우, 혹은 다양한 형태의 Interaction이 존재하는 경우에, Y를 Linear regression 보다 더 잘 예측할 수 있게 됩니다. 즉, Deep model은 bias를 줄인다고 할 수 있습니다. 반면, Overfitting 등의 문제로 variance가 커질 수 있다는 것이 Deep model의 단점이기도 합니다. 


Genome sequencing 데이터에 대한 신경망 모델의 응용


다음으로는 Biomedical 데이터의 한 종류라고 할 수 있는 Genome sequencing 데이터에 어떻게 Deep learning이 어떻게 적용되는지를 알아보겠습니다. 예를 들어, motif detection (transcription factor binding site detection) 같은 분야를 예로 들어보면, 이 분야에는 Bioinformatics 분야에서 전통적으로 자주 사용되었던 Position weight matrix라는 방법이 있습니다. 어떤 문제에 대해 이러한 DNA Sequence들이 알려져 있을 때, 이것에 기반하여 아래와 같은 matrix를 만듭니다. 

Position weight matrix (position probability matrix)


이 Matrix는 해당 위치에서 어떤 sequence가 발견된 확률을 나타내는 matrix입니다. 이것을 기반으로 새로운 sequence가 들어왔을 때, 어떤 score를 내주고 이 score를 기반으로 sequence에 존재하는 어떤 pattern을 detection 할 수 있습니다. 이것은 Sequence와 어떤 pattern을 직접적으로 mapping 시킨 것으로 볼 수 있습니다. 반면 Deep learning에서의 방법은 layer를 더 만들어, Sequence와 어떤 pattern 사이에 존재할 수 있는 복잡한 관계를 모델링할 수 있습니다. 


이 그림은 CAACTT 라고 하는 sequence pattern을 찾는 CNN Model을 나타낸 것입니다. 물론 실제 상황에서는 CAACTT라고 하는 Pattern을 우리가 알 수는 없습니다. Deep learning에서는 수많은 데이터를 주고, 그 속에서 CAACTT라고 하는 Pattern을 딥러닝이 직접 학습하도록 하는 것입니다. 그리고 딥러닝의 강점이 바로 이런 것입니다. CNN에 익숙하신 분들은 잘 아시겠지만, 이 것은 1-D Convolution에 Same padding을 적용한 것으로 볼 수 있습니다. 그림에 나와있듯, Filter size는 3으로 잡고, 총 Input sequence로는 18의 길이를 갖는 sequence를 넣어준 것입니다. 이것은 일렬로 죽 늘어선 1차원 공간상의 이미지로 볼 수 있습니다. 2차원 이미지에는 W-H-(RGB) 3개의 차원이 있다면, Genome data의 경우 W-(ATCG) 2개의 차원이 있는 것입니다. 

딥러닝을 통해 Sequencing 데이터에 무슨 일을 할 수 있는가?

다음으로는 이러한 Deep learning이 Biomedical 분야에 어떻게 적용되고 있는지를 설명하였습니다. genetic data에 어떻게 되고 있는지를 먼저 예로 들었습니다. 현재, Genotype-Phenotype 관계를 규명하는데 GWAS (Genome-wise association study) 라고 하는 도구가 사용됩니다. 수많은 샘플을 보아 variant랑 phenotype의 association을 통계적으로 보는 것입니다. GWAS를 통해 variant를 찾는 것에 추가적으로 variant의 function을 연구하는 것도 한 가지 주제입니다. 왜냐하면, GWAS를 통해 찾아낸 variant (SNPs)는 그것이 질병과 인과관계를 갖는다고 보기 어렵기 때문입니다. GWAS의 경우 Mendelian disease와는 다르게 LD, 작은 effect size, regulatory network의 복잡한 구조 등으로 인해 causal variant를 찾기가 힘듭니다. 몇몇 coding 지역에 위치한 causal variant는 코돈을 통해서 그 변이의 effect를 예측할 수 있지만, non-coding variant 같은 경우, 해석이 매우 어렵습니다. Deep learning은 이 분야에서 적합합니다. 바로 transcription, splicing, regulation 등의 Molecular phenotype과 genetic variant의 관계를 보는 것입니다. 

신경망을 통한 Molecular phenotype 예측 소프트웨어, 논문

1. SPIDEX
    DNA sequence → percent-spliced-in of cassette exons across tissues
2. DeepBind
    DNA and RNA sequence → transcription factor and RNA-binding protein binding
3. Basset
    DNA sequence → DNase hypersensitivity
4. DeepSEA and DanQ
    DNA sequence → transcription factor binding
5. TITER
    DNA sequence → translation initiation sites

이것들이 현재 논문으로 나와 있거나 소프트웨어로서 구현된 variant를 통해 molecular phenotype을 예측하는 구현체들입니다. 이러한 non-coding variant로부터 molecular phenotype을 예측하는 일에는 주로 CHIP-seq이나 DNase-seq 데이터를 트레이닝 데이터로 이용하며, DNA sequence로부터, transcription factor binding이나, DNase hypersensitivity (이를 chromatin feature 라고도 합니다.) 같은 것들을 예측합니다. 


DeepSEA (Deep learning based sequence analyzer)

DeepSEA는 Deep learning based sequence analyzer의 약자인데, Genome Sequence를 input으로 받아들여, variant의 effect를 chromatin에 미치는 영향을 바탕으로 예측합니다. ENCODE, Roadmap epigenomics 와 같은 genome의 function을 찾아내려는 목적을 갖고 수집된 데이터들, Chip-seq 또는 DNase-seq 데이터를 학습해, variant가 chromatin feature 에 미치는 영향을 학습한 후, 최종적으로 학습된 모델에 wild-type과 variant가 있는 두 개의 input을 주고, output을 뽑아내서 이 output의 비율로 그 variant의 effect를 예측하는 방식입니다. 


DeepSEA의 데이터 구축 (Ground truth) 및 딥러닝 모델 구조

DeepSEA의 데이터 구축 과정 및 모델 아키텍쳐입니다. 데이터 구축 과정에서는 총 919개의 chromatin feature를 학습하도록 Ground truth가 마련되습니다. 시퀀스를 통해 이것이 chromatin feature (예를 들어, Dnase hypersensitive site) 인가? 하는 것이 바로  Y, 즉 예측하고자 하는 것입니다. X로는 whole genome을 200bp 로 나눈 후, 이 시퀀스 중 절반 이상이 919개의 chromatin feature의 peak region에 포함되면 1 아니면 0으로 코딩되었습니다. 모델로는 Convolutional neural network를 사용하였고, Regularization을 위해 L2, L1 regularization, Dropout을 사용하였습니다. 



모델 구축


DeepSEA의 목적은 총 2개로 나눌 수 있습니다.


1. 해당 Variant가 Chromatin feature에 미치는 영향 파악, 이를 통해 variant의 각각의 chromatin feature (919개) 에 대한 기능을 파악할 수 있습니다.

2. 해당 Variant의 overall한 functional prediction 


1을 위해서 variant가 없는 sequence (1000bp 단위) 와 variant가 있는 sequence를 모델에 넣어서 log(P(reference)/P(alternative))를 통해 해당 chromatin에 variant가 미치는 영향을 파악합니다. 2를 위해서는 총919개의 chromatin feature에 대한 예측값과 함께 Evolutionary conservation score를 이용합니다. 저는 이 부분이 DeepSEA 가 대단한 부분이라고 생각합니다. 기존에 알려진 과학적 지식을 Deep learning 모델에 통합하여 더욱 잘 functional score를 예측하는 것이죠. 일종의 앙상블 모델이라고 볼 수 있습니다. 이를 통해 딥러닝 모델로부터 발생할 수 있는 오버피팅을 방지하고 더욱 robust한 모델이 될 수 있습니다. 



모델 테스트


위 링크에 방문하면 실제로 웹으로 구현된 DeepSEA 를 이용해볼 수 있습니다. variant를 나타내는 VCF file을 인풋으로 넣어주면, VCF file에 있는 각각의 variant에 대해, 919개의 chromatin feature에 대한 영향과, overall한 functional prediction score를 구합니다. 

신경망을 통한 Phenotype 을 예측하는 것이 가능한가?

Sequence를 통해 바로 phenotype을 예측할 수 있지 않겠냐 라는 의문이 들 수 있습니다. 물론, 최종적으로 나아가야할 목표는 sequence를 통해 phenotype 보는 것입니다. 하지만 아직까지 딥 러닝이 그 정도의 수준은 아닌듯 합니다. Molecular phenotype은, genotype에서 phenotype으로 이어지는 복잡한 메커니즘 중 최하단에 있다고 말할 수 있는 것이고, 아직까지 그것조차 제대로 해결되어지고 있지 않습니다. 그 다음으로 해결할 과제는 network-level gene interaction, physiological process 등 여러가지 해결해야할 과제들이 남아있습니다. 하지만 본 논문에서는 궁극적인 목표는 딥러닝에 genotype-phenotype 데이터를 학습시키고, 여기에 여러가지 생물학적 지식, 실험 데이터를 합쳐서 바로 phenotype을 예측하는 것이라고 주장하고 있습니다. 저는 DeepSEA에서의 사례처럼 Evolutionary conservation score 처럼, 학습된 딥러닝 모델에 이러한 explicit한 "지식" 들을 어떻게 통합하냐가 하나의 해결해야할 과제로 보입니다.


Medical Image에서의 신경망의 응용

다음으로는 medical image 분야에서의 딥러닝의 응용입니다. 이 분야는 딥러닝이 가장 직접적으로 응용이되고 있는 분야이고, 실제로 임상에서 활용이 되고 있는 분야이기도 합니다. Medical image의 특징은, Multi-modal, 즉 MRI, X-ray, CT 등 다양한 방법으로 이미지가 얻어지고, 같은 MRI 데이터라도 세팅값, 기기 종류에 따라 intensity가 모두 다릅니다. 또한, CT 같은 경우 3D 이미지 이기 때문에 다루기 까다롭습니다. 하지만 그럼에도 불구하고 딥러닝이 가장 성공을 한 분야이기도 합니다.

신경망을 Medical Image에 적용할 때 발생하는 이슈들

1. 이미지에 대한 높은 수준의 해석은 Automation이 힘듭니다. 이는 사람에 있어서도 사람마다 주관적인 기준이 있기 때문에 Intra-class variation이 크기 때문입니다. 

2. 또한 딥러닝 자체가 블랙박스의 성격을 띈다는 것입니다. 특히, 이미지 진단의 경우에는 이해 관계가 매우 크기 때문에, 딥 러닝의 결과를 어떻게 설명하느냐가 매우 중요합니다. 이 논문에서는 딥러닝이 그렇게 예측한 이유, 그 지역을 highlighting을 해주는 등의 전략이 필요하다고 언급하였습니다.

3. 세 번째는 사람의 예측값을 Ground truth로 해서 트레이닝 했을 때, 사람의 성능을 뛰어넘기 힘들다는 것입니다. 물론, 딥러닝은 계속 같은 값을 내기 때문에 Reliability는 좋습니다. 다만, 그 트레이닝 데이터가 한 사람의 기준에만 맞춘 경우, 다른 데이터를 대상으로 했을 때, bias가 생길 수 있다는 것입니다. 그러므로 Multi-expert consensus가 중요하다고 할 수 있습니다. 

국내 Medical Image 응용

국내에서는 2018년도에 Vuno에서 최초로 식약처에서 의료기기 사용허가를 받았습니다. 성장기 소아에서 X-ray 영상에서 인공지능을 통해 골연령을 자동으로 측정해주는 Vunomed-Boneage 소프트 웨어를 통해서입니다. Vuno에서는 이 방법의 효율성을 보이기 위해 임상시험 논문을 냈습니다. 결과에 따르면 AI가 2명의 의사들보다 consensus와의 concordance가 더 좋았고, 특히 의사가 AI 를 보조적으로 활용했을 때, 그렇지 않았을 때보다 concordance가 증가하는 결과를 보였습니다. (이 부분에 대해 궁금하신 분들은 최윤섭님의 유투브를 참고하시기 바랍니다. https://www.youtube.com/watch?v=wqXzmChH3N0&t=349s)




딥러닝과 실제 세계의 괴리

다음으로는 Deep learning이 실제 현실에 사용되었을 때 발생할 수 있는 문제점에 대한 것입니다. 

1. 가장 중요한 것은 반드시 Deep learning의 성능이 보장 되어야한다는 것입니다. 
    • 이를 위해서는 Performance 측정을 해야합니다. C.V 나 hold out validation 같은 방법을 통해 충분한 validation이 이루어져야 합니다.
    • 두 번째는 Deep learning을 Overfitting이 큰 문제이기 때문에, 모델의 불확실성이 어느정도인지를 보여주어야 한다는 것입니다. 통계적인 모델처럼 딥러닝은 결과의 신뢰구간을 통계적인 방법으로 얻어낼 수 없기 때문에 부트스트랩이나 베이지안 방법 등을 통해 모델의 신뢰구간을 추정할 수 있습니다. 

2. 또한 딥러닝의 문제점은 딥러닝이 목표하는 바와 실제 목표하는 바가 다를 수 있다는 것입니다. 이것이 Target mismatchloss function mismatch 입니다. 예를 들어, 임상에서는 종양의 크기가 일정한 임계치를 넘는 것이 중요한데, 딥러닝 모델을 트레이닝 할 때는 Intersect over union을 최소화 하기 위해 트레이닝을 보통 이용하곤 합니다. 이 경우에 딥 러닝 모델은 실제로 원하는 결과에서 bias가 생길 수 있습니다.

3. 다음으로는 오로지 딥러닝은 현재 이용가능한 데이터에 기반하여 예측 모형을 만드는 것이기 때문에 selection biasconfounding 이 생길 수 있고, 이 경우에 Causality 는 추론하는것이 매우 힘들다는 것입니다. 예를 들어, 여자라는 단어는 인문학, 남자라는 단어는 이공계와 연관시키거나, 흑인을 백인보다 더 위험하다고 학습할 수 있습니다. 


신경망 모델이 신뢰를 얻기 위해서는?

1. Performance를 보장해야합니다.
    • Stakeholder가 원하는 메트릭을 제공해야 한다.
    • Performance를 보장하기 위해서는 데이터 가공, 모델 선택, 오버피팅, 아웃라이어 제거, 혼란 변수등을 잘 해야한다는 것입니다.
    • 원하는 메트릭이 Stakeholder 마다 다르기 때문에 여러가지 메트릭에 대해 성능을 테스트해서 로버스트 한지를 봐야합니다.


2. Stakeholder가 그것을 사용할만한 Rationale이 있어야합니다.

  • 이들은 Small-test를 한다거나 직관, 사고실험 등으로 신뢰할만한지를 판단하기 때문에 이런것들에 도움을 주어야 합니다.
  • 가장 좋은 Rationale은 인과적인 설명입니다. 그래서 causal relationship 에 대한 설명이 반드시 이루어져야 합니다.

결론

1. 의생명 분야는 복잡하기 때문에 정확하게 이해하기 힘들고, 그렇기 때문에 AI의 서포트가 필요합니다.

2. 딥러닝은 수많은 데이터셋을 포함하여 복잡한 모델링을 하는데 유망한 방법이고, 그렇기 때문에 Deep learning 은 의생명 분야에서 중요한 역할을 할 것입니다.