Theory/DL & Medical AI

[딥러닝을 활용한 의료 영상 처리 & 모델 개발] Part1-1. Machine Learning

YeonJuJeon 2024. 12. 27. 17:56

1. 머신러닝의 기본 개념

머신러닝(Machine Learning)은 컴퓨터가 데이터에서 패턴을 학습하고 이를 기반으로 새로운 데이터에 대한 예측이나 결정을 내리는 기술이다. 머신러닝은 다음과 같은 세 가지 요소로 구성된다:

  • 작업(T): 모델이 수행해야 하는 작업.
    • Ex) Classification, Anomaly Detection, Object Detection, Object Segmentation
  • 성능(P): 작업의 결과를 평가하는 기준.
    • Ex) 암을 정확히 분류한 비율(정확도).
  • 경험(E): 모델이 학습하는 데 사용하는 데이터.
    • Ex) 과거의 X-ray 이미지와 해당 라벨(정답).

결국, 머신러닝은 경험(E)을 통해 작업(T)에서 성능(P)을 점진적으로 개선하는 것을 목표로 한다.

 


2. 머신러닝과 데이터

  1. 샘플(Sample)과 라벨(Label)
    • 샘플: 학습 알고리즘이 처리하는 데이터 단위.
      • Ex) X-ray 이미지, 텍스트 문장.
    • 라벨: 모델이 학습해야 할 정답.
      • Ex) 이미지의 암 여부(0/1), 텍스트의 감정(긍정/부정).
  2. 특징(Feature)
    • 데이터의 속성으로 모델 학습에 사용.
      • Ex) 나이, 혈압, 이미지의 픽셀 값.
  3. 데이터 세트의 분류
    • 학습 데이터: 모델 학습용 (70~80%).
    • 검증 데이터: 초매개변수 조정 및 평가용 (10~20%).
    • 시험 데이터: 최종 성능 평가용 (10~20%).
  4. 데이터 준비 과정
    • 데이터 수집: 다양한 소스에서 확보 (Ex: Kaggle).
    • 데이터 정제: 결측치/이상치 처리, 중복 제거.
    • 특징 엔지니어링: 데이터 변환 및 특징 생성.
    • 데이터 분할: 학습, 검증, 시험 데이터로 나눔 (8:1:1).
  5. 관련 용어
    • 초매개변수(Hyperparameter): 학습으로 찾을 수 없어, 사전에 설정하는 값 (Ex: 학습률).
    • 정규화: 데이터를 [0, 1]로 변환.
    • 표준화: 평균 0, 표준편차 1로 변환.

3. 머신러닝의 주요 응용 분야

  1. 컴퓨터 비전 (CV, Computer Vision)
    • 조직 영상에서 암세포를 검출하거나 흉부 X-ray를 통해 암을 진단하는 데 사용된다.
      • Ex) 혈관 영상에서 잡음을 제거하거나 병변 영역을 강조.
  2. 자연어 처리 (Natural Language Processing)
    • 의료 판독 기록에서 필요한 정보를 자동으로 추출하거나 의료 챗봇 개발에 활용된다.
      • Ex) 판독 기록문 생성이나 자연어 질의응답.
  3. 신호 처리 (Signal Processing)
    • 뇌전도를 통해 외부 장치를 조종하거나 인간의 뇌 활동을 기반으로 이미지를 재구성하는 데 사용된다.
      • Ex) 신경 과학 분야에서 BCI(Brain-Computer Interface) 기술.
  4. 기타
    • AlphaFold와 같은 기술로 단백질 구조를 예측하거나 신약 개발에도 적용된다.
      • Ex) 머신러닝을 활용한 약물 설계 및 시뮬레이션.

4. 머신러닝의 핵심 개념

1. 손실 함수와 일반화

  • 손실(Loss): 모델이 예측한 값과 실제 값 사이의 차이를 수치로 표현한 것.
  • 일반화(Generalization): 학습하지 않은 데이터에서도 손실을 최소화하는 능력.
  • 학습 데이터에서 손실이 낮아도 새로운 데이터에서 성능이 떨어지면 일반화 성능이 낮은 것임.

2. 과적합과 과소적합

  • 과적합(Overfitting): 학습 데이터에는 성능이 뛰어나지만, 시험 데이터에서는 성능이 낮은 상태.
    → 해결법: 모델 단순화, 정칙화(Regularization), 더 많은 데이터 사용.
  • 과소적합(Underfitting): 학습 데이터에서도 성능이 낮아 작업 자체를 제대로 수행하지 못하는 상태.
    → 해결법: 모델 복잡도 증가, 더 많은 학습 시간 확보.

3. 오캄의 면도날 (Occam’s Razor)

  • 동일한 성능을 가진다면 더 간단한 모델이 더 낫다는 원칙.
  • 하지만 지나치게 단순한 모델은 과소적합이 발생할 수 있으므로, 복잡성과 성능의 균형을 맞추는 것이 중요.

4. 공짜 점심 없음 (No Free Lunch)

  • 하나의 알고리즘이 모든 문제를 해결할 수는 없다.
  • 문제의 특성에 맞는 알고리즘을 선택하는 것이 중요하며, 이는 각 작업마다 맞춤 설계가 필요함을 의미한다.

5. 머신러닝 학습 방법

1. 지도 학습 (Supervised Learning)

  • 데이터와 정답(Label)이 모두 주어진 상태에서 학습.
    • Ex) 흉부 X-ray에서 암 유무를 예측하는 분류(Classification) 문제.

2. 비지도 학습 (Unsupervised Learning)

  • 정답 없이 데이터의 구조를 찾는 학습 방법.
    • Ex) Whole Slide Image를 기반으로 병변 영역을 클러스터링.

3. 강화 학습 (Reinforcement Learning)

  • 보상을 최대화하기 위해 행동을 학습.
    • Ex) 의료 로봇이 환경에 적응하며 작업 수행.

4. 약한 지도 학습 (Weakly Supervised Learning)

  • 제한된 라벨 데이터를 이용해 학습.
    • Ex) 조직 영상의 일부분만 라벨링된 데이터를 사용해 세포 분할 모델 학습.

5. 준지도 학습 (Semi-supervised Learning)

  • 일부 데이터에만 라벨이 있는 경우 이를 활용해 학습.
    • Ex) 제한된 의료 영상 데이터에서 병변 영역 학습.

6. 자기 지도 학습 (Self-supervised Learning)

  • 정답 없는 데이터로 표현을 학습하고, 이후 소량의 라벨 데이터를 통해 지도 학습.
    • Ex) 대규모 흉부 X-ray로 암 예측 모델 학습.


6. k-NN, Decision Tree

1. k-Nearest Neighbor (kNN)

 

  • 개념
    • 학습 데이터를 기반으로 새로운 데이터와 가장 가까운 k개의 이웃을 찾고, 다수결로 분류하는 알고리즘.
    • 비모수(non-parametric) 알고리즘으로, 학습 과정에서 별도의 파라미터를 학습하지 않음.
  • 특징
    • 회귀 및 분류에 사용 가능.
    • Hyperparameter k는 상황에 따라 적절히 설정해야 함.
    • 거리에 가중치를 부여해 더 정교한 예측 가능.
      → 가까운 데이터에 더 큰 가중치를 부여.
  • 장점
    • 단순하고 구현이 쉬움.
    • 복잡하지 않은 데이터셋에 적합.
  • 단점
    • 데이터가 많아질수록 계산량 증가.
    • 고차원 데이터에서 성능 저하(차원의 저주).

2. Decision Tree

  • 개념
    • 데이터를 특정 조건에 따라 분할해 나가는 트리 형태의 알고리즘.
    • 각 노드는 조건, 리프(leaf) 노드는 예측 결과를 나타냄.
  • 특징
    • 데이터 분기를 통해 모델의 해석 가능성이 높음.
    • Hyperparameter: 최대 깊이(depth), 최소 샘플 분할(min_samples_split).
    • Overfitting 방지를 위해 가지치기(pruning) 필요.
  • 장점
    • 데이터를 직관적으로 분류.
    • 연속형 데이터와 범주형 데이터 모두 처리 가능.
  • 단점
    • 과적합에 취약.
    • 작은 변화에도 트리 구조가 크게 달라질 수 있음(불안정성).

kNN과 Decision Tree 비교

알고리즘 장점 단점 사용 사례
kNN 단순 구현, 계산량 적음 데이터 많을수록 계산량 증가, 차원의 저주 간단한 분류 문제
Decision Tree 직관적, 해석 용이, 다양한 데이터 처리 가능 과적합 취약, 불안정성 복잡한 분류 및 회귀 문제

7. 실습

더보기
간단한 실습 과정이므로 코드는 생략함.

k-Nearest Neighbor (kNN)

  1. 라이브러리 불러오기
    • numpy: 수치 연산을 위해 사용.
    • matplotlib.pyplot: 결과 시각화.
    • sklearn.neighbors: kNN 알고리즘 제공.
    • sklearn.datasets: Iris 데이터셋 로드.
  2. 데이터 준비
    • Iris 데이터셋에서 첫 두 개의 특징(Sepal Length, Sepal Width)만 사용.
    • Class 0을 제외한 이항 분류를 위해 데이터 필터링.
  3. 결정 경계(Decision Boundary) 생성
    • make_meshgrid: 데이터 공간의 모든 가능한 특징 조합 생성.
    • plot_contours: kNN 모델의 분류 경계를 시각화.
  4. k 값 변화 실험
    • k = 3, 5, 7, 15에 대해 각각 kNN 모델을 학습하고, 결정 경계를 시각화.

Decision Tree

  1. 라이브러리 불러오기
    • numpy: 수치 연산을 위해 사용.
    • matplotlib.pyplot: 트리 구조 시각화.
    • sklearn.tree: Decision Tree 알고리즘 및 트리 시각화 도구 제공.
    • sklearn.datasets: Iris 데이터셋 로드.
  2. 데이터 준비
    • Iris 데이터셋의 모든 특징(Sepal Length, Sepal Width, Petal Length, Petal Width)을 사용.
    • 전체 클래스를 포함하여 다중 분류를 수행.
  3. 모델 학습
    • DecisionTreeClassifier: 최대 깊이(max_depth=4)로 설정하여 과적합 방지.
    • 트리 구조를 학습하고 데이터셋에 적용.
  4. 트리 시각화
    • tree.plot_tree: 분기 조건, 클래스 분포 등을 포함한 트리 구조를 시각화.


결론

머신러닝은 데이터에서 패턴을 학습하고 이를 바탕으로 예측과 결정을 내리는 기술로, 다양한 문제에 적용 가능하다는 점에서 그 중요성을 확인할 수 있었다. 이번 학습에서는 kNN과 Decision Tree 알고리즘을 통해 기본적인 머신러닝 프로세스를 이해하고, 두 알고리즘의 특성을 비교해보았다.

kNN은 간단하고 직관적인 알고리즘으로, 데이터 간 거리 기반의 예측 방식을 통해 빠르게 적용할 수 있었다. 하지만 데이터가 많아질수록 계산량이 증가하고, 고차원 데이터에서는 성능 저하가 발생하는 한계도 명확히 느껴졌다. 반면, Decision Tree는 분기 구조를 통해 데이터의 조건을 시각적으로 이해할 수 있었고, 해석이 용이했다. 그러나 과적합 문제가 발생하기 쉬워 가지치기와 같은 조정을 통해 성능을 개선해야 했다.

두 알고리즘의 실습을 통해 데이터 전처리, 하이퍼파라미터 설정의 중요성을 체감했으며, 문제의 특성과 데이터의 성격에 따라 적합한 알고리즘을 선택해야 한다는 점을 다시금 깨달았다. 앞으로는 다른 알고리즘과의 성능 비교 및 다양한 데이터셋에서의 실험을 통해 더 나은 적용 방안을 탐구할 수 있을 것이다.