딥러닝

쉬뢰딩거의 오그먼테이션

제갈티 2024. 9. 25. 11:27

쉬뢰딩거의 고양이, 컨셉아트

 

- 몇 년 전에 정부 AI과제를 수행 중에 중간평가 심사를 받을 때 일어났던 일입니다.

- 과제 심사위원들이 딥러닝에서 데이타가 점점 더 중요해지고 있다는 소리를 어디서 들었는지, 학습에 사용된 클래스별 데이터의 원래 수량과 각각의 오그먼테이션(Augmentation, 데이터 증강) 방식별 부풀려진 수량을 테이블로 정리해서 알려달라고 요구하였지요.

- 하지만 데이타 전처리 타임이 아닌 학습 타임(train time)에 오그먼테이션을 하기 때문에 수량을 산정하기가 어려운 문제가 있었습니다.

- 다시 말하면, 학습타임에 확률적으로 오그먼테이션된 이미지를 발생시켜서 메모리에 임시저장했다가 모델에 입력하고 바로 지워버리는 방식으로 반복적으로 진행하기 때문에 정확한 오그먼테이션 이미지 수량을 집계하는 게 어려운 것입니다.

- 이는 마치 양자역학에서 중첩상태를 설명할때 등장하는 "쉬뢰딩거의 고양이" 현상과 매우 닮아있다고 볼 수 있는데요...

- 즉, 상자를 열기 전에는 고양이가 죽어있는지 살아있는지의 상태가 중첩되어 있어 알 수 없고, 상자를 연 후에야 비로소 고양이의 상태가 결정된다는 신기방기한 양자역학적 현상 중 하나이지요.

학습타임 오그먼테이션 코드 예시

- 그런데, 딥러닝의 학습타임 오그먼테이션 에서도 비슷한 현상이 발생합니다.

- 양자역학에서 상자를 여는 것처럼 매 학습 에포크(epoch)마다 메모리를 열어서 저장된 이미지가 어떻게 오그먼테이션 됬는지를 들여다 보기 전에는 오그먼테이션이 최종적으로 어떻게 수행되었는지 카운트 하는게  매우 어려우며, 그렇게 했다가는 학습진행이 안될 정도로 컴퓨터가 느려지게 되는 것이죠.

- 특히나 위 코드처럼 여러 단계의 오그먼테이션 처리들이 다 다른 확률로 발생되어 중첩되기 때문에 최종적인 오그먼테이션의 형태는 예측 및 집계하기가 거의 불가능에 가깝게 돼버립니다.

- 따라서 학습타임 오그먼테이션이 이루어지는 딥러닝 프로젝트에다가 오그먼테이션 별 데이터 수량을 알려달라고 요청하는 것은 좀 무지의 소치라고 생각됩니다만... 심사권한을 가진 건 심사위원들이라 참.. 난감했지요. 

- 저처럼, 이런 경험해보신 분들 아니 계신가요?  여러분들 의견은 어떤지 궁금합니다.