Practice makes perfect!

Week 9 (1) 인공지능과 자연어 처리 본문

Study/AI Tech

Week 9 (1) 인공지능과 자연어 처리

na0dev 2021. 9. 27. 11:17

1. 자연어 단어 임베딩

1) 특징 추출과 분류

- 분류를 위해서는 데이터를 수학적으로 표현해야 함. 

- 먼저 분류 대상의 특징을 파악하고(Feature extraction), 이를 기준으로 분류 대상을 그래프 위에 표현하고 경계를 수학적으로 나눌 수 있음 (Classification)

- 이러한 특징을 컴퓨터가 스스로 찾고, 스스로 분류하는 것이 '기계학습'의 핵심

2) Word2Vec

- word2vec 알고리즘 : 자연어의 의미를 벡터 공간에 임베딩

- 한 단어의 주변 단어들을 통해, 그 단어의 의미를 파악

- 주변부의 단어를 예측하는 방식으로 학습 수행(Skip-gram 방식)

- CBOW : 주변 단어들을 통해서 중간의 단어를 예측하는 모델

- Skip-Gram : 중심 단어를 통해 주변 단어를 예측하는 모델

- 단어에 대한 dense vector를 얻을 수 있음

장점 

- 단어간의 유사도 측정에 용이

- 단어간의 관계 파악에 용이

- 벡터 연산을 통해 추론 가능 ( e.g. 한국-서울+도쿄 = ? )

단점

- 단어의 subword information 무시

- Out of vacabulary (OOV)에서 적용 불가능

3) FastText

- 한국어는 다양한 용언 형태를 가짐 (e.g. 모르다 -> 모르네, 모르지, 모르더라..)

- Word2Vec의 경우 다양한 용언 표현들이 독립된 vocab으로 관리됨

- 기존의 word2vec과 유사하나, 단어를 n-gram으로 나눠 학습을 수행함

- n-gram으로 쪼개진 단어는 독립된 vocab으로 여김(별도의 n-gram vector 형성)

- 단어를 n-gram으로 분리 후, 모든 n-gram vector를 합산한 후 평균을 통해 단어 벡터 획득

- 오탈자, OOV, 등장 횟수가 적은 학습 단어에 대해 강세를 보임

word2vec이나 FastText와 같은 word embedding 방식은 주변 단어를 통해 학습이 이뤄지기 때문에 '문맥'을 고려할 수 없다. 따라서 동형어, 다의어 등에 대해서는 임베딩 성능이 좋지 못하다는 단점이 있다.

 

2. 언어모델

- 자연어의 법칙을 컴퓨터로 모사한 모델

- 주어진 단어들로부터 그 다음에 등장할 단어의 확률을 예측하는 방식으로 학습 (이전 state로 미래 state를 예측)

1) Recurrent Neural Network(RNN) 기반의 언어모델

- RNN은 히든 노드가 방향을 가진 엣지로 연결돼 순환구조를 이룸 (directed cycle)

- 이전 state 정보가 다음 state를 예측하는데 사용됨으로써,시계열 데이터 처리에 특화

- 마지막 출력은 앞선 단어들의 문맥을 고려해 만들어진 최종 출력 vector -> Context vector

- 출력된 context vector 값에 대해 classification layer를 붙이면 문장 분류를 위한 신경망 모델

2) Seq2Seq

- Encoder layer : RNN 구조를 통해 문맥을 고려한 context vector 획득

- Decoder layer : context vector를 입력으로 출력 예측

 - 음성 인식기, 이미지 캡셔닝, 형태소 분석, 번역 등을 수행할 수 있음

3) Attention

RNN 구조의 문제점

- 입력 시퀀스의 길이가 매우 긴 경우, 앞쪽에 나온 토큰에 대한 정보가 희석됨

- 고정된 context vector size로 인해 긴 시퀀스에 대한 정보를 함축하기 어려움

- 모든 토큰이 영향을 미치기때문에 중요하지 않은 토큰도 영향을 줌 

 

> Attention 모델

- 인간이 정보처리를 할 때, 모든 시퀀스를 고려하지는 않음

- 이와 마찬가지로 중요한 feature는 더욱 중요하게 고려하자는 것이 attention의 모티브

- 문맥에 따라 동적으로 할당되는 encode의 attention weight로 인한 dynamic context vector 획득

- 기존 seq2seq의 encoder, decoder 성능을 비약적으로 향상시킴

- 하지만 여전히 RNN 연산이 순차적으로 이뤄저 속도가 느리다는 한계가 있었음. 

 

> Self-Attention

- 모든 token을 all-to-all로 연결

4) Transformer 모델

- 기존 seq2seq 모델은 Encoder RNN 구조와 Decoder RNN 구조가 따로 존재

- transformer network는 encoder와 decoder를 따로 분리하는 것이 아니라 하나의 네트워크 내에 합쳐서 구성됨.

 


3. 자연어 전처리

모델을 아무리 바꾸고, 튜닝하더라도, 데이터 자체가 문제가 있다면 성능이 나올 수 없음! 가장 중요한 것은 데이터

Task 설계 

    : '유튜브 라이브에서 악성 댓글을 필터링해주세요' -> 악성 댓글 classifier를 만들자!
• 필요 데이터 수집

    : 댓글 데이터 수집
• 통계학적 분석

    : 토큰 개수 -> 아웃라이어 제거

    : 빈도 확인 -> 사전 정의
• 전처리

    : 개행, 특수문자, 공백, 중복표현(ㅋㅋㅋ), 이메일, 링크, 제목, 불용어, 조사 제거. 띄어쓰기 보정. 
• Tagging

• Tokenizing

    : 자연어를 어떤 단위로 살펴볼 것인가. (어절, 형태소, WordPiece tokenizing)

• 모델 설계
• 모델 구현
• 성능 평가

 

- 한글 프로그램의 오타 교정은 어떤 원리일까?

4. 한국어 토큰화

1) 토큰화(Tokenizing)

- 주어진 데이터를 토큰(Token)이라 불리는 단위로 나누는 작업
- 토큰이 되는 기준은 다를 수 있음(어절, 단어, 형태소, 음절, 자소 등)

 

문장 토큰화(SentenceTokenizing)
• 문장 분리

 

단어 토큰화(WordTokenizing)
• 구두점 분리, 단어 분리 “Hello, World!”->“Hello”,“,”,“World”,“!”

 

한국어 토큰화

• 영어는 New York과 같은 합성어 처리와 it's와 같은 줄임말 예외처리만 하면, 띄어쓰기를 기준으로도 잘 동작하는 편

• 한국어는 조사나 어미를 붙여서 말을 만드는 교착어로, 띄어쓰기만으로는 부족

   예시)he/him->그,그가,그는,그를,그에게

• 한국어에서는 어절이 의미를 가지는 최소 단위인 형태소로 분리
   예시)안녕하세요 ->안녕/NNG, 하/XSA, 세/EP, 요/EC

 

반응형

'Study > AI Tech' 카테고리의 다른 글

Week 11 (1) MRC Intro  (0) 2021.10.12
Week 10 (1) GPT 언어 모델  (0) 2021.10.05
Week 9 (4) 한국어 언어 모델 학습 및 다중 과제 튜닝  (0) 2021.10.01
Week9 (3) BERT 학습  (0) 2021.09.29
Week9 (2) BERT 언어모델  (0) 2021.09.28
Comments