본문 바로가기
코딩 독학/앤드류응 딥러닝 Course1 (미래연구소 14기)

C1 W2 L13 ~ L14

by 효니루 2020. 10. 9.

C1W2L13. Vectorizing Logistic Regression

for 문 없이 로지스틱회귀의 정방향전파를 코드로 구현해보자 ><

m개의 샘플이 있다면, 가중합 z를 m개, 그에 따른 활성값 a를 m개 각각 계산해야 한다. 이것을 한방에! 넘파이로 구현할 수 있다.

 

 

X = (n_x,m)의 행렬! 각샘플 x(i)에서 i는 m개중 i번째 샘플이고, x(i) 안에는 n_x개의 피처가 있다. (피처는 특징을 의미함)

 

대문자Z에는 m개의 샘플의 가중치합값인 z값들을 담는다.

 

wT는 m개의 가중치 w들의 (m,1)배열을 transposition시켜 (1,m)배열로 바꿔준것을 의미한다. 이를 통해 X행렬과 행렬곱이 가능해진다.

그리고 행렬에 일반실수를 사칙연산하게 되면 broadcasting (알아서 배열이 맞춰짐)되어 전체 행렬원소들에 동일하게 연산된다. (+b를 계산)

이를 넘파이 코드로 간단히 나타내면 np.dot(w.T,X) + b 이다.

 

한번더 복습하기 위해 미래연구소의 수업자료를 보면! 2개의 샘플에 각각 피처3개에서 다음과같이 표현이 가능하다.

 

각 샘플 x에서 아래첨자는 피처분류를 나타냄! 1,2,3번 피처라는 뜻 (꽃이 잎모양,길이,색 이런식)

각 샘플 x에서 괄호한의 숫자는 m번째 샘플이라는 말이다.

 


C1W2L14. Vectorizing Logistic Regression's Gradient Computation

이제는 로지스틱회귀의 5단계 Initialization, Forward propagation, Cost function, Backward propagation, Gradient descentfor문이 없는 코드로 모두 바꿔보자.

복습해보자면, 

m개의 샘플에서, 가중치 (w1, w2, b)에 대하여

1. Initialization : 오차함수값인 J와  J에 대한 각 가중치의 도함수를 코드로 나타낸 dw1, dw2, db 를 모두 0으로 초기화한다.

2. Forward propagation & Cost function : m개의 샘플 각각에 대하여 가중합z, 활성값a, 오차함수J를 구하는 for문을 돌린다.

3. Backward propagation : J에 대한 가중치 w1, w2, b의 도함수인 dz, dw1, dw2 를 구하는 식도 for문에 포함하여 for문이 반복할때마다 J, dw1, dw2, db는 직전값이 더해지는 방식으로 (+=) 갱신된다.

마지막줄에서 m개의 J, dw1, dw2, db의 평균을 구하기 위해 m으로 나눠준다.

4. Gradient descent : (이 그림엔 없지만) 구하고자 하는 w1, w2, b를 dw1, dw2, db와 학습률 α를 곱한값을 통해 갱신한다.

 

m번의 for문을 돌리지 않고 m개의 샘플을 한방에 담은 대문자 벡터들을 만들자!

대문자 dZ에는 m개의 dz를 담고,   대문자 A, Y는 m개의 a와 y를 담으면 dZ=A-Y로 한방에 벡터연산이 가능해진다.
왼쪽은 for문에 쓰인식이고, 오른쪽처럼 dw, db를 벡터공식으로 나타낼수있다.

**요기서 헷갈렸던점!!

dw 에 아래첨자가 없다. 이부분 설명할때는 위와 다르게 가중치를 (w, b) 로 w 한개만 설정하고 계산한것!

w1, w2가 있다면 dw1과 dw2를 따로 구분해주는듯함. 다음강에서 이 개념은 더 자세히 설명하는듯.

 

 

최종

최종 벡터화로 모든 식을 바꾸면 for문 없이 식이 이렇게 바뀐다!

 

가장 아래에서 결국 구하고자했던 가중치 w와 b (w가 여러개면 w1, w2,,,가 있겠지!)를

한번 로지스틱사이클을 돌때마다 dw, db에 우리가 정한 학습률 알파를 곱한값을 빼서 더이상 값이 변하지 않을때까지 사이클을 돌린다.

 

하지만 요 왼쪽의 식의 사이클을 돌리는 for문 iteration은 교수님께서는 뭐 아직 없앨수없다고 생각하신다고 한다 ^ㅡ^

 

 


출처1 : https://futurelab.creatorlink.net/

 

출처2 :

https://www.youtube.com/watch?v=okpqeEUdEkY&list=PLkDaE6sCZn6Ec-XTbcX1uRg2_u4xOEky0&index=19

'코딩 독학 > 앤드류응 딥러닝 Course1 (미래연구소 14기)' 카테고리의 다른 글

C1W3L6~L7  (0) 2020.10.13
C1W2L1 ~ C1W2L4  (0) 2020.10.09
C1W2L10 ~C1W2L12  (0) 2020.10.07
C1W2L4 ~ C1W2L9  (0) 2020.10.07

댓글