이번에는 모델 튜닝에 대하여 알아보자

모델의 성능이 좋지 않으면 다른 모델을 써도 된다.

하지만, 모델이 확정이 되었고 모델 자체를 튜닝하는데 어떤 것들이 필요한지에 대해 알아본다.

  1. ⭐️모델의 구조 변경 - 레이어 수 / 필터 수 / pooling / filter 크기
    • 일반적으로 인공 신경망이 깊으면 깊을수록 성능이 좋다고 함
    • 하지만 파라미터 수가 늘어나면서 학습이 느려지고, overfitting이 될 수도 있음
    • 학습을 돌리게 되면 accuracy 그래프나 loss 그래프 결과를 보고 잘 생각해서 변경해야 함
  2. ⭐️input의 크기 - 이미지 크기 / 시퀀스 길이
    • 이미지 처리 모델 중 EfficientNet : 레이어 수, 필터 수, 이미지 크기를 자동으로 조절해서 최적의 개수를 구해주는 모델
  3. 학습 반복 수(epoch) / 배치(batch) 수
    • 과적합일 경우 Early stopping을 이용할 수도 있는 거고, 반복 수를 늘려서 경황을 지켜볼 수도 있음
    • 일반적으로 배치 수가 많으면(즉, 한번 학습 할 때 많은 배치가 들어오면) 학습이 잘되는 것으로 알려져 있음
    • 다만, 배치 수를 마냥 늘리게 되면 overfitting의 영향이 있을 수 있고, 메모리에 문제가 생길 수도 있음
  4. 최적화 알고리즘(optimizer) / 학습률(learning rate)
    • loss 그래프나 accuracy 그래프를 보고 너무 천천히 떨어지는 것 같으면 학습률을 조금 더 높여주면 됨
    • 갑자기 변동이 생기거나 잘 안내려 갈 경우 학습률을 낮춰주면 됨
    • 최적화 알고리즘은 보통 Adam 사용
    • SGD, momentom + 스케줄링을 사용하기도 함 
  5. 과적합인 경우, 정규화 적용(드롭아웃, L2 정규화 등)
    • 과적합인 경우 : 예를 들어, train accuracy가 92% 인데 test accuracy가 50%이면 과적합이라고 볼 수 있음
    • 과적합을 방지하기 위해 정규화를 적용함
    • 드롭아웃을 0.5비율로 했을 때 정규화 영향이 별로 없다 싶으면, 0.7 ~ 0.8까지도 올려줄 수 있음
    • 드롭아웃은 output layer에는 절대 사용하면 안 됨
    • 일반적으로 L2 정규화를 많이 사용하는 것 같음
    • L2 정규화를 통해서 페널티 파라미터를 조절하면 됨
    • 페널티가 커지면 커질 수록 정규화의 영향이 커짐
    • 패널티가 너무 커지면 학습이 정상적으로 되지 않을 가능성이 있음
    • 배치 정규화는 정규화 효과가 매우 좋아서 기본적인 모델에 다 들어가 있음
    • 안 들어가 있을 경우 배치 정규화를 사용해보길 추천
  6. ⭐️데이터 증식
    • 과적합도 방지해주지만, 데이터를 확장시켜주기 때문에 정확도를 높여줌
    • GAN, 명암조절, 대칭 이동 등으로 데이터 증식
  7. 손실 함수
    • 모델 구조에 따라서 적절한 손실 함수를 사용해야 함
    • 과적합일 경우 weighted loss function을 사용할 수도 있음
  8. 활성화 함수
    • 기본적으로 ReLU를 사용함
    • ReLU를 변형한 다른 활성화 함수를 사용했을 때 성능이 좋아질 수도 있음
  9. 샘플링 방법(undersampling, weighted sampling 등)
    • 직접적인 모델 튜닝 방법은 아니지만, 모델에 데이터를 어떻게 주입시키냐에 따른 것
    • 어떤 데이터가 어떤 식으로 들어왔는지가 중요
    • 샘플링을 할 때 배치수를 적절하게 해야 함
  10. ⭐️초기 모델 파라미터(initial parameters)
    • gradient descent의 기본적인 관점은 local min과 global min을 구분하지 못한다는 것(어디서 시작하냐에 따라서 각각의 종착지가 다르다는 것)
    • 그래서 초기 모델 파라미터를 임의로 세팅할 수도 있고, 좋은 모델로부터 학습된 파라메타를 받아와서 시작하는 방법이 있음
    • 좋은 모델로부터 학습된 파라메타를 받아와서 시작하는 방법을 pretrained 한다고 함

 

위 10가지도 중요하지만, 구글링해서 다른 사람들이 어떻게 했는지 많이 찾아보고, 논문을 많이 읽을수록 잘할 수 있어지는 것이다.

명심!

 

 

내용에 문제가 있으면 댓글로 알려주세요!

 

출처 : 인프런 - 실전 인공지능으로 이어지는 딥러닝 개념 잡기(딥러닝 호형)

+ Recent posts