티스토리 뷰
[CS224n] Lecture 4. Word window classification and neural networks
제이gnoej 2019. 4. 29. 01:48이번 수업에서는 거의 본격 neural network 해부 수업?! 간단하게 Word window 를 이용해서 해당 단어가 Named entity 인지 아닌지를 classify 하는 모델을 통해서 neural net 에서는 어떤 식으로 parameters 가 업데이트 되는지를 살펴봤다. 이번 수업을 통해서 좀 더 확실히 뉴럴넷이 back propagation 과 forward propagation 으로 이루어지는지 조금 더 잘 이해할 수 있게 됐다고나 할까?! 이번 강의 포인트
- 러닝 모델의 수식은 거의 항상 매트릭스를 기준으로 표현된다. 인덱스를 사용하지 않아도 돼서 간단하게 표현 가능하기 때문! 이번 수업에서는 Matrix 와 그 안의 elements 를 넘나들며 이해함! Matrix 로 표현하는 게 이해하기 어렵다면 그냥 하나의 element로 풀어서 보자!
왜 데이터를 matrix 로 나타내나? Matrix 를 사용하는 이유 - training data 의 instances 내에서 loop 를 돌며 하나씩 곱하면 되지 않나? (예 - 학생 1 - 수면시간, 아침식사 여부, 운동 시간, 성적, 학생 2 - 수면시간, 아침식시 여부, 운동시간, 성적). 왜 굳이 matrix 를 사용하지? -> Loop 보다, matrix 끼리의 곱셈연산이 훨씬 더 빠르기 때문. 그래서 모든 data 를 하나의 matrix 에 욱여넣고 하는 거임 (그래서 어려웠군..)
밑에 코드에서 간단히 input X 와 weight W 의 dot product 를 구하는 연산만 할래도 초록줄 (matrix 곱) 이 빨간줄 (각각의 단어 - word vector 로 표현된 - 마다 loop 을 돌며 W 와 doc product 구하는 것) 보다 훨씬 빠르다는 것을 알 수 있다. 이런 감이 없다면 코드를 직접 돌려보는 게 좋은 경험!
1. Neural networks 의 원리
1.1 뉴런 하나 & 뉴럴 네트워크
하나의 뉴런을 여러 겹으로 쌓으면 그게 neural net 이 되는 것! Layer 2 의 a1, a2, a3 이 hidden unit 이고, 최종 출력된 Layer 3 (Output layer) 의 값이 ununormalized 된 score 이다. (확률을 구할 때는 항상 softmax 를 통해서 normalized 를 해주는데 출력 값이 continuous 한 값일 때는 - regression : 학생의 성적 - un-normalized한 score 를 써도 되나 봄)
1.2 왜 각 Neuron 에는 활성함수가 들어갈까?
2. Parameter 업데이트 - 미분을 통해서
업데이트 해야 될 파라미터는 총 3가지 - W, b, X ( W만 업데이트 하면 되는 줄 알았는데, X 는 word vector 라서 그것도 파라미터인듯). 이번 수업을 통해서 이 3가지 파라미터 (각각의 매트리스 내의 모든 값) 를 업데이트 하는 방법을 살펴볼건데, 좀 더 간단하게 하기 위해서 인풋 갯수와 dimension 을 좀 더 줄여보자. 밑에처럼 window = 1 이라서 input words 는 총 3개고, 각각의 word vector dimension 은 걍 1. 더 간단히 하기 위해서 x instance도 그냥 한 개라고 치자. 그리고 hidden unit 은 2개임.
여기서 총 update 해야 하는 파라미터를 다시 한번 정확히 하면
1) Hidden unit 을 만드는 W matrix - column vector 인데, 다른 column vector 와 곱해줘야 해서 역행렬을 씀.
,
2) Hidden unit 을 만드는 b - column vector
3) Word vector X - column vector
에 대해서 각 matrix 의 모든 element 를 update 하는 방법을 낱낱이 살펴보자!
2.1 최종 score 를 parameters 로 미분하자! - W
2.2 최종 score 를 parameters 로 미분하자! - b
2.2 최종 score 를 parameters 로 미분하자! - input X
이렇게 모든 미분값(혹은 에러시그널)이 구해지면, 각각 파라미터가 업데이트 될텐데 이 파라미터들은 순차적으로 업데이트 되는 게 아니라, 병렬적으로 업데이트 된다고 함! (이해는 잘 안 되지만)
그리고 back propagation의 연산이 빠른 이유는, 이미 forward propagation에서 구해놓은 값을 다시 재활용해서 쓰기 때문. 처음부터 다시 계산할 필요가 없기때문에 빠른 거임! (놀라움)
예를 들어 시그모이드 함수의 back propagation -f'(x) = f(x){1-f(x)} -서 쓰이는 f(x)값은 이미 forward propagation 에서 썼음! 그냥 갖다쓰면 됨
'NLP > CS224n' 카테고리의 다른 글
[CS224n]Lecture 9. RNN for machine translation (0) | 2019.05.20 |
---|---|
[CS224n] Lecture8. RNN and language model (0) | 2019.05.11 |
[cs224n]Lecture 6. Dependency parsing (0) | 2019.05.06 |
[CS224n] Lecture 3. More word vectors (0) | 2019.04.08 |
[CS224n] Lecture 2. Word2vec (1) | 2019.04.02 |
- Total
- Today
- Yesterday
- neurone
- Pre-trained LM
- Statistical Language Model
- 언어모델
- Contextual Embedding
- 벡터
- Elmo
- GPTZero
- Attention Mechanism
- Bert
- Neural Language Model
- nlp
- LM
- 뉴럴넷
- word embedding
- 뉴런
- 워터마킹
- transformer
- weight vector
- neural network
- language model
- cs224n
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |