Robotics & Perception

Debugging tips (항상 업데이트 중)

  1. 문제 자체가 성립이 안되는 걸 수도 있다.
    1. 데이터셋이 너무 vague하다거나 ex. classification task에 success나 fail이 input에 따른 구별이 어려운 데이터셋
    2. noisy한 데이터가 추가되었거나 ex. 데이터셋을 모으는 과정에서
    3. 문제 해결을 위한 데이터셋이 아니거나 ex. classification을 해결해야 하는데 데이터셋이 비중이 맞지 않거나
    4. 해결 방법: 데이터셋을 제대로 모으거나 (ex. 데이터셋을 모으는 것에 제약을 주어서 확실한 데이터셋을 모으도록 하거나) 데이터셋의 noisy
  2. 네트워크 자체에 버그가 있을 수도 있다.
    1. 판단방법: 네트워크가 쉽게 답을 예측할 수 있도록 돕는 indicator를 추가하여 이를 올바르게 예측하는지 찾아보자. --> 이 방법에서 올바르게 예측한다면, 데이터셋의 문제 (1로 가시오) | 예측하지 못한다면, 네트워크의 문제일 것이다 (3으로 가시오).
    2. 해결방법: 다음과 같은 정보들을 확인해보자.
      1. 데이터셋 input 형태가 잘 들어갔는지 확인해보자.
      2. 중간에 activation이나 layer 들이 빠져있거나 중복되어 들어가 있는지 확인해보자.
  3. 네트워크 자체가 문제일 수도 있다.
    1. 한쪽에게만 유리한 정보를 주는 편향된 네트워크일 수도 있거나
    2. 네트워크 자체가 잘못된 것을 사용했거나 ex. loss가 원하는 방향으로 정의되지 못하였다.
    3. 판단방법: 
      1. Logical하게 판단. ~~로 ~~를 판단하는데 말이 되는가?
      2.  
    4. 해결방법: 
      1. Epoch에 따라 inference 결과를  확인해보자.
  4. 네트워크가 overfitting
    1. Random seed를 바꿔서 학습되는지 판단.
    2. Normalization techinique (layer normalization)
  5. 네트워크가 학습이 안된다. (underfitting)
    1. Local minima에 빠졌을 가능성이 있다. learning rate을 바꿔 해결해보자. 
    2. Epoch에 따라 inference 결과를  확인해보자.
    3. Dataset 줄여서 판단 -Number of data points는 Number of model paramters와 동일해야 한다.
  6. (추가) 네트워크를 분석하고 싶다.
    1. Grad-CAM을 통해서 어느 부분이 업데이트 되는지 확인해보자 (CNN based 한정)