본문 바로가기
AI · 인공지능/알기쉬운 AI

[알기쉬운 AI - 20] 비정상적인 과학습

by 두우우부 2020. 2. 10.
반응형

 

딥러닝은 많은 양의 학습 데이터가 필요하다고 알려져 있지만, 현실에서는 그렇게 데이터를 모을 수 없다는 현실이 있습니다. 그래서 확산된 것이 적은 데이터로 학습하는 기술입니다. 이번에는 그 대표적인 방법을 설명하고자 합니다. 

 

적은 데이터로 학습하는 방법

소량의 데이터로 학습하는 기술이 빠르게 진화하고 있습니다. 데이터의 양이 적으면 데이터를 모으는 노력과 클렌징의 수고, 학습에 걸리는 시간과 부하도 크게 절약할 수 있으며, 무엇보다 데이터의 양은 적어도 인공 지능을 사용하고 싶다는 요구에 부응할 수 있습니다. 

 

적은 데이터로 학습하는 방법에는 아래의 세 가지가 있습니다. 품질 좋은 데이터를 사용하는 것은 이전에 이미 설명했으니 이번에는 데이터 어그먼테이션과 전이 학습을 설명하겠습니다. 

1. 품질좋은 데이터를 사용
2. Data Augmentation
3. 전이 학습 

Data Augmentation

'Data Augmentation'은 직역하면 '데이터 확장'입니다.

원래의 학습 데이터에 변환을 가하여 데이터 양을 늘리는 기술입니다. 특히 CNN(회선 신경망)등을 이용한 화상 처리에서 효과를 발휘합니다. Data Augmentation에는 다음과 같은 것이 있습니다.  

 

  • 노이즈 증가(가우스 노이즈와 임펄스 노이즈) 
  • 콘트라스트 조정 
  • 밝기 조정(감마 변환)
  • smoothing(평균화 필터)
  • 스케일링
  • 반전(좌우 / 상하)
  • 회전
  • 이동(수평 / 수직 )
  • 부분 마스크(Cut out 및 Random Erasing)
  • 트리밍 (Random Crop)
  • 변형
  • 변색
  • 배경 교체(이것은 라이브러리의 기능이 아닌 별도의 작업)

 

Keras나 TensorFlow, Cognitive toolkit 등 최근 신경망 라이브러리는 이러한 기능이 포함되어 있습니다. 학습에 사용될 이미지를 준비할 때 전처리로 노이즈를 추가하고, 밝기를 줄이거나 일부를 마스킹하는 등 이미지를 변환하여 robust성을 높일 수 있습니다. 또한 라이브러리에 따라 학습 과정 중 실시간으로 이러한 처리가 가능하기도 합니다. 

robust성 이란?
외란이나 장애에 강하다는 의미로, 자동차로 비유하면 '비포장길에 강하다', 사람으로 비유하면 '맷집이 강하다'같은 의미입니다. 이미지 인식은 대상 이미지가 깨끗한 것만 있는 게 아니고, 일부가 숨어 있거나 각도가 안 좋다던지, 심지어 긁혀 있기도 합니다. 운영 데이터의 이미지 품질이 불안정한 경우, 그런 이미지도 인식할 수 있는 robust성이 높은 분류기가 필요합니다.

 

Data Augmentation의 주의점

여러 시행착오를 겪어보면 정답률이 좋아지는 경우도 있고, 반대로 악화되는 경우도 있습니다. 악화되지 않기 위해 조심해야 할 포인트를 세 가지만 꼽아봅시다.  

 

(1) 과학습 

과도한 학습(Overfitting)은 특정 훈련 데이터만 너무 학습하다가 분류기가 그 데이터에만 강한(일반 데이터에는 약한) 공붓벌레가 돼버리는 것입니다. Data Augmentation은 원래는 같은 이미지에 변형을 가한 것뿐이므로 외관상 데이터량이 증가하더라도 원래의 특징에서 그렇게 큰 변함이 없고, 그 데이터에 특화된 공붓벌레가 되기 쉽습니다. 소량의 데이터로 학습할 수 있는 효과적인 방법이라고 해도 어느 정도 데이터량은 필요합니다. 

 

(2) 품질이 낮은 데이터 

Data Augmentation 결과 실제로는 있을 수 없는 데이터나 인간이 봐도 판단할 수 없는 데이터가 되어 버리면 그야말로 저품질 데이터를 학습시키는 것이 됩니다. 예를 들어 필기 인식에 MNIST라는 편리한 데이터 세트가 있지만, 좌우 반전이나 상하 반전 등의 처리를 하면 안 됩니다. 어디까지나 안정성을 높인다는 인식하에 변형 처리를 해야 합니다.  

 

(3) 운영 데이터를 의식 

클렌징이나 Data Augmentation의 전처리는 운영 데이터를 강하게 의식합니다. 예를 들어, 꽃의 이름을 가르쳐주는 AI가 있습니다. 어떤 운영 데이터를 의식해야 할까요?  

 

먼저 전제로, 꽃의 경우는 같은 꽃이라도 색이 다르다거나 모양이 다르다거나 하는 것들이 많습니다. 반대로 다른 꽃이지만 사진으로 구별할 수 없는 것도 많습니다. 꽃의 인식은 원래 상당히 난이도가 높은 장르입니다.  

 

또한 아무나 자신이 찍은 꽃의 사진을 올리는 구조라면 이미지 크기와 찍혀있는 꽃의 크기, 이미지 품질, 원근감, 앵글, 사진방향 등이 제각각일 수 있습니다. 

 

 

이렇게 다양한 데이터가 예상되기 때문에 이에 대응할 수 있는 변형을 실시해, 충분히 robust성이 높은 분류기를 만들어야 한다는 것입니다. 

 

한편, 공장의 최종 공정에서 흘러 나오는 제품의 품질검사 같은 경우는 정위치 카메라로 촬영한 영상의 크기와 품질이 안정되어 있기 때문에, 노이즈 추가 및 밝기 감소 등 비정상적으로 robust성을 높이는 작업이 필요 없습니다. 오히려 서투른 변형을 가하여 실제로 발생하지 않는 학습자료를 입력하면 정답률이 떨어지게 됩니다.  

 

이처럼 Data Augmentation은 비정상적인 운영 데이터를 의식할 필요가 있습니다. 예를 들어, 밝기를 바꾸는 경우 그냥 명암을 조정하는 것이 아니라 실제 데이터의 각 화소별 휘도 분포 히스토그램을 분석해 두고, 학습 데이터를 실제 존재하는 히스토그램 형상에 가깝게 변형하는 연구가 진행되고 있습니다. 

 

 

전이 학습 (Transfer learning)

이미지 인식에 있어서의 소량 데이터 학습 방법으로 Data Augmentation에 이어서 각광을 받아 이제는 상식이 되어버린 것이 전이 학습입니다. 전이 학습은 영역(도메인)에서 학습한 모델을 다른 영역(도메인)에 사용하여 일반적으로 학습하는 것보다 적은 데이터로 추가 학습이 가능한 방법입니다. 더욱 쉽게 설명하면, '저쪽에서 배운 기학습 모델을 활용하여, 이쪽의 학습은 적은 데이터로 끝내는 방법'입니다. 

 

만일 외국 꽃의 이름을 학습한 모델이 있다면, 우리나라 꽃을 추가로 가르쳐 주면 쉽게 한국 꽃의 이름도 판별하는 분류기가 완성됩니다. 이렇게만 되면 정말 편하겠지만, 세상 쉽지 않지요... 전이 학습은 이러한 유사한 도메인(꽃)이 아닌 다른 도메인(동물이나 탈것 등)의 모델을 유용하고 통용하는 것이 핵심입니다. 

 

구체적인 예로 설명하겠습니다. 2014년 ILSVRC(이미지 인식 경연 대회)에서 우승한 유명한 기학습 모델로 VGG16이 있습니다. 이것은 13층의 합성곱 층과 3층의 전결합층으로 구성되는 회선 신경망 (CNN)입니다. 앞에서 해설한 ImageNet는 대규모(2.1만 클래스의 1,400만 장) 이미지 데이터 세트 중에서 대회의 제목으로 나온 1,000 클래스(카테고리)를 식별하도록 훈련되어 있습니다. 

 

1,000개의 카테고리에는 사자와 얼룩말, 물개 같은 동물, 트랙터, 크레인과 같은 놀이기구, 화산, 산호초와 같은 자연 등 실로 다양한 것이 있고 강아지라면 테리어, 시베리안 허스키 등 굉장히 많은 견종을 구별합니다.

 

그런데 꽃에 관해서는 성적이 처참합니다. 장미(rose)도 없고, 백합(lily)도, 수련(lotus)도 없습니다. 무려 꽃 (flower)이라는 카테고리조차 없습니다. 그런데 데이지(daisy)는 있기 때문에, 꽃의 사진은 뭐든지 daisy라고 답해 버립니다. 

 

뭐, 기분을 고쳐서 이 VGG16를 사용하여 꽃의 데이터를 학습시켜 봅시다. 그러자 아무것도 없는 곳에서 꽃의 식별을 학습하는 것보다 훨씬 적은 데이터량으로도 인식이 가능해지는 것입니다. 

 

그 비결은 분류기가 이미 이미지 인식 관련 핵심을 잡고 있기 때문입니다. 1,000카테고리, 100만 장 이상의 이미지를 인식하는 훈련을 해온 베테랑이며, 그 수행 과정에서 13층의 합성곱층과 3층의 전결합층 구성으로 이미지 인식에 적합한 가중치를 최적화한 튜닝이 되어있기 때문에, 적은 데이터로도 효율적으로 학습할 수 있는 것입니다. 

 

인간에 비유하자면, 한식 요리사가 이탈리아에 가서도 곧 적응한다던지, 장기에 강한 사람은 체스도 곧 능숙하게 둔다는 느낌입니다. 

 

전이 학습의 방법

전이 학습 방법은 여러가지가 있지만 전형적인 방법을 그림 1을 통해 알아봅시다.

그림 1 : VGG16를 사용한 전이 학습

 

전이 학습의 기본은 기존 모델이 열심히 공부한 결과(가중치)를 이어받는 것입니다. 즉, 오차 역 전파를 반복하여 조정된 각 노드의 가중치(weight)를 재사용하는 것입니다. 

 

예를 들어, 그림 1에서 16번째 레이어까지 동결(가중치를 변경하지 않음)하여 합성곱층의 마지막 2층과 전결합층에서 학습하는 방법을 보여줍니다. 동결하지 않은 부분을 다시 생성하여 그 부분만 새로 꽃의 이미지를 추가 학습하는 것입니다. 데이지 밖에 꽃의 이름을 기억하지 못했던 학습 모델이지만, 아마 16층까지의 가중치는 좋다고 상정하여 동결하고 추가 학습에 의해 꽃의 이름을 출력 계층에서 꺼내는 분류기를 만드는 것입니다.

 

전이 학습에서 여러 층까지 동결하거나 지정할 수 있으므로 더 동결범위를 늘려 전결합층만 변경하여 학습시키는 방법도 있습니다. 위에 비해 다소 정확성은 떨어지지만, 학습시간을 더 단축할 수 있습니다.

 

정리

이번에는 적은 데이터량으로 진행하는 기계 학습 방법으로 Data Augmentation과 전이 학습에 대해 설명했습니다. CNN(회선 신경망)등의 알고리즘은 나중에 좀 더 자세히 설명하겠습니다.

반응형