티스토리 뷰

728x90
반응형
본 내용은 Do it! 정직하게 코딩하며 배우는 딥러닝 입문(이지스퍼블리싱) - 박해선 저자님의 책을 읽고 공부를 목적으로 작성한 글입니다.

 

코드는 https://github.com/on1ystar/Do-it-DL 에 Google Colab 파일(jupyter notebook)로 업데이트 될 예정입니다.

 

03-3 손실 함수와 경사 하강법


손실 함수

예상한 값과 실제 타깃값의 차이를 함수로 정의한 것으로 보통 '제곱 오차 ' 를 손실 함수로 사용한다.

제곱 오차(squared error)는 다음과 같다.

경사 하강법은 이런 식으로 정의된 손실 함수의 최소가 되는 지점을 찾아가는 방법이다.

위 식을 전개해 보면 가중치 w와 절편 b에 대한 2차식으로 각각 나타낼 수 있다.

식을 보면 w^2의 계수와 b^2의 계수가 항상 양수이므로 아래로 볼록한 형태의 2차 함수가 그려진다.

경사 하강법 (Gradient descent)

경사 하강법은 위 그래프에서 최소값인 접선의 기울기가 0이 되는 지점, 즉 미분값이 0인 점을 찾는 방법이다.
방법은 임의의 w 또는 b인 점에서 시작해 그 점에서의 접선의 기울기인 편미분 값을 빼나가는 것이다.

먼저 w에 대해 편미분한 식은 다음과 같다.

이때 깔끔한 식을 위해 보통 초기 제곱 오차 공식을

로 정의하여 결과가

가 되도록 한다. 이는 손실 함수에 상수를 곱하거나 나누어도 최종 모델의 가중치나 절편에 영향을 주지 않기 때문이다.
위 결과가 가중치에 대한 제곱 오차(손실 함수)의 변화율이다. 이제 가중치 업데이트를 위해 w에서 빼면

식이 유도된다.이는 앞의 오차 역전파 식과 동일한 식이 된다.

절편 역시 식을 전개해 보면 동일해진다.

이런 식으로 w와 b를 업데이트 해 나가다 보면 각각의 변화율 값이 점점 작아지면서 결과적으로 손실 함수의 최소값에 근접하게 된다.

여기서 변화율을 경사(gradient)라 칭하며, 이 경사가 점점 완만해지며 아래로 내려가는 모습에 의해 경사 하강법이라 한다.

03-4 선형 회귀를 위한 뉴런 클래스


1. __init()__ 메서드

2. 정방향 계산

3개의 입력 신호(w, b, x)를 가지고 예측값(y-hat)을 계산하는 것

3. 역방향 계산

gradient를 이용해 w와 b을 업데이트 하는 것
즉, 오차가 역방향으로 전파되기 때문에 오차 역전파(backpropagation)라는 말을 사용

4. 훈련을 위한 fit() 메서드

5. 모델 훈련

6. 시각화

 

728x90
반응형
댓글