강의

멘토링

로드맵

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

Suji Cho님의 프로필 이미지
Suji Cho

작성한 질문수

엑셀로 맛보는 딥러닝

경사하강법

W 업데이트

작성

·

23

0

이어서 질문드립니다. w값이 업데이트되면서 y_pred값이 y에 근접해가는 과정을 잘 봤습니다.

 

그런데, 여기서 LOSS가 2차함수모양이라면 w값이 업데이트되면서 y에 근접하다가 다시 기울기가 반대방향으로 커져야하는것 아닌가요?

 

그러니까, 초기에는 큰 보폭으로 조정하여 예측치가 실제값에 비슷해지다가 서서히 보폭이 작게 조정되어 실제값과 유사해자다가, 마지막에는 역으로 다시 실제값에서 멀어져야하는 것 아닌가요?

 

엑셀에서 매크로 단추로 실습하면서 단추를 눌러보다가 역으로 Y_pred가 발산(?)해버리는지 보고 싶었는데 그냥 y 실제값에 수렴해버리는 것 같아서 여쭤봅니다. 배경지식이 아예 없어 이상한 질문일수있는데.. 어느 부분이 제가 잘못 생각하고 있는것인지 짚어주시면 감사하겠습니다.

답변 2

0

멋진님의 프로필 이미지
멋진
지식공유자

로스라는 것에 대한 이해가 더 있으면 좋을것 같습니다

 

로스라는 것의 정의를 수식적이나 의미적으로 볼때 실제값과 모델의 예측값과의 차이 입니다

이를 줄이는 것이니 당연히 서서히 수렴하게 되는것이죠(물론 lr를 크게 준다면 발산할수 있습니다)

 

수식적으로 보면 미분값은 yp -yt 라는 값이 있죠?

이건 내 예측값이 크면 w를 작게할터이고 내 예측값이 작다면 w를 크게 할것입니다

 

반복 횟수에 상관 없이 무조건 loss는 줄어드는 방향으로 w가 조정됩니다

 

제가 밖에서 바로 쓰다보니 잘못된 부분도 있을수 있는데 이해가 잘 되셨으면 좋겠습니다

Suji Cho님의 프로필 이미지
Suji Cho
질문자

감사합니다!! 그러니까 정리하면 loss를 줄이고 싶은데, 현재 내가 조정가능한 값은 w이니 w를 변경해가면서 loss를 줄이게 하는거군요. 그런데 이 때 w를 무작위적으로 변경하고 loss의 값이 이전보다 줄어들었는지를 체크하는게 아니라 w_new의 정의 자체를 (1) 현재 w_old에서 loss가 줄어드는 방향쪽으로 수정하되, (2) 현재의 기울기인 dloss/dw 의 크기(보폭)를 learning rate로 반영하여 속도를 조정하는거네요. 왜 무조건 loss가 줄어들까 했는데 w_new의 정의를 그렇게 설계한 것이네요. 답변이 많이 도움되었습니다. 감사합니다!

멋진님의 프로필 이미지
멋진
지식공유자

와!

설명이 부족했지만 완벽히 이해하신것 같네요!

맞습니다

저희는 w를 바꿔가면서 loss를 줄일건데(결국 모든건 상수이고 loss는 w에 대한 함수입니다)

사실 loss가 다항식(2차그래프)라면 저희는 loss가 최소가 되는 w값을 한번에 알수 있습니다

(고2때 배우는 이차방적식의 최소값을 구하는거죠)

 

여기까지가 회귀(loss가 다항식)일때 이고 사실 딥러닝으로 가면 loss가 다항식으로 표현이 안됩니다

그래서 저희는 줄어들기를 희망하면서 w를 업데이트해 나갑니다

그게 그레디언트디센트라는 방법입니다

 

딥러닝을 이해하시는데 도움이되면 좋겠네요

0

안녕하세요, 인프런 AI 인턴입니다. Suji Cho님,

딥러닝 모델에서의 Loss 함수 최적화 과정은 매우 중요하며, 주로 옵티마이저가 경사 하강법을 사용하여 가중치(w)를 업데이트함으로써 이루어집니다. 질문해 주신 부분을 이해하기 위해 몇 가지 중요한 개념을 설명드리겠습니다.

  1. 경사 하강법의 원리:

    • 경사 하강법은 손실 함수의 기울기를 따라 내려가는 과정을 통해 최소 손실 지점을 찾는 방법입니다.
    • 초기에는 손실 함수의 기울기가 크기 때문에 큰 보폭으로 이동하는 경향이 있지만, 점점 기울기가 작아지면서 학습 속도가 줄어들고, 최저점을 향하게 됩니다.
  2. 2차 함수 형태의 손실 함수:

    • 질문에서 언급하신 대로, 손실 함수가 2차 함수 형태를 갖게 되면, 실제로는 U자 형태의 곡선이 됩니다.
    • 그러나 실제 딥러닝에서는 과적합을 피하기 위해 학습률을 조정하거나 정규화를 통해 가중치 업데이트가 특정 범위 내에서 이루어지도록 합니다.
  3. 발산 현상:

    • y_pred가 발산하지 않는 이유는 학습률 및 옵티마이저 설정에 따라 손실이 효과적으로 최소화되기 때문입니다.
    • 만약 발산 현상을 관찰하고 싶다면, 학습률을 예를 들어 크게 설정하거나, 기타 옵션을 설정하지 않는 상태로 경사 하강법을 수행해 볼 수 있습니다.

이와 관련된 더 깊은 학습 내용을 원하신다면, 다음의 포럼 스레드를 참조 부탁드립니다: “Deep Learning의 경사 하강법과 손실 함수 이해”. 이러한 링크를 통해 비슷한 질문 및 해답을 보실 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Suji Cho님의 프로필 이미지
Suji Cho

작성한 질문수

질문하기