Neural net이 working하지 않는 37가지 이유
ph
원문: https://blog.slavv.com/37-reasons-why-your-neural-network-is-not-working-4020854bd607
점검 리스트등으로 활용 가능해 보여서 일부를 발췌하여 옮겨둔다.
만일 학습이 잘 안된다면,
먼저 해볼 것
- 동작한다고 알려진 모델을 가져다가 해본다. 평이한 loss를 쓰면 더 좋다
- regularization, data augmentation 등 모두 off
- finetuning하고 있다면, preprocessing을 다시한번 체크하라. 원래 모델에게 주어진 preprocessing 그대로 해야 한다.
- input data가 correct한지 확인
- 적은 데이터셋(2~20샘플)으로 시작하라. 그 데이터셋에 overfit시킨 다음 조금씩 데이터를 더해보라.
- 위에서 빼놓은 것들을 더해간다. regularization, data augmentation, custom loss, complex models, etc.
그래도 안되면 다음을 점검하라
I. Dataset issues
- dimension을 뒤바꾸거나, 모두 0으로만 이루어진 벡터를 넣고 있거나, 같은 배치만 반복해서 넣거나 하는 어이없는 실수들이 많으니 하나하나 찍어보면서 점검할것.
- 랜덤 데이터를 넣어보고 에러의 변화를 살펴보라, 만일 비슷하다면 net의 중간 어디선가 데이터가 (모두 0이 된다든지 하는 식으로) garbage로 변하고 있다.
- 입력 몇개만 가지고 생성되는 label과, 그 입력을 shuffle해보고 생성되는 label이 같은지 점검해볼것
- 올바른 문제를 풀고 있는건가 다시 점검(주식데이터 같은건 원래 랜덤이다. 관계가 있을리 없다)
- 데이터 자체가 너무 더러울 수 있다. noise가 너무 많다거나, mis-label이 너무 많다거나 하는 문제들. 일일이 눈으로 확인해보는 수밖에 없다.
- shuffle 꼭 할것. ordered data가 들어가면 학습이 잘 안된다.
- class imbalance 문제 점검. 참고할 글