728x90

저번 포스팅까지는 하나의 데이터에 대한 학습과정을 공부했습니다. 이번 시간부터는 미니배치 즉, 여러개 샘플을 가지고 학습을 시키는 방법에 대해 공부한 내용을 포스팅하겠습니다. 2가지로 나눠서 진행할 예정입니다.

 

1. 두개의 sample에 대해서 cost function을 이용한 업데이트 방법

2. vector notation을 이용한 방법 (n개의 미니배치가 있을 경우의 업데이트 방법)

 

*실습링크

2021.09.04 - [실습 note] - 딥러닝 수학 실습과제 모음 9~12

 

딥러닝 수학 실습과제 모음 9~12

실습파일이 없는 줄 알았는데 있더라구요 그래서 쌓여 있는 실습을 진행했습니다. 각 구분선에 따라 이론내용과 실습을 분리했습니다. 순서는 맨 위부터 아래 순입니다. 2021.08.19 - [Data 일기] - 20

ghdrldud329.tistory.com

 

1. 두개의 sample에 대해서 cost function을 이용한 업데이트 방법

Loss 값들을 모두 평균내는 cost 부분을 미분하면 1/n이다. 만일 2개의 x data가 있다고 한다면 2개의 Loss값이 나오고 1/2씩 값을 가져와서 cost를 계산하게 된다. 이해를 돕기 위해 아래 그림을 참고해보자.

각 구해진 Loss 값에서 1/2씩 전달되어 cost가 만들어진다. backward 일때도 같은 원리로 과정을 거치게 된다.

데이터가 하나일때와 다른점은 1/2이 추가 된것 뿐이다. 미분은 내가 어느정도 영향을 끼쳤는지를 볼때 사용된다. forward 할때 1/2씩 각 loss값에서 cost로 전달이 되었고, 이를 다시 backward를 진행할 땐 내가 주었던 1/2을 "다시 받는 것이다." cost의 backward는 "공평하게 값을 나눈다."

다음으로 추가적인 핵심 부분은 아래 그림과 같다.

현재 th1,th0 두개가 있을 경우 backward의 진행을 살펴보고 있다. 초록색 수식을 보면 th1,th0 각각에 할당되는 값을 볼수있다. 두개 모두 "1" 이다. 즉, 앞전에 진행된 값을 "그대로" th1,th0에 전달하게 되는 것이다. 파란색 수식을 보면 값이 같다는 걸 알수 있다. 딱 여기까지가 bias term이 cost에 얼마나 영향을 주었는지를 알기 위해 편미분 값을 구한 것이다. 참고로 위 그림에서 검정색 글씨 th1이 두개가 있는데 왼쪽에 있는 것이 th1, 뒤에 있는 것이 th0이다.(강의 자료 오류)

정리를 하게 되면 아래와 같다.

각각 어떤 X data sample을 뽑느냐에 따라 수식은 같지만 값이 완전히 달라질수 있다. 이를 명심해야한다. cost는 각각 다른 이 두개를 섞어 주면 되는 것이다. 아래 수식을 통해 확인해 보자.

최종 수식의 의미를 본다면 "각각의 Loss을 더한 뒤 1/n만큼 나눈다" 이다. 이는 cost와 같은 의미이다.

th1, th0 각각의 평균값이 cost 값으로 이용이 된다. cost를 사용하게 되면 데이터들의 "전반적인 특성"을 반영하다 보니까 개별의 gradient 특성을 파악하는데 힘들수가 있게 된다. (배치 사이즈를 작게 하면 해결가능하다) 반면 얻는 장점은 튀는 값들을 surpress 해줌으로써 안정적인 학습을 가능케 한다.

 

 

2. vector notation을 이용한 방법 (n개의 미니배치가 있을 경우의 업데이트 방법)

x가 n개가 있을때 이를 jacobian metrices로 아래처럼 표현할수 있다.

n개에 대한 함수에 대해서 각각 th1의 편미분 값을 구할수 있다. 다른 편미분 값들도 보자면 아래처럼 표현할수 있겠다.

위는 벡터 function에 대한 벡터 독립변수의 편미분값을 구하는 과정이다. 행과열이 n개이므로 n*n 매트릭스가 된다. 위 내용 중 th1,th0으로 가는 편미분 값은 1이기 때문에 앞서 받았던 편미분을 그대로 전달 한다고 배웠다. 그때와 지금 다른 점은 매트릭스라는 형태이다. 항등행렬을 곱하므로써 자기 자신을 그대로 전달하는 역할을 하게 된다. th0도 마찬가지고 편미분 값이 모두 1로 나옴으로써 앞서 계산된 편미분 값을 그대로 받게된다. plus_node의 특징이다.

마이너스에 대해서 편미분을 구하게 되기 때문에 값이 모두 마이너스로 계산되는 특징을 가진다.

스칼라 fuuction에 대해서 벡터에 대한 미분을 해준다는게 특징이다.

앞으로 강의에서는 해당 수식들을 vec(편미분)으로 표현 해줌으로써 vector 표현을 변경하였다. 이를 활용하여 어떻게 backward가 진행되는지 자세한 과정은 생략하도록 한다.

정리를 하게 되면 아래와 같다.

Implementation

기존과 달라진 점은 vector로 연산이 된다는 점 이외에는 배웠던 내용과 같으므로 자세한 설명은 생략해도 될것같다.

8개씩 나뉜 평균값 cost를 사용하므로 위 그림처럼 부드러운 곡선을 나타내며 학습이 진행된다.

728x90

+ Recent posts