NLP + Pytorch/1강 - intro to Deep Learning & NLP

1-1강 - NLP와 Deep Learning (자연어 처리와 딥러닝)

intelligentcm 2020. 3. 2. 14:40

1. 자연어 처리란?

1) 기본

1> 정의: 사람의 언어를 컴퓨터가 알아듣도록 처리

2> 그래서 기본으로 수학적 지식(ML에 필요한 선형 대수, 통계)과 컴퓨터 공학적인 지식도 필요하고 언어학 지식까지도 필요합니다.

3> 최종 목표: 컴퓨터가 사람의 언어를 이해하고 여러 가지 문제를 수행할 수 있도록 하는 것

2) 응용 분야

1> sentiment analysis: 대량의 text를 이해하고 수치화하는 작업(분류부터 rating까지)

2> 대화를 통해 user의 의도를 파악하고 도움을 주는 작업 ex> 빅스비, 시리 등

3> summarization (요약)

4> machine translation (기계 번역)

3) 그리고 이 작업들은 Deep Learning과 함께 비약적인 발전을 이뤘습니다. 이에 대해 하나씩 천천히 살펴보겠습니다.

2. Deep Learning의 상용화

1) 1950년대부터 2010년 이전까지 여러 측면에서 어려움이 있었고 이에 대해 조금씩 보완을 했습니다. 이후 점차 가시적인 성능을 보이면서 주목을 받게 되었습니다.

2) Image Classification (이미지 분류)

1> Computer vision 분야에서 권위적인 대회인 ImageNet 대회에서 그 전까지는 매년 1%의 성능(Top-5 error) 향상을 보여줬지만 2012년 AlexNet이 10%에 가까운 성장을 하며 주목을 받게 되었습니다.

2> 이후 ZFNet(2013), VGGNet(2014), GoogleNet(2014)등이 차례로 성능을 향상시키며 주목을 받았습니다.

3> 또한 2015년에 발표된 ResNet은 Residual connection 기법을 사용하며 152개의 layer 쌓음에도 좋은 성능을 보여주었습니다.

4> 이후로도 많은 논문에 좋은 모델이 소개 되었으며 현시점(2020년 3월)에 SOTA로 주목받고 있는 모델 중 하나는 2019년 봄에 발표된 EfficientNet입니다.

(EfficientNet paper: https://arxiv.org/pdf/1905.11946.pdf)

3) speech recognition (음성 인식)

음성 인식 분야에서도 Deep Learning을 활용해서 현재 상용화까지 성공적으로 완료했습니다.

1> 기존에 음성 인식은 GMM을 통해 음소를 인식하고 이를 AM과 LM을 WFST 방식을 통해 결합하는 ASR 시스템은 복잡한 구조를 가졌음에도 성능이 좋지 않아 한계를 보이고 있었습니다.

- AM: HMV(Hidden Markov Model)을 통해 sequential 정보를 반영해 학습하여 만든 AM(accustic model; 음향 모델)

- LM: n-gram 기반의 LM(language model; 언어 모델)

- ASR: automatic speech recognition

2> 그러던 중 GMM을 Deep Neural Network로 대체하여 큰 성능 향상을 이루었습니다.

3> 현재는 음향 모델 전체를 LSTM으로 대체하고 end-to-end 방식으로 자리잡아가는 상황입니다.

4) Machine Translation (기계 번역)

1> 기존의 기계 번역은 RBMT방식보다는 언어 간 확장이 용이하며 성능이 뛰어나기 때문에 SMT방식을 사용했습니다. 하지만 구조가 복잡하다는 단점이 있었습니다.

2> Deep Learning이 주목 받게 된 이후 seq2seq 구조로 신경망 기반의 end-to-end Machine Translation을 구현했습니다.

3> 또한 seq2seq를 기반으로 attention이 제안되며 더 좋은 성능을 보였고 신경망 기반의 machine translation이 계속해서 해당 분야에서 계속해서 개발이 되고 있습니다.

4> 현재 상용화된 기계 번역 시스템은 거의 대부분 딥러닝에 의한 시스템으로 대체되었습니다.

5) Generative Learning

0> Discriminative Learning(판별 모델)의 경우 금방 정복이 되었으며 이제는 그 반대인 생성모델을 주목하게 되었습니다.

1> 수식

- 판별 모델 학습

- 생성 모델 학습

2> 판별 모델: X가 주어졌을 때 알맞은 label인 Y를 찾아내는 것에 집중

3> 생성 모델: X 분포 자체를 학습하는데 집중

4> 현재 생성 모델 중 많은 주목을 받고 있는 것은 GAN과 VAE가 있습니다.

 

3. NLP 현재까지의 흐름

1) 과거의 기법과 현재 딥러닝 기반의 NLP 비교

 

  과거 현재 (딥러닝)
token discrete continuous
사람의 이해 이해하기 쉽다. 이해하기 어렵다.
디버깅 쉽다. 어렵다.
모호성, 유의성 weak robust
과정 여러 서브 모듈이 존재 end-to-end
속도 및 성능 느리다. 빠르며 성능도 개선했다.

 

  symbolic (discrete) neural network space (continuous)

지식의

표현 방법

- 단어, 관계, 템플릿

- 고차원, 이산적, sparse vector

(one-hot encoding)

- 간소화 및 일반화된 knowledge graph

- 저차원, 연속적, dense vector

(word embedding)

inference

- 거대한 knowledge graph로 속도 감소

- 키워드 또는 템플릿 매칭에 weak

- 적은 메모리를 요구하며 빠르게 작동

- 키워드 또는 템플릿 매칭에 robust

사람의 이해 사람이 이해할 수 있다. 사람이 이해하기 어렵다.
연산 효율성 낮다. 높다. 


2) 딥러닝 기반의 NLP 특징

1> continous (data; token; 단어)

- word2vec 등의 word embedding을 통해서

- discrete한 성격의 token(혹은 단어)을

- continous한 vector로 변환

2> 직접적인 해석은 어렵다.

3> 디버깅이 어렵다.

4> 모호성과 유의성의 문제를 해결

5> end-to-end 모델

6> 연산 속도 빠르다

7> 성능 또한 개선되었다.

8> 최근 trend

- RNN을 보완하여 LSTM, GRU의 사용

- attention을 사용해서 timestep이 긴 sequential data도 쉽게 train 할 수 있게 되었다.

3) 정리