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

Brotherhoon88님의 프로필 이미지
Brotherhoon88

작성한 질문수

[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지

Loss와 Optimizer

작성

·

245

0

안녕하세요, 호형선생님

코드를 보던 중 개념과 더불어 잘 이해가 되지 않는 부분이 있어서 질문 올립니다.

제가 판단한 개념은

Loss : Label과 Pred의 차이 (e.g) Cross Entroy, MSE...

Optimizer : Loss값을 최소화 시키기 위한 방법 (e.g) SGD, Adam...

Score : 해당 파라미터에서 Label과 Pred의 Performance

와 같습니다.

  

질문1)

loss.backward()
optimizer.step()

이 라인에서 optimizer.step()인데요 최적화는 고정된 방법이니까

static하게 굳어있는 것이여야 하지 않니요...?

선언시부터 학습률을 지정하고, step으로 다음으로 넘어가는 것을 지정해 주는것이 잘 이해가 되지 않아서요.

  

질문2)

loss와 Performance

Performance는 보통 Metric이라는 것으로 최종적으로 스코어를 나타내고

trainning을 통해서는 Loss를 최적화 시키는 쪽으로 학습을 진행하는 것으로 알고 있어요.

근데 Loss와 Metric을 동일하게 사용할 수는 없는건가요..?

어자피 두가지 개념의 목표는 같은 것 같은데

  

기초적인 질문이지만

혼자서는 답을 찾기어려워서요.

조언 부탁드립니다.

답변 3

1

딥러닝호형님의 프로필 이미지
딥러닝호형
지식공유자

질문1: 예,  지정한 파라메타들이 자동으로 업데이트됩니다 :)

질문2: 앞서 말씀드렸듯이 "Metric의 Score가 Maximum이 되도록 Loss를 Metric으로 셋팅하면 될 것인데"

이 문장이 성립 안되는 것들이 있습니다. 또한 손실함수에서 중요한 것은 미분 가능하고 convexity를 보존하는 것이 중요한데 메트릭을 그대로 loss에 적용할 시 이 부분에서 문제가 될 것 같습니다. (이 부분은 솔직히 저도 증명을 해보지는 않았는데 아마 문제가 생길 것 같습니다.) 

Brotherhoon88님의 프로필 이미지
Brotherhoon88
질문자

답변에 정말 감사드려요!

1

딥러닝호형님의 프로필 이미지
딥러닝호형
지식공유자

안녕하세요. 좋은 질문 감사합니다 :)

질문1) 파이토치에서 제공하는 최적화를 사용하기 위해 optimizer.step()는 고정적인 표현이라고 보시면 됩니다. 즉, 손실 함수를 기준으로 자동으로 모델을 업데이트 해주는 역할로 보시면 됩니다. 직접 경사 하강법을 진행하시거나 특수한 경우가 아니면 그냥 저 위치에서 사용하시면 되요 :)

질문2) 결론부터 말씀 드리면 Loss 함수와 평가 Metric은 목표가 다릅니다. Loss는 최적화를 하기 위한 목적함수이고 평가 Metric은 말 그대로 평가를 위한 척도라고 보시면 됩니다. 예를 들어 분류 문제에서 최적화 입장에서는 손실 함수 값을 최소화 하는게 목표가 되는데 평가 입장에서는 손실값 낮을수록 정확도가 높다고 할 수는 없습니다. 따라서 Loss로 모델을 최종 평가하는 것은 부정확 할 수  있죠. 따라서 평가 척도를 무엇으로 해야하는지가 매우 중요합니다! 물론 똑같은 척도를 사용하는 경우도 있습니다. 예를 들어 집 값 예측과 같은 회귀 문제에서 MAE 손실 함수를 쓰고 MAE로 모델을 평가 하기도 합니다!

0

Brotherhoon88님의 프로필 이미지
Brotherhoon88
질문자

질문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 드림.

Brotherhoon88님의 프로필 이미지
Brotherhoon88

작성한 질문수

질문하기