Image(Data) Augmentation은 왜 하는걸까?
원본 이미지(데이터)를 조작하여 원본과는 크고 작은 변화를 가진 이미지를 만드는 것을 말한다.
우리는 머신러닝 학습의 Overfitting 문제를 알고 있다. 이를 해결하기 위해 Regularization이라는 훌륭한 기법이 있지만, 우리가 가진 데이터에 대한 우수한 설명력 + margin을 주어 우리가 모르는 형태의 데이터에 대한 대비를 한다고 생각할 수 있다. 하지만 이것은 엄밀히 말해 그리 직관적인 방법은 아니다. 왜냐하면 margin을 설명하기 어렵기 때문이다.
반면 아래의 그림을 보자.
이 불쌍한 강아지는 다양한 변화를 겪게 되었지만 우리의 관점에서 얘는 여전히 강아지라는 아이덴티티를 잃지 않는다. 그렇다면 강아지라고 학습해도 되는게 아닐까? 이게 바로 Augmentation이다.
정보 이론의 관점에서 수학으로 설명할 수는 없지만, 인간의 경험적 관점에서는 기존 데이터의 정보량을 보존한 상태로 노이즈를 추가했다고 볼 수 있다. 정리하자면 대상 고유의 특징을 조금 더 넓게 잡아 overfitting을 피하게끔 만드는 것이 가능하다. 기존에는 color, edge를 포함한 많은 부분이 모두 비슷해야 강아지라고 인식했다면, 이제는 그런 요소의 부분집합 만으로도 강아지를 인식하게끔 만든다는 것이다 (리트리버는 초록색이면 안되는 법이라도 있나?)
Augmentation에는 정말 여러가지 종류가 있지만 일단 Image에 국한하여 소개된 다양한 augmentation 방법을 간략하게 소개한다.
훨씬 더 많은 내용은 여기 Github에서 친절하게 소개해준다.
여기까지가 고전적인 Image augmentation 방법이다. 다음 포스트에서는 최근의 방법들을 소개해본다.
전 고양이가 좋은데 고양이 사진은 없나요??