경사하강법

Python으로 시작하는 Deep Learning

Dan Becker

Data Scientist and contributor to Keras and TensorFlow libraries

경사하강법

ch2_2.003.png

Python으로 시작하는 Deep Learning

경사하강법

ch2_2.004.png

Python으로 시작하는 Deep Learning

경사하강법

ch2_2.005.png

Python으로 시작하는 Deep Learning

경사하강법

ch2_2.006.png

Python으로 시작하는 Deep Learning

경사하강법

ch2_2.008.png

Python으로 시작하는 Deep Learning

경사하강법

ch2_2.009.png

Python으로 시작하는 Deep Learning

경사하강법

ch2_2.010.png

Python으로 시작하는 Deep Learning

경사하강법

ch2_2.011.png

Python으로 시작하는 Deep Learning

경사하강법

ch2_2.012.png

Python으로 시작하는 Deep Learning

경사하강법

ch2_2.013.png

Python으로 시작하는 Deep Learning

경사하강법

ch2_2.014.png

Python으로 시작하는 Deep Learning

경사하강법

  • 기울기가 양수이면:
    • 기울기의 반대 방향은 더 작은 값으로 이동
    • 현재 값에서 기울기를 뺍니다
    • 너무 큰 스텝은 빗나갈 수 있음
  • 해결: 학습률
    • 각 가중치를 학습률 * 기울기만큼 빼서 갱신
Python으로 시작하는 Deep Learning

기울기 계산 예시

ch2_2.022.png

  • 한 가중치의 기울기를 구하려면 다음을 곱합니다:
    • 우리가 입력하는 노드 값에 대한 손실함수의 기울기
    • 해당 가중치로 들어오는 노드의 값
    • 우리가 입력하는 값에 대한 활성화함수의 기울기
Python으로 시작하는 Deep Learning

기울기 계산 예시

ch2_2.028.png

  • 한 가중치의 기울기를 구하려면 다음을 곱합니다:
    • 우리가 입력하는 노드 값에 대한 손실함수의 기울기
    • 해당 가중치로 들어오는 노드의 값
    • 우리가 입력하는 값에 대한 활성화함수의 기울기
Python으로 시작하는 Deep Learning

기울기 계산 예시

ch2_2.029.png

  • 예측에 대한 평균제곱오차 손실의 기울기:
    • 2 (예측값 - 실제값) = 2 오류
    • 2 * -4
Python으로 시작하는 Deep Learning

기울기 계산 예시

ch2_2.033.png

  • 한 가중치의 기울기를 구하려면 다음을 곱합니다:
    • 우리가 입력하는 노드 값에 대한 손실함수의 기울기
    • 해당 가중치로 들어오는 노드의 값
    • 우리가 입력하는 값에 대한 활성화함수의 기울기
Python으로 시작하는 Deep Learning

기울기 계산 예시

ch2_2.035.png

  • 한 가중치의 기울기를 구하려면 다음을 곱합니다:
    • 우리가 입력하는 노드 값에 대한 손실함수의 기울기
    • 해당 가중치로 들어오는 노드의 값
    • 우리가 입력하는 값에 대한 활성화함수의 기울기
Python으로 시작하는 Deep Learning

기울기 계산 예시

ch2_2.037.png

  • 한 가중치의 기울기를 구하려면 다음을 곱합니다:
    • 우리가 입력하는 노드 값에 대한 손실함수의 기울기
    • 해당 가중치로 들어오는 노드의 값
    • 우리가 입력하는 값에 대한 활성화함수의 기울기
Python으로 시작하는 Deep Learning

기울기 계산 예시

ch2_2.038.png

  • 한 가중치의 기울기를 구하려면 다음을 곱합니다:
    • 우리가 입력하는 노드 값에 대한 손실함수의 기울기
    • 해당 가중치로 들어오는 노드의 값
    • 우리가 입력하는 값에 대한 활성화함수의 기울기
Python으로 시작하는 Deep Learning

기울기 계산 예시

ch2_2.044.png

  • 2 * -4 * 3
  • -24
  • 학습률이 0.01이면 새로운 가중치는
  • 2 - 0.01(-24) = 2.24
Python으로 시작하는 Deep Learning

두 입력이 예측에 영향을 주는 네트워크

ch2_2.045.png

Python으로 시작하는 Deep Learning

기울기 계산 및 가중치 갱신 코드

import numpy as np
weights = np.array([1, 2])
input_data = np.array([3, 4])
target = 6
learning_rate = 0.01
preds = (weights * input_data).sum()
error = preds - target

print(error)
5
Python으로 시작하는 Deep Learning

기울기 계산 및 가중치 갱신 코드

gradient = 2 * input_data * error

gradient
array([30, 40])
weights_updated = weights - learning_rate * gradient
preds_updated = (weights_updated * input_data).sum()
error_updated = preds_updated - target

print(error_updated)
2.5
Python으로 시작하는 Deep Learning

연습해 봅시다!

Python으로 시작하는 Deep Learning

Preparing Video For Download...