강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

개발너무어려워요ㅠ님의 프로필 이미지
개발너무어려워요ㅠ

작성한 질문수

딥러닝 모델의 validation 질문이요...

작성

·

545

0

안녕하세요. 이번에 skt에서 제공하는 언어 딥러닝 모델 kobert를 학습시키고 사용해보려고 하는데 validation data로 평가하는 부분이 어려워서 질문 드립니다.

일단 코드 자체는 지정된 epoch에 대해서 for문을 돌면서 model.train() 함수로 model을 학습하고 같은 for문 안에서 학습 직후에 model.eval() 함수를 사용해 validation data로 model을 평가하는데요. (kobert github에서 제공하는 코드 그대로 사용했습니다)

문제는 여기서 발생합니다.

제가 이론으로 배웠을 때는 validation loss 그래프가 항상 train loss보다 위에 존재한다고 배웠고 또 validation loss 그래프의 극소점에서 overfitting이 일어나서 저 지점을 적절 epoch로 잡아야한다고 배웠는데 kobert 공식 github에서 제공하는 epoch parameter는 5인데 제가 코랩에서 돌린 그래프 상으로는 epoch = 2에서 극소점이 나타나네요...ㅠㅠㅠ 실제로 epoch 2에서 train accuracy가 그다지 높지도 않고...

 

혹시 model.train을 한 직후에 바로 validation data로 model을 평가해서 그런가 싶어서 코드를 좀 바꿔볼라했는데 잘안되네요ㅠㅠㅠ 혹시 원인이 뭔지 아시는 분 계실까요?

답변 1

0

안녕하세요, 인프런 AI 인턴이에요.

딥러닝 모델의 validation에 관한 질문이시군요. 일단, 제가 이해하기로는 문제의 원인은 validation loss 그래프의 극소점이 제대로 나타나지 않는 것으로 보입니다.

validation loss 그래프의 극소점은 overfitting의 적절한 epoch를 잡는 지표로 사용되는데, 이론적으로는 validation loss는 항상 train loss보다 위에 존재한다고 배우셨을 것입니다. 그러나 kobert 공식 github에서 제공하는 epoch parameter가 5인데, 실제로는 epoch = 2에서 극소점이 나타나는 것으로 보입니다.

가능한 원인은 몇 가지가 있을 수 있습니다. 첫 번째로, 데이터셋의 규모가 작아서 발생하는 현상이 있을 수 있습니다. 작은 규모의 데이터셋에서는 overfitting이 빨리 발생할 수 있기 때문에, validation loss의 극소점이나 overfitting 지점이 더 일찍 나타날 수 있습니다.

두 번째로, 학습된 모델은 데이터의 특성에 따라 다른 결과를 보일 수 있습니다. 따라서 같은 모델이더라도 다른 데이터셋에서는 validation loss의 극소점이 다른 위치에 나타날 수 있습니다.

마지막으로, 학습 중인 모델의 초기 가중치 설정이나 학습률 등의 하이퍼파라미터 설정에 따라 validation loss의 극소점이 다를 수 있습니다. 이러한 하이퍼파라미터를 조정해보는 것도 한 가지 방법이 될 수 있습니다.

하지만, 더 자세한 원인과 해결책을 얻기 위해서는 코드 자체를 확인해봐야 할 것 같습니다. kobert 공식 github에서 제공하는 예제 코드를 사용하셨는데, 그 코드를 그대로 사용하셨다면 이론적으로는 문제가 없는 상태일 것입니다. 만약 코드를 수정하셨거나 다른 데이터셋을 사용하셨다면, 그 부분이 원인일 수도 있으니 확인해보시는 것을 추천드립니다.

더 자세한 도움을 드리지 못해서 죄송합니다. 추가적인 질문이 있으시다면 언제든지 물어보세요. 좋은 결과 얻으시길 바랄게요. 감사합니다.

아닙니다 많은 도움됐습니다! kobert에서 제공하는 데이터셋과 다른 데이터셋을 사용하긴 했는데... 답변해주신 내용을 확인해보면 데이터에 문제가 있지 않았나 싶네요..ㅠㅠ 한번 더 고민해보고 질문하겠습니다!

 

개발너무어려워요ㅠ님의 프로필 이미지
개발너무어려워요ㅠ

작성한 질문수

질문하기