티스토리 뷰
[Course1 - Week 2] Logistic Regression as a Neural network
제이gnoej 2020. 3. 16. 04:59"해당 포스팅은 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 함수에 시그마 씌워서 평균 구한다고 생각하면 됨,
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번째는 변수가 여러개라고 생각하면 됨.
'Deep learning (일반) > deeplearning.ai' 카테고리의 다른 글
[Course4 - Week1] Convolutional neural networks (0) | 2020.07.28 |
---|---|
[Course3 Week2] - Structuring Machine Learning Projects (0) | 2020.07.13 |
[Course2 - Week2] Improving Deep Neural Networks (0) | 2020.05.25 |
[Course1 - Week 3] Shallow Neural Network (0) | 2020.04.06 |
[Course1 - Week 2] Neural network and deep learning 코드 (0) | 2020.03.23 |
- Total
- Today
- Yesterday
- neural network
- transformer
- Pre-trained LM
- 워터마킹
- language model
- Statistical Language Model
- weight vector
- neurone
- GPTZero
- 언어모델
- cs224n
- 뉴런
- Bert
- Elmo
- Neural Language Model
- Contextual Embedding
- Attention Mechanism
- LM
- 뉴럴넷
- 벡터
- nlp
- word embedding
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |