Post

Best Practices for Applying Deep Learning to Novel Application 정리

Phase 1: Getting prepared

딥러닝을 적용하는 것이 가치있는 일인지 생각해본다. state-of-the-art의 퍼포먼스가 충분히 높다면 굳이 성능을 향상시키기 위해 딥러닝을 적용하는 것이 가치있는 일일지 고려해야 한다. 단순히 최신 기술이고, 방법론적으로 좋아보여서 딥러닝을 사용하게 되면 어려움에 직면할 수 있다. 그 다음은 성공적으로 구현했을 때 human level performance보다 잘 나오는지 예상해보아야 한다. computer resource도 고려해야 하는데 이는 AWS 등으로 해결할 수 있으므로 큰 문제는 안된다. evaluation metrics도 정의한다. 이는 loss function design으로 이어진다.

Phase 2: Preparing your data

training, test를 위한 충분한 양의 labeled data를 획득할 수 있는지도 고려해야 한다. network의 parameter 수는 training data의 양과 관련있다. training sample 수에 따라 architectural choice가 제한될 수 있다. training data의 양이 너무 작다면 transfer learning과 domain adaptatino을 고려해야 한다. 비슷한 dataset을 다운로드해 pre-training하는 방법 / cut, tilt 등 Synthetic data를 만드는 방법도 고려해 볼 수 있다.

classification이라면 balanced class인지 (e.g. cats versus dogs) unbalanced class인지(e.g. cats versus all other mammals) 고려한다.

Phase 3: Find an analogy between your application and the closest deep learning applications
Phase 4: Create a simple baseline model
Phase 5: Create visualization and debugging tools

TensorBoard 등을 활용한다.

Phase 6: Fine tune your model

model 구현.

Phase 7: End-to-end training, ensembles and other complexities
This post is licensed under CC BY 4.0 by the author.