부스트캠프 AI Tech/KLUE
[KLUE] 01. 인공지능과 자연어 처리
Angie
2022. 3. 22. 19:46
1. 인공지능의 탄생과 자연어처리
1.1 자연어처리 소개
- 튜링 테스트
- 기계에 지능이 있는지를 반별하고자 하는 실험
- ELIZA 챗봇 (1966)
- 심리 상담사
1.2 자연어처리의 응용분야

인간의 자연어처리
화자는 객체를 자연어의 형태로 (청자가 이해할 수 있는 방법으로) 인코딩 > 입을 통해 메세지 전송 > 청자는 자연어를 객체로 (본인 지식을 바탕으로) 디코딩
컴퓨터의 자연어처리
encoder는 벡터 형태(숫자 형태)로 자연어를 인코딩 > 메세지 전송 > 디코더는 벡터를 자연어로 디코딩
대부분의 자연어처리는 분류의 문제! → 좌표평면 위에 벡터로서 표현가능해야 함
- 분류 대상의 특징(feature)를 기준으로, 분류 대상을 그래프 위에 표현 가능 : 데이터 벡터화
- 분류 대상들의 경계를 수학적으로 나타낼 수 있음 (classification)
1.3 자연어 처리 임베딩
one-hot encoding
- 단어 벡터가 sparse → 의미를 벡터 공간에 표현 불가
Word2Vec
- 한 단어의 주변 단어들을 통해, 그 단어의 의미를 파악
- 단어가 가지는 의미 자체를 다차원 공간에 벡터화
- 중심 단어의 주변 단어들을 이용해 중심 단어를 추론하는 방식으로 학습
- skip-gram 방식
- 단어간의 유사도 측정에 용이
- 단어간의 관계 파악에 용이
- 벡터 연산을 통한 추론 가능
- 단어의 subword information 무시
- Our of vocabulary(OOV)에서 적용 불가능 → 그럼 신조어나 오탈자는..?
FastText
- subword information 이용
- 기존의 word2vec과 유사하나(중심단어-주변단어), 단어를 n-gram으로 나누어 학습 수행
- 쪼갠 것을 독립된 vocab으로 여김
- 단어를 n-gram으로 분리한 후, 모든 n-gram vector를 합산한 수 평균을 통해 단어 벡터를 획득
- e.g. orange와 oranges는 비슷한 벡터를 가짐
- 오탈자, OOV, 등장 횟수가 적은 학습 단어에 대해 강세
- word embedding 방식(word2vec, FastText,,): 동형어, 다의어 등에 대해 embedding 성능 좋지 않음
- 문맥에 따라 다양한 뜻을 가진다면 명확한 벡터값을 가지지 않음.
- 주변 단어를 통해 학습이 이루어지기에 문맥 고려 X
2. 딥러닝 기반의 자연어처리와 언어모델
2.1 언어모델
- 주어진 단어들로부터 그 다음에 등장한 단어의 확률을 예측하는 방식으로 학습
- 문맥 계산
Markov 기반의 언어모델
- 마코프 체인 모델
- 다음의 단어나 문장이 나올 확률을 통계와 단어의 n-gram을 기반으로 계산
- 해당 확률을 최대로 하도록 네트워크를 학습
RNN 기반의 언어모델
- 이전 state 정보가 다음 state를 예측하는데 사용됨: 시계열 데이터 처리에 특화
- 마지막 출력은 앞선 단어들의 문맥을 고려해서 만들어진 최종 출력 vector → 문맥이 고려된 context vector
- 출력된 context vector값에 대해 classification layer를 붙이면 문장 분류를 위한 신경망 모델
- 문맥이 고려되어 이쁘게 인코딩된 context vector가 있으면 어떤 것이든 가능해짐
- 일대다: 이미지 캡셔닝, 다대일: 문장 분류, 다대다: 개체명 인식
2.2 seq2seq
encoder layer
- RNN 구조를 통해 context vector를 획득
decoder layer
- 획득된 context vector를 입력으로 출력을 예측
2.3 attention
RNN 구조의 문제
- 입력 sequence의 길이가 매우 긴 경우, 처음에 나온 token에 대한 정보가 희석
- 고정된 context vector 사이즈로 인해 긴 sequence에 대한 정보를 함축하기 어려움
- 모든 token이 영향을 미치니, 중요하지 않은 token도 영향을 줌
Attention
- 중요한 feature는 더욱 중요하게 고려
- 문맥에 따라 동적으로 할당되는 encoder의 attention weight로 인한 dynamic context vector를 획득
- RNN의 관심: 가장 마지막 출력인 context vector
(vs) attention: (최종 context vector만 활용X) 각각의 RNN에 이미 지나쳤던 token들의 hidden state들의 vector 값 활용 - RNN, 순차적으로 연산이 이루어짐에 따라 연산 속도가 느림
2.4 self-attention
- 이전 state를 다음 state로 전달하는 구조 없앰