티스토리 뷰
[CS224n] Lecture 18. Tackling the limits of Deep learning for NLP
제이gnoej 2019. 8. 11. 00:25대망의 마지막 수업... ㅜㅜ 중간에 듣다가 못 알아먹겠어서 처음으로 다시 돌아가서 듣는 바람에 애초 계획했던 시간의 2-3배가 걸렸지만 포기하지 않고 계속 들은 나 칭찬해!!
마지막 수업은 아직도 남은 NLP의 한계에 대해서 다루는 시간이었다. 총 8개의 한계에 대해서 다뤘음.
1. 모든 task에 적용가능하며 좋은 성능을 내는 하나의 architecture 가 없다.
이미지 에서는 거의 CNN 이 dominant 한 양상인데 NLP 에서는 하나의 아키텍쳐가 없고, task 마다 잘 작동하는 아키텍쳐 다 따로 있음 (LSTM, GRU, RNN .... )
-> Dynamic Memory Network 로 해결!
지난 수업 중에 Dynamic Memory network 나왔을 때, 하나의 아키텍쳐를 가지고 마지막 layer (softmax) 만 수정해서 Question anwering에도 쓰고, Sentiment analysis도 했음.
2. Joint Many-task Learning
3. No zero shot predictions
우선 제로 샷이 뭔지를 보자. 예를 들어서 5개의 동물 이미지를 보고 각각의 동물을 classify하는 과제가 있다고 하자. 이 때, 데이터셋의 불균형으로 트레이닝 동안에 단 4개의 동물에 대한 내용만을 학습했다고 하자 (하지만 유효한 label 은 여전히 5개임). 트레이닝 과정 중에 나오지 않은 이미지가 테스트 중에 나왔다면 이 모델을 이 동물을 제대로 맞출 수 있을까? 이걸 가능하게 하는 게 바로 제로 샷이다. 트레이닝 중에 한번도 보지 못한 내용을 테스트 할 때 제대로 하게 하는 것.
이제 이 제로 샷을 Question answering 에 도입한다고 해보자. 다른 NLP task 와 마찬가지로 모든 단어는 word embed 된다. 문제는 이 Q&A 모델이 테스트 셋을 대상으로 answer 을 predict 할 때, 이 answer 에 해당하는 단어는 training set에서 본 단어에 대해서만 국한될 것이라는 것이다. 즉 트레이닝 때 한번도 보지 못한 단어가 테스트 문제의 답이라면, 이 모델은 이 단어를 답변으로 predict하지 않을 것이라는 것 (솔직히 이해가 잘 안 되는데... 이런건가? Q&A 에서의 핵심은 질문에 대한 답을 할 때, 인풋 문장과 질문 문장의 벡터간 유사도를 기반으로 답을 하는건데, 아예 처음 보는 단어라면 이 단어의 벡터는 아직 학습이 안 됐기 때문에 문장 간의 유사도가 높게 나올리가 없음.)
근데 어떤 모델이 자기가 한번도 보지 못한 단어에 대해서는 답변을 채택하지 못한다면 상당히 reliable 하지 않은 모델이라고 할 수 있다.
-> Mixture model of softmax and pointers 로 해결!
문장의 질문에 대한 답을 찾는 모델은 2가지 선택이 있는거임. Vocabulary 를 Softmax 에 돌려서 가장 높은 단어를 선택하거나 (질문과의 유사도 기반) 아니면 pointer 를 통해서 문장에 있는 질문 중 하나의 단어 (혹은 구)를 그대로 copy하는 거임. 아니면 이 2개의 probability를 합쳐서 선택할 수도 있고.
4. Duplicate word representations
이건 진짜 무슨 문제인건지 모르겠음...
5. Question have input indepedent representations
지난 수업에 Question answering 할 때도 배웠지만, Question 을 embedding 할 때는 단순히 질문의 모든 단어를 벡터로 임베드 했었음. 근데 사실 질문은 어떤 상황이냐에 따라 그 의미가 달라지는데도 불구하고 주어진 document 와 독립적으로 문장을 임베드하는 것은 한계가 있다. (예를 들어서, May I cut you? 라는 질문은 주어진 document 에서 칼이라는 단어가 나왔냐 아니냐에 따라 다르게 해석될 수 있다).
-> 해결방법은 다시 봐야 이해될 듯.
6. RNNs are slow
그렇다. NLP classifier 를 만들면서 느낀 거지만 RNN 이나 LSTM 을 트레이닝하는 건 진짜 오래 걸린다. CNN 학습시킬 때 너무 빨라서 놀랐던 기억이 있다..
-> 그렇다면, CNN (parallelism 덕분에 매우 빠름) 과 RNN (현재 상태 업데이트를 위해서 이 전의 상태를 반영하기 때문에 long memory) 의 장점을 합치자!
우선 RNN 이 느린 것은 parallelizable 하지 않기 때문이다. 즉, 현재 상태 업데이트를 하기 위해서는 previous hidden state 이 필요하기 때문에 이게 계산될 때까지 기다려야지만 current hidden state 를 계산할 수 있다. 즉 병렬 계산이 안 되고 직렬 계산이기 때문에 느릴 수 밖에 없는 것.. 반면 CNN 은 n 개의 consecutive inputs 값만 있으면 병렬적으로 계산이 가능하다. (필터는 사실상 모든 input 에 대해 필터의 weight 을 곱하는 matrice 계산이기 때문에 병렬 처리 가능함.)
그렇다면, current hidden state 를 계산하기 위해 previous hidden state 를 쓰는 것이 아니라, previous input vector 를 쓴다면?! Input vector 는 이미 다 pre-trained 된 벡터 값이기 때문에 매트릭스 곱으로 처리 가능해진다! (매트릭스 곱 만만세) 그렇게 되면 상당히 빠르게 training 이 가능해진다.
근데 일단 매트릭스 곱이라서 빠르긴 하지만 Cuda가 있어야지 단순히 파이썬 행렬 곱으로는 엄청 큰 효과를 기대하기 어렵다고 함 (왠지는 잘 모르겠다)
7. Architecture search is slow
Deep learing 연구자들의 경우, 어떤 task 에 맞는 architecture 를 만드는 데만 시간이 너무 오래 걸린다 (여기서 아키텍쳐란, 예를 들어 CNN 이라고 치면 필터 갯수, 필터 크기, 스트라이드 크기, 이 모든 것을 포함한 CNN layer 의 갯수 ... 등을 말함).
-> 2017년 연구에는 각 task에 맞는 아키텍쳐를 스스로 결정하는 AI model 을 만드려는 연구가 있었다 ( ㄷㄷ .. ) 일단 어떤 task에 대한 샘플 아키텍쳐를 만든 다음에 이 모델의 child network 를 학습시킨다. 이 학습된 모델의 정확도를 가지고 back progate해서 parameters update. 근데 이걸 reinforcement learning 을 통해서 했다고 함.
======
한 학기동안 수고 하셨습니다!
'NLP > CS224n' 카테고리의 다른 글
[CS224N-2019W] 13. Contextual Word Representations and Pretraining (0) | 2021.05.23 |
---|---|
[CS224n]Lecture17. Issuses in NLP and possible architectures for NLP (0) | 2019.08.26 |
[CS224n]Lecture15. Coreference Resolution (0) | 2019.07.31 |
[CS224n] Lecture16. Dynamic Neural Networks for Question Answering (0) | 2019.07.30 |
[CS224n] Lecture13. Convolutional Neural Networks (0) | 2019.07.22 |
- Total
- Today
- Yesterday
- GPTZero
- transformer
- Contextual Embedding
- cs224n
- Statistical Language Model
- neural network
- Neural Language Model
- Pre-trained LM
- nlp
- LM
- neurone
- 벡터
- Attention Mechanism
- 뉴럴넷
- 언어모델
- Bert
- Elmo
- word embedding
- 워터마킹
- language model
- weight vector
- 뉴런
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |