Data Iteration
Data augmentation
Data augmentation은 Data (특히 Unstructured data)를 더 모을 수 있는 매우 효율적인 방법이다. 그리고 이를 실행하는데는 많은 선택사항들이 존재한다.
Data augmentation의 목표는 Leraning algorithm은 성능이 낮고, 사람(혹은 baseline)은 잘 구별하는 현실적인 데이터를 만들어내는것이다.
만약 Learning alogirhtm의 성능이 낮은 데이터를 무작정 만들어 냈을때 실제 사람(혹은 baseline) 또한 그러한 데이터에 대해서 구분이 불가능한 정도면 아무리 데이터를 모아도 성능 향상은 그다지 기대할 수 없을 것이다.
올바른 Data augmentation을 위한 checklist는 다음과 같이 생각할 수 있다.
- 그 Data가 현실적인가?
- x->y mapping 이 clear하게 되어있는가 (사람 혹은 baseline이 구분할 수 있는가)
- 여전히 Learning algorithm이 그 Data에 대해서 성능이 낮은가?
위의 항목들을 만족하는 Data를 만들어내고 Model에 학습시킨다면 확실히 성능을 끌어올릴 수 있을것이다.
자주 나오는 Model의 반복적인 diagram 과정에서, Hyperparameter를 중심적으로 바꾸고 Training후 Error anaylsis하는 것 대신 Data를 추가하고 Training하고 Error analysis를 하는 과정을 반복하여 Data-centric한 AI개발을 실행할 수 있다.
Can adding data hurt?
보통 Training set와 Dev/Test set는 같은 distribution으로 부터 구성된다. 하지만 Data augmentation을 실행하여 Training set에 많은 data를 추가한다면 Dev/Test set와는 아주 다른 distribution을 가질 확률이 높다.
이러한 상황이 Learning algorithm의 성능에 악영향을 줄까? 대부분 unstructured data에 대해서는 그렇지 않다.
하지만 Model이 충분히 크지 않거나, x->y의 mapping 이 애매한 경우에는 Data를 추가할 시 성능에 악영향을 줄 수 있다.
Adding features
Unstructured data와 달리, Structured data는 새로운 Training data를 만들어 내는것이 더욱 어렵다. 그렇기 때문에, 이미 있는 Training data에서 Learning algorithm의 성능에 도움을 줄 수 있는 새로운 feature를 찾아서 더해주는 방법을 사용할 수 있다.
Product recommendation의 트렌드는 Collaborative filtering에서 Content based filtering으로 옮겨가고 있다.
Collaborative filtering은 어떤 user와 비슷한 특성을 가진 user를 찾고, 그 user가 좋아하는 것을 당신에게 추천해주는 방식이다.
반면에 Content based filtering은 user의 특성을 파악하고 대상이되는 목표의 description을 파악하여 유저에게 맞을지 안맞을지 직접 판단한다. 이러한 방법을 사용하면, 한번도 평가된적 없는 새로운 목표가 들어와도 description을 통해 파악할 수 있다. 이러한 특징 때문에 Cold start problem이라고도 불린다.
Structrued data에서는 Error analysis를 하기가 더욱 힘들다. HLP같은 적절한 baseline을 찾기 힘들기 때문이다. 따라서 직접 User의 feedback을 사용하거나 경쟁사와의 benchmarking을 사용하는 등의 방법을 통해서 Insight를 얻을 수 있다.
Experiment tracking
Model의 성능을 향상시키기위해 반복적인 작업을 하면서, 수십번 수백번의 테스팅을 하게 되면 이 전에 어떤 환경의 테스팅을 했는지 잊어버리기 쉽다. Experiment tracking은 이런 작업에 있어서 좀 더 효율적으로 수행할 수 있게 해준다.
Tracking의 간단한 가이드라인은 다음과 같다.
연관글
Brundage, M., Avin, S., Wang, J., Belfield, H., Krueger, G., Hadfield, G., … Anderljung, M. (n.d.). Toward trustworthy AI development: Mechanisms for supporting verifiable claims∗. Retrieved May 7, 2021 http://arxiv.org/abs/2004.07213v2
Nakkiran, P., Kaplun, G., Bansal, Y., Yang, T., Barak, B., & Sutskever, I. (2019). Deep double descent: Where bigger models and more data hurt. Retrieved from http://arxiv.org/abs/1912.02292