Loss와 Optimizer
질문1) 파이토치에서 제공하는 최적화를 사용하기 위해 optimizer.step() 는 고정적인 표현이라고 보시면 됩니다. 즉, 손실 함수를 기준으로 자동으로 모델을 업데이트 해주는 역할로 보시면 됩니다. 직접 경사 하강법을 진행하시거나 특수한 경우가 아니면 그냥 저 위치에서 사용하시면 되요 :) 선생님의 답변의 해석을 loss.backward( )를 실행시키고 난 뒤, optimizer.step( )를 실행시키면 자동적으로 optimizer 선언시 params로 전달된 model의 weight를 업데이트한다. 라고 해석해도 될까요? 질문2) 결론부터 말씀 드리면 Loss 함수와 평가 Metric은 목표가 다릅니다. Loss는 최적화를 하기 위한 목적함수이고 평가 Metric은 말 그대로 평가를 위한 척도라고 보시면 됩니다. 예를 들어 분류 문제에서 최적화 입장에서는 손실 함수 값을 최소화 하는게 목표가 되는데 평가 입장에서는 손실값 낮을수록 정확도가 높다고 할 수는 없습니다. 따라서 Loss로 모델을 최종 평가하는 것은 부정확 할 수 있죠. 따라서 평가 척도를 무엇으로 해야하는지가 매우 중요합니다! 물론 똑같은 척도를 사용하는 경우도 있습니다. 예를 들어 집 값 예측과 같은 회귀 문제에서 MAE 손실 함수를 쓰고 MAE로 모델을 평가 하기도 합니다! 선생님 이부분이 머리속으로 잘 이해가 좀 어려워요. 결론적으로 ML/DL 모델을 세우려는 목적은 New data가 들어왔을때 Pred를 하기 위해서(?) 라고 러프하게 말하자면 Metric의 Score가 Maximum이 되도록 Loss를 Metric으로 셋팅하면 될 것인데 몇가지 Optimize가 불가능한 Metric의 경우가 존재하기 때문에 그런건가요ㅠㅠ? 명쾌한 강의에 항상 감사드리며 brotherhoon88 드림.