1-3강 - 자연어 처리 최근 trend
1. 딥러닝이 접목된 현재까지의 흐름
0) 기존에는 n-gram 기반 언어 모델을 이용했습니다.
1) RNN 활용
1> 2010년부터 RNN을 활용해서 언어 모델을 시도했습니다.
2> 결국 기존 n-gram 방식과 RNN의 결합을 통해 더 나은 성능을 가져왔습니다.
3> 단점: speech recognition과 machine translation 분야에 쓰이기에는 연산량이 너무 많았습니다.
2) word2vec (토마스 미코로프, 2013, 구글)
1> 간단한 구조의 Neural Network를 사용해서 단어들을 latent space로 성공적으로 투사시킴
2> 이를 통해 고차원의 공간상의 단어가 어떻게 latent space에 배치되는지 알 수 있습니다.
3> 시각화 사이트: http://projector.tensorflow.org/

비슷한 의미의 단어일수록
저차원의 latent space에서 가깝게 위치합니다.
시각화를 통해 딥러닝을 활용하여 NLP의 문제를 해결할 때
네트워크 내부는 어떤 식으로 동작하는 지에 대한 인사이트를 얻을 수 있습니다.
3) CNN을 이용한 NLP
이전까지만 해도 text는 sequential한 data이기 때문에 RNN이 NLP에 적합하다는 통념이 있었습니다.
1> 하지만 2014년 CNN만을 활용하여 기존의 text classification의 성능을 향상시켰습니다.
2> 이 방법은 embedding vector와 결합하여 성능을 더 극대화할 수 있었습니다.
4) 이외의 다른 기법들
1> 형태소 분석
2> sentence parsing (문장 파싱)
3> named entity recognition (개체명 인식)
4> semantic role labeling (의미역 결정)
5> 하지만 딥러닝의 등장으로 추후 end-to-end 모델을 만드는 방향으로 연구가 진행되어 1~4는 큰 파란을 일으키지는 못했습니다.
2. Natural Language generation (자연어 생성)
1) 'seq2seq -> attention -> machine translation에서의 큰 성과' 순으로 발전했습니다.
2) 또한 위의 기법들 덕분에 주어진 정보에 기반해서 자유롭게 문장을 생성(자연어 생성)할 수 있게 되었습니다.
3. 메모리를 활용한 심화 연구
attention이 성공을 거두자 연속적으로 정보를 읽고 쓰는 기법에 대한 관심이 커졌습니다.
1) neural turing machine (NTM)
1> 특정 주소에서만 정보를 읽는 방법을 떠나 여러 주소에서 연속적으로 정보를 읽고 쓰는 방법 제시
2) differential neural computer (DNC)
3) memory augmeted neural network (MANN)
1> 신경망을 통해 메모리를 활용하는 기법
2> 이 기법을 통해 최종적으로는 우리가 원하는 정보를 신경망을 통해 저장하고 필요할 때 잘 조합하여 쓰는 Q&A와 같은 문제에 효율적으로 대응할 수 있습니다.
4. 강화학습의 자연어 처리 분야에 대한 성공적인 적용
VAE나 GAN이 computer vision에서 잘 사용되고 있으나 NLP는 그럴 필요가 없습니다.
이미 언어 모델 자체가 문장에 대한 생성 모델 학습이기 때문입니다.
1) 다른 어려움 직면: loss function과 objective function과의 괴리
1> 딥러닝에서 사용하는 loss function과 실제 기계번역을 위한 objective function과의 괴리
(computer vision은 기존 mse의 한계를 극복하기 위해 GAN을 도입)
2) seqGAN
1> NLG분야에서도 강화학습을 활용하여 seqGAN과 같이 GAN을 구현하는 방법이 제시되었습니다.
2> 강화학습의 policy gradient 방식을 NLG에 성공적으로 적용
3> 이를 통해 computer vision에서 GAN과 유사한 학습을 NLP에서도 가능해졌습니다.
4> 강화학습을 사용하여 실제 자연어 생성에서의 objective function으로부터 reward를 받게 되면서 점차 실제 사람이 사용하는 듯한 문장을 생성하는 능력이 향상