머신러닝

[딥러닝] 딥러닝 1단계: 신경망과 딥러닝 - 2. 신경망과 로지스틱 회귀 (2/2)

sa_woll 2024. 3. 18. 18:15

https://www.boostcourse.org/ai215/lecture/355354

 

딥러닝 1단계: 신경망과 딥러닝

부스트코스 무료 강의

www.boostcourse.org

계산 그래프

- 다음과 같은 J라는 식이 있을 때, 그림의 그래프로 표현되는 단계들을 거쳐 계산이 이루어진다. 이때 계산 그래프는 J와 같은 특정한 출력값 변수를 최적화할 때 유용하다. ex) 로지스틱 회귀의 경우 비용 함수의 최솟값을 찾고자 할 때.

- 왼쪽에서 오른쪽의 패스로 J값을 계산할 수 있다. (forward propagation. output을 구하는 과정)

- 다음 시간에는 도함수를 구하기 위해 오른쪽에서 왼쪽으로 패스하는 것을 알아본다. (backward propagation.)

생각

왼쪽에서 오른쪽으로의 패스는 곧 합성함수의 플러그인을 의미한다. 비용 함수가 1/2(target-output)^2 이고, global minimum을 찾기 위해 도함수를 구한다고 할 때, 오른쪽에서 왼쪽으로의 패스는 t-o의 제곱 -> t-o 이렇게 차원이 하나씩 낮아지는 것으로 직관적으로 이해해볼 수 있을 것 같다.

 

계산 그래프로 미분하기

- 도함수에 관한 이해는 고등학교 과정에서 이미 배우지만, 이 강의에서 유의미하게 뽑아낼 수 있는 도함수 관련 텍스트는 'J = 3v 에서 j의 v에 대한 도함수는 3이다. 왜냐하면 j의 증가량이 v의 증가량의 3배이기 때문이다.' 이다. 당연한 말이지만 직관적 이해에 도움이 된다.

- 그래프에서 한 단계 앞으로 가는 것이 곧 역전파의 한 단계

- 다시 한 번 화자의 도함수 구하는 방법을 따라가 보면, J=3v에서 v가 0.001만큼 변화한다고 했을 때 J는 0.003만큼 변화한다. 따라서 변화량이 3배 차이나므로 J의 도함수는 3이다.

- a에 대한 j의 도함수가 3이다( = j의 a에 대한 도함수가 3이다) = a가 0.001만큼 변화하면 그 변화가 계산그래프의 오른쪽으로 전파되어 J가 33.003이 된다.

- chain rule

dj/da = dj/dv*dv/da : a가 변화할 때 j에 미치는 영향을 연쇄적으로 표현한 것으로도 볼 수 있다.

-> dv는 dJ/dv를 이르는 변수이름. da는 dJ/da를 이르는 파이썬 변수이름.( 맨 아래의 빨간색 노테이션)

-> 밑부분에서 db를 계산할 때 c의 값은 2로 가정되었다.

 

- 도함수를 계산할 때 가장 효율적인 방법으로 하려면, 빨간 화살표 방향처럼 오른쪽에서 왼쪽으로 계산해야 한다.

 

로지스틱 회귀의 경사하강법

- 계속해서 계산 그래프를 이용한다.

-> goal: w1, w2, b를 조절하여 손실함수 L을 감소시키는 것. w와 b를 얼마나 바꾸어야 하는지 계산하는 것

 

-> 단일 샘플에 대한 경사 하강법이다.

 

m개 샘플의 경사하강법

- w1에 대한 전체 비용 함수의 도함수도 w1에 대한 각 손실 항 도함수의 평균이다.(둘째 줄)

 

-> 경사 하강법을 사용한 로지스틱 회귀를 구현하는 알고리즘 구현

(feature가 2개라고 가정)

-> for문을 작성하는 것은 번거롭다. 벡터화를 통해 이를 제거할 수 있음.