본문 바로가기

스터디-ing/AI

[PyTorch] 경사하강법(Gradient decent algorithm)

PyTorch를 공부하면서 참고한 NeoWizard(박성호)님의 YouTube영상을 토대로 내용을 정리함.

실제 영상 강의를 보고 싶은 분들은 아래 링크로 ㄱㄱ!

출처: https://www.youtube.com/@NeoWizard

 

NeoWizard

강의실 - 머신러닝, 딥러닝 - 텐서플로우 1.x, 텐서플로우 2.x - PyTorch, 파이토치 - YOLO - 프로그래밍 - 데이터분석, 판다스

www.youtube.com

 

손실함수

✔️ 손실함수는 오차의 평균값을 나타내기 때문에 손실함수가 최소값을 갖는다는 것은 실제 정답과 오차가 최소가 되어, 미지의 데이터에 대해서 결과를 더 잘 예측 할 수 있다는 것을 의미함.

✔️ 이런 손실함수는 W, b 에 영향을 받기 때문에, 손실함수가 최소가 되는 가중치 W와 바이어스 b를 찾는 것이 regression을 구현하는 최종 목표임.

 

 

💡손실함수(loss function) 계산

b=0 으로 가정한 손실함수 계산

✔️ 바이어스 b가 0이라고 가정할 때 W 변화에 따른 손실 값은 위의 표와 같은데, 이를 그래프로 나타내면 아래와 같다.

 

 

✔️ 다음과 같이 손실함수는 포물선 형태로 그려지며, 가중치 1일때 손실 최소값은 0임.

✔️ 이런 손실함수에서의 최소값을 가지는 가중치 W를 찾는 것이 우리가 구현하고자 하는 regression 최종목표임.

 

 

💡경사하강법 원리

✔️ 1️⃣ 임의의 가중치 W 선택 -> 2️⃣ 그 W 에서 직선의 기울기를 나타내는 미분 값(해당 W에서의 미분값을 구함) -> 3️⃣ 그 미분값이 작아지는 방향으로 W 감소(또는 증가) 시켜 나가면 -> 4️⃣ 최종적으로 기울기가 더 이상 작아지지 않는 곳을 찾을 수있음. 그곳이 손실함수 E(W) 최소값임을 알 수 있음.

✔️ 이 W에서의 직선의 기울기인 미분 값을 이용하여, 그 값이 작아지는 방향으로 진행하여 손실함수 최소값을 찾는 방법을 경사하강법(Gradient decent algorithm) 이라고 함.

  • Ex) W = 2.5 일 때, 기울기는 양수(+) 이기 때문에 W를 왼쪽으로 이동하며 감소시켜 최종적으로 W = 1에서 멈추도록 해야함.
  • Ex) W = -0.5 일 때, 기울기는 음수(-) 이기 때문에 W를 오른쪽으로 이동하며 증가시켜 최종적으로 W = 1에서 멈추도록 해야함.
  • W = W - (α * E(W, b) / W)
    • 편미분 E(W, b) / W 해당 W 에서 기울기(slope)를 나타냄.
    • E(W, b) / W 가 양수(+)라면 W는 왼쪽으로(감소) 이동시켜야 손실함수 E(W) 최소값 찾음.
    • 반대로 E(W, b) / W 가 음수(-)라면 W는 오른쪽으로(증가) 이동시켜야 손실함수 E(W) 최소값 찾음.
    • α는 학습률(learning rate)이라고 부르며, W 값의 감소 또는 증가 되는 비율을 나타냄.