2023. 11. 6. 17:04ㆍML&DL/NLP
자연어 처리
- 자연어 처리는 크게 자연어 이해(NLU)와 자연어 생성(NLG)의 영역이 있음
- 자연어 생성은 기계가 텍스트를 스스로 생성하는 영역을 말함
Seq2Seq(Sequence-to-Sequence)
- 입력된 시퀀스로 부터 다른 도메인의 시퀀스를 출력
- 인코더와 디코더로 구성되어있음.
- 인코더는 NLU, 디코더는 NLG에 유리함.
ex) 챗봇, 기계 번역, 텍스트 요약
- Seq2seq 는 인코더와 디코더 모듈로 구성
- 입력 데이터를 인코더에 입력 받고 컨텍스트 벡터라는 단어 정보들의 압축한 벡터를 만듦
- 디코더는 컨텍스트 벡터를 받아 번역된 단어 출력
Seq2seq 의 알고리즘
* Greedy Decoding
- seq2seq의 디코더는 기본적으로 RNN 언어 모델 => 가장 높은 확률을 가진 단어를 선택한다.
- 매 시점 가장 확률이 높은 것을 선택하는 것이 Greedy Decoding
- 최적의 선택이 아닐 수 있음
- 잘못된 선택이라도 취소 못함
* Beam Search
- 매 시점마다 가장 확률이 높은 k개의 다음 단어를 선택하고, 다음 시점 단어들의 확률 예측
- Greedy Decoding 이 놓칠 수 있는 최적의 해를 구할 수 있음.
- 디코더는 매 스텝마다 정답일 확률이 높은 k개의 선택지를 추적 (가설)
- k는 보통 5 ~ 10 크기를 가짐.
- <eos> 만난 경우가 k개가 될 때 까지 반복함.
Subword Tokenization
- bert 같은 pre-trained 모델이 사용하는 토큰화 방식
* BPE(Byte Pair Encoding)
- OOV 문제(vocab에 없는 단어가 나타날 때 생기는 문제)를 완화하는 대표적인 subword 분리 알고리즘.
- 자주 등장하는 Byte Pair는 새로운 Byte가 된다. => 새로운 단어를 대처하는 방법
Seq2seq 의 문제점
- 고정된 크기의 벡터에 모든 정보를 압축하다보니 정보 손실이 발생
- RNN의 고질적인 문제 기울기 소실 (vanishing gradient) 문제 발생
Attention
- Seq2seq의 문제점을 보완해줌.
- 번역 문장을 만들 때 기존 문장에서 중요한 부분에 가중치를 두는 것
- 디코더에서 출력 단어를 예측하는 매 시점마다. 인코더의 입력 문장을 참고하는 것
- 해당 시점에서 예측해야할 단어와 연관이 있는 입력 단어 부분에 중점을 두는 것
- Attention(Q, K, V) = Attention Value
- key -value
- Attention 함수는 주어진 쿼리에 대해서 모든 key와의 유사도를 구함. 그리고 키와 맵핑되어있는 value에 유사도를 반영해줌.
=> 이를 Attetion value 라고 함
'ML&DL > NLP' 카테고리의 다른 글
[NLP] BERT를 이용한 한국어 금융 뉴스 이진 분류 실습 (0) | 2023.11.07 |
---|---|
[NLP] Pre-trained Language Model(PLM) (0) | 2023.11.07 |
[NLP] 시퀀스 모델 - RNN, LSTM, GRU (0) | 2023.11.06 |
[NLP] 텍스트 벡터화 : 워드 임베딩(Word embedding) 실습 (1) | 2023.11.03 |
[NLP] 텍스트 벡터화 : TF-IDF 실습 (1) | 2023.11.03 |