-
Disease detection with Computer VisionAI for Medicine(coursera)/Disease detection with Computer Vision 2023. 12. 26. 15:29728x90
※ Training, Prediction, and Loss
딥러닝 알고리즘, 모델, NN, CNN 등의 알고리즘은 흉부 X선 input 값을 학습하여 X선에 mass(질량)이 포함되어 있는지 여부를 출력한다.

알고리즘은 영상에 질량이 포함될 확률인 score 형식으로 output 값을 생성하게 되는데, 질량을 포함할 확률은 0.48, 질량이 포함될 확률은 0.51로 출력되게 된다. 훈련이 시작되지 않을 경우에는 이러한, score와 확률 출력값은 원하는 레이블과 일치하지 않게 될 것이다.

원하는 질량 레이블이 1이고, 정상 레이블이 0으로 가정한다면 0.48은 1에서 더 멀리 떨어져 있고, 0.51은 원하는 레이블 0에서 멀리 떨어져 있게 된다. Loss function을 출력 확률과 원하는 레이블의 오차를 측정하여 계산할 수 있다.

이렇게 점점 시간이 지남에 따라 원하는 레이블에 더 가까운 score가 산출되도록 학습하면서 새로운 이미지 셋과 원하는 레이블을 알고리즘에 제시하고, Loss 값을 변형시켜 나가면서 출력 확률이 0에 가까워지는 것을 관찰하는 원리를 따른다.
※ Image Classification and Class Imbalance

의료 영상에 대한 알고리즘 학습의 세 가지 주요 과제에는 Class Imbalance, Multi-Task, Dataset Size 등의 문제가 존재한다.

의료 데이터 셋에는 질병 사례와 비질병사례가 같을 수가 없다. 실제 세계에서 발생하는 prevalence(유병률)이나 frequencies(빈도)가 반영된 것으로, 건강한 집단의 X-ray를 보면 정상인 경우가 Mass보다 훨씬 많다. 이처럼 의료 데이터셋에서는 일반적인 normal 예제가 Mass인 예제보다 100배는 더 많을 수도 있다.
그렇다면 대부분의 의료영상에서는 학습 알고리즘이 대부분 normal 예제를 사용하게 된다는 문제가 발생하게 된다.
이렇게 되면, 모든 사람의 질병 발생 확률이 매우 낮을 것으로 예측하는 모델을 만들 수 있지만, 어떤 예시가 질병에 걸려쓴지를 식별하지는 못하게 된다.
※ Binary Cross Entropy Loss Function & Data Imbalance


Binary Cross Entropy 상에서 Label 1과 Label 0일때의 Loss 계산 방식


이렇게 전체 total num 에서 negative example을 나눈 것을 Wp, 전체 total num 에서 positive example을 나눈 것을 Wn으로 설정할 경우, positive class와 negative class의 Loss Weight 자체가 동일해지는 것을 확인할 수 있다. 이렇게 가중치를 사용하여 Loss를 수정해줄 경우 Data Imbalance 문제를 해결할 수 있다.
※ Resampling to Achieve Balanced Classes

Class Imbalaced 문제를 해결하기 위해서 Resampling을 실시할 수 있다. 데이터셋을 재샘플링하여 normal과 mass 예시의 갯수를 같게 하는 것이 기본적인 아이디어가 된다. Normal과 Mass 예시를 그룹화해보면 Normal에 6개, Mass에 2개의 예시가 있게 되는데 이를 Positive example과 Negative example의 갯수가 같도록 이미지를 샘플링하는 것이다. 이렇게 되면 갯수가 적었던 Mass example의 경우 복사본이 존재할 수 있다.

이러한 Resampled 된 예시들을 Loss 계산을 해보면 Binary cross entropy Loss라는 것을 알 수 있다. Total Loss를 살펴보면 Mass Example과 Normal Example의 기여도는 동일하고, 이 접근 방식을 통해 일반 클래스를 Undersampling, Oversampling하는 등의 다양한 변형을 시도할 수 있다.
※ Multi-Task Challenge

현실세계에서는 이진분류보다는 질병의 유무를 분류하는데 초점을 둔다. 이러한 작업을 수행하기 위해서는 각각 이러한 작업 중 하나를 학습하는 모델을 만드는 것인데, 하나의 모델을 통해 모든 작업을 수행하는 객관적 방법을 만들 수도 있을 것이다.
이 방법을 통해서 하나 이상의 질병을 식별하는데 공통적인 특징들을 학습할 수 있어 기존 데이터를 더 효율적으로 사용할 수 있게 되는데, 이를 Multi-Task 학습의 설정이다.

Example들을 병이 있으면 1, 없으면 0으로 표현해주고, 모형에서 한 가지 결과를 얻는 대신 세 가지 질병의 발생 확률을 나타내는 세 가지의 다른 결과를 갖게 된다. 이러한 알고리즘을 훈련시키기 위해서는 Loss function을 이진 작업에서 Multi-Task 설정으로 수정할 필요성을 가진다.

각각의 Prediction Probabilities 값을 Loss 공식에 적용해보면, 새로운 Loss 값들의 합계로 표현할 수 있는데, 이를 Multi-Label Loss 또는 Multi-Task Loss라고 부른다. 이렇게 개별 Loss function 구성 요소가 제공하는 세 가지 Loss를 합산하여 표현한다.

이제 Multi-Task 설정에서 어떻게 Class Imbalanced를 설명할 수 있는가에 주목할 필요가 있다. Wp, Wn 등의 Positive Label과 Negative Label에 대한 가중치 손실을 적용해서 분류하는 방식을 선택한다.
※ DataSet Size Challenge

많은 의료 영상 문제의 경우 CNN, ConvNet 등의 컨볼루션 신경망을 사용하는 아키텍처를 선택한다. 2D와 3D 의료 영상 전반에 걸쳐서 사용이 가능하며, Inception, ResNet, DenseNet, ResNeXt, EfficientNet과 같은 여러가지 컨볼루션 신경망 아키텍처를 통해 이미지 분류를 가능하게 한다.
이러한 모든 아키텍처들은 수많은 데이터를 사용해야 하며, 이미지 분류 데이터 셋에 있는 수백만개의 예제를 활용해야 한다. 수백만 개의 예제가 있어야만 좋은 성능을 낼 수 있는 이 상황에서 의료 문제의 경우에는 어떻게 이 기법을 적용할 수 있을까?
1. Pretraining - 먼저 네트워크를 구축하여 자연 이미지를 관찰하고, 물체를 식별하는 방법을 학습한 다음, 학습된 특징을 복사해서 네트워크를 의료 영상 과제의 학습 출발점으로 사용하는 것이다. 그런 다음 흉부 X-ray를 관찰하고 질병의 유무를 식별하도록 네트워크를 추가로 훈련할 수 있다.
고양이, 개를 식별하는 첫 번째 학습을 통해 네트워크가 의료 과제를 학습하는 데 도움이 될 수 있는 일반적인 특징들을 학습한다는 것이다. 사전 학습을 통해 특징을 파악하고 이러한 특징을 새 네트워크로 이전하게 되면 네트워크는 무에서 유를 창조하는 것보다는 더 나은 출발점에서 X-ray를 받아들일 수 있게 되는 것이다.

2. Fine-Tuning - 일반적으로 네트워크의 EarlyLayers는 저수준 이미지 특징을 캡처하는 반면, 이후의 LaterLayers는 더 구체적인 세부 정보를 캡처하게 된다. 오히려 LaterLayers를 이용하게 되면 Pretraining 된 이미지가 흉부 X-ray 해석에 유용하지 않을 수 있는 것이다. 따라서 네트워크를 Fine-Tuning 하여 초기 Layer에서 학습한 특징을 고정하고, 더 깊은 Layer만 fine-tuning 해서 update하는 방식을 사용하는 것이다.
실제로 가장 일반적으로는 모든 계층을 fine-tuning 하는 것, 마지막 계층만 fine-tuning 하고 이전 계층에서는 fine-tuning을 적용하지 않는 방식 이렇게 두 가지를 사용한다.
Pretraining과 Fine-tuning과 같은 방식을 Transfer Learning 이라고 하며, 이를 통해 작은 데이터 셋 크기 문제를 해결하는데 효과적인 방법이다.
3. Data Augmentation - 같은 영상을 회전, 옆으로 옮기기, 확대, 밝기나 대비 변경, 여러가지 변형을 조합해서 적용하는 방식 등을 통해서 학습 데이터가 실제보다 더 많다고 생각하도록 만드는 방식.
변환의 선택에 두가지의 질문을 던질 수 있다.
1) 모델이 테스트 셋과 실제 시나리오를 일반화하는 데 도움이 되는 변형인가?
2) 디자인을 선택할 때 변환 시 레이블이 동일하게 유지되는지 확인해야 한다.
-> 라벨을 보존하는 변형이 아님에도 불구하고 변환을 적용할 경우, 다른 레이블이라고 인식될 것 같지만, 네트워크는 레이블이 다른 것이 아니라 같은 이미지를 인식하는 것과 같이 학습된다.
728x90