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