티스토리 뷰

"해당 포스팅은 Coursera 에서 수강한 Andew Ng 의 deep learning specialization 코스를 요약한 것입니다." 


 

Deeplearning.ai 에서 하는 딥러닝 코스를 듣게 됐다. Andrew Ng 의 강의력 무엇...? 정말 대단한 그의 pedagogic skill. 이 강의를 다른 강의들보다 먼저 들었으면 어땠을까 하는 생각이 들정도였는데, 그동안 deep learning + nlp 배우면서 생긴 빈칸들이 하나하나 채워지는 기분이었다. 

 

시작하기에 앞서, 수업에서 matrix 나 vector 는 무조건 column 기준이다. 

$$ w = \begin{bmatrix} w_{1}
\\ w_{2}
\\ w_{3}
\end{bmatrix} $$  

그래서 역행렬은 row vector 가 됨. 

$$ w^T= \begin{bmatrix} w_{1}
& w_{2}
& w_{3}
\end{bmatrix} $$

인풋 데이터 X 를 나타낼 때도, 

$$x = \begin{bmatrix}  
 | & |  &  | & & |& \\ 
 x1&  x2 & x3 & \vdots & xm&\\ 
 |&  |& | & & |&\\
\end{bmatrix} $$ 

※ 그리고 코드로 짤때도 그대로 column 기준으로 씀. 즉,

 

 

첫번째 컬럼 = 첫번째 인풋 데이터

두번째 컬럼 = 두번째 인풋 데이터  

+ 근데 이건 수업 기준으로 그렇다는거고, row data 를 가지고 코드를 짤 때는, 컬럼 기준으로 reshape 해줘야 할 수도 있음. 


Loss / Cost / Gradient Descent / Back propagation / Derivative 

이번 수업의 핵심이 되는 개념들. 내 머릿속에서 그동안 clear 하지 않았던 것들이 저 개념들의 상관관계였는데 이번 수업을 통해서 정리됨! 

1. Loss ↔ Cost 

우선, loss 는 데이터 포인트 하나에 대한  ŷ (예측값 - ex. 주어진 이미지가 고양이일 확률) 의 loss 값이다. 그리고 cost 는 데이터 전체에 대한 loss 이므로 모든 데이터에 대한 loss 를 합한 데이터 갯수로 나눠주면 (평균) 그것이 cost! 코스트 함수는 마찬가지로, loss 함수에 시그마 씌워서 평균 구한다고 생각하면 됨, 

 

 

 

w 와 J(w) 그래프

 

 

2. Cost ↔ Gradient Descent ↔ Derivative 

경사 하강법은 최적의 cost 값을 갖게하는 w 를 찾아주는 알고리즘 (cost function 이 J(w)일 때) 

위 그림은 w 에 대한 cost function J(w) 의 함수를 2차원으로 나타낸 것이다. 우리의 목표는 cost J(w) 가 최저값을 갖는 것이고, 그렇게 하기 위해서는 최적의 J(w)를 갖게하는 w 를 찾는 것이다. 어떻게 찾냐고? 경사하강법을 이용해서! 경사하강법을 통해서 w 를 업데이트 하는 것이고, 수식으로 나타내면 다음과 같다. 

$$ w := w - \alpha(\frac{dJ(w)}{dw})$$

기울기를 구해서 기울기가 내려가는 방법으로, 즉 경사를 따라내려가는 방법으로 w 를 업데이트하는 거고 그래서 경사하강법이라는 이름이 붙은 것. 여기서 기울기를 구해야 하기 때문에, 결국은 derivative 를 구해야 하는 것임. 여기서 $\alpha$ 는 learning rate 이다. 

 

 

 

 

3. Derivative ↔ Back propagation 

그리고 $\frac{dJ(w)}{dw}$

 

 

 

마지막으로 이번 강의 핵심에 해당하는 슬라이드!! 이걸 바탕으로 python 코드를 작성할거다. dw1 이 왜 cumulative 해야 하는지 이해가 안됐다. w를 업데이트 하기 위해서는 cost function 를 w1 로 미분하는 값을 구해야 하는데, 여기서 J 는 결국 모든 loss 의 평균값이다. 평균값으로 나눠주는 건 제일 마지막에 하는 거고 결국은 그 sum 을 구해야 하는건데, for loop 을 돌아가면서 순차적으로 하는 거니까 python 으로는 culumative하게 더하면 되는 거고. 왜 $\frac{\partial J}{\partial w_{1}} = \frac{1}{m}\sum_{i}^{m}\frac{\partial L^{i} }{\partial w_{1}}$ 가 되는지는 식 풀어서 생각해보면 된다. 

 

 

※ 그 외 Key point 

 

  • $\mathrm{d} w_{1}$ 는 $\frac{\mathrm{d} J }{\mathrm{d} w_{1}}$ 을 나타낸다. 즉, 구하고자 하는 최종값에 대한 미분값이다. (코딩할 때를 위해서 이렇게 표기하고, 변수 이름도 저렇게 쓸거임) 
  • 위첨자는 데이터 포인트에 대한 index 이다. ($a^{1}$ 은 첫번째 입력값, $a^{2}$ 는 두번째 데이터값..)
  • $\frac{\mathrm{d} J }{\mathrm{d} x}$ 랑, $\frac{\partial J }{\partial x}$ 차이. 첫번째는 J 가 x 만 변수로 가지고 있고, J 를 x 로 미분하는 식을 나타내는 것이고, 두번째는 J가 변수를 x 외에도 다른 것을 가지고 있는데, x 로 편미분 하는 것을 가리킨다. 그냥 쉽게 말해서 첫번째는 변수가 x 하나, 2번째는 변수가 여러개라고 생각하면 됨. 
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함