전이학습
만약 방사선 사진을 이용해서 암을 진단하는 모델을 개발하고 싶다고 해보자. 그러나 우리가 가지고 있는 데이터의 수가 모델을 제대로 학습시키기에는 턱없이 부족하다. 어떻게 해야할까?
전이학습(Transfer learning)을 이용하면 된다. 전이학습은 다른 데이터에 대해 이미 학습을 완료한 모델을 우리가 원하는 데이터에 적용시키는 것을 말한다. 위 상황에서 우리는 ‘이미지 인식’이라는 과제에 대해 학습을 끝낸 모델을 가져와 사진을 통해 암을 진단하도록 바꿀 수 있는 것이다.
전이학습에서는 보통 기존에 학습된 신경망의 마지막 층을 우리가 원하는 방식으로 바꾸게 된다. 우리가 해결하고자 하는 문제의 데이터가 많을 경우 모든 층을 재훈련하지만, 데이터가 거의 없을 경우에는 새로 추가한 마지막 층만 학습하게 한다. 기존의 모델을 훈련하는 과정을 pre-training, 전이한 모델을 학습하는 것을 fine-tuning이라고 한다.
전이학습은 다음과 같은 상황에서 주로 사용된다.
과제 A의 모델을 과제 B로 전이할 때,
- A와 B가 같은 입력을 가진다.
- A가 B보다 더 많은 데이터를 가진다.
- A가 가진 저수준의 특성이 B를 학습하는 데 도움이 된다.
이미지 인식 모델을 방사성 사진 판독 모델에 적용할 때, 음성 인식 모델을 유발단어(wake word) 인식 모델에 적용할 때처럼 과제 A와 B가 같은 입력을 가져야 전이학습을 할 수 있다. 그리고 당연히 모델을 제공하는 과제 A가 더 많은 데이터를 가져야 우리가 가진 문제 해결에 도움이 될 것이다. 또한, 과제 A가 더 저수준(넓은 범위)의 문제여야 전이학습이 가능하다.
전이학습은 우리가 가진 데이터가 충분하지 못할 때 충분한 데이터로 학습한 다른 모델을 대신하여 이용할 수 있다는 점에서 매력적이다.
다중 작업 학습
다중 작업 학습(Multi-task learning)이란 한 가지 신경망으로 하나의 문제가 아닌 다양한 문제를 동시에 해결하는 것을 말한다.
자율주행 자동차를 위한 이미지 인식 모델을 개발한다고 생각해보자. 모델이 인식해야하는 요소들은 보행자, 다른 자동차, 신호등, 표지판 등이 있을 것이다. 이 4가지 요소들을 인식하는 모델 4개를 따로 개발할 수도 있지만, 하나의 모델로 문제를 해결할 수도 있다. 이것이 바로 다중 작업 학습이다.
다중 작업 학습에서는 우리가 알아보고자 하는 요소가 곧 출력이 된다. 보행자가 있으면 1, 없으면 0, 차가 있으면 1, 없으면 0, 이런 식이다. 신경망을 구상한 다음에는 손실값을 정의해야 한다. 다음과 같이 될 것이다.
$\displaystyle \frac{1}{m} \sum_{i=1}^{m}{\sum_{j=1}^{4}L(\hat{y}_j^{(i)}, y_j^{(i)})}$
여기서 손실함수는 로지스틱 손실을 사용한다.
다중 작업 학습은 데이터가 모든 요소를 가지지 않아도 이용할 수 있다. 예를 들어, 한 이미지에서 보행자와 다른 차의 유무에 대한 정보는 있는데, 표지판이나 신호등의 유무에 대한 정보는 아예 없는 경우 말이다. 다중 작업 학습은 손실함수의 값을 더할 때 0이나 1의 값을 가지는 j만을 더하도록 하여 정보가 아예 없는 상황을 처리할 수 있다.
다중 작업 학습은 다음과 같은 경우에 많이 사용한다.
- 여러 문제들이 하나의 저수준의 특성을 공유할 때
- 각 문제에 대해 비슷한 데이터 크기를 가질 때 (보통의 경우)
- 신경망이 충분히 클 때
현실에서는 다중 작업 학습보다는 전이학습을 훨씬 더 많이 사용한다. 컴퓨터의 이미지 인식은 다중 작업 학습이 더 유용하게 사용되는 드문 경우이다.
모든 이미지는 강의자료에서 발췌하였음을 밝힙니다.
댓글남기기