# 시퀀스 투 시퀀스
- 활용 방식 : 입력 문장이 있으면, 이에 대응되는 출력 문장이 있을때 활용 (말 그대로 sequence -> sequence)
ex) 챗봇, 번역기, 내용 요약, 음성인식
- 특성 : RNN 구조와 거의 동일하나, 설계된 방식이 살짝 다를 뿐이다.
> 앞서 다뤘던 RNN 의 경우, 하나의 단어가 입력된다면 그 이후의 모든 단어들을 예측해서 하나의 문장을 만들어내는 방식이었다.
> 반면, seq2seq 은 하나의 입력 문장을 받아서 또 다른 문장 하나를 생성해내는 것이기 때문에, RNN 을 더 심화한 버전이다.
- 구성 형태 : 인코더, 컨텍스트 벡터, 디코더
1) 인코더 : 입력된 문장이 있으면, 인코딩 처리해서 컨텍스트 벡터 형식으로 변형해서 전달
> 이때, 인코더로 들어가기 전에 임베딩 과정도 따로 더 거쳐야 한다
2) 컨텍스트 벡터 : 사실상, 인코더에서 진행된 모든 내용들을 전부 집약해서 갖고있는 벡터다.
3) 디코더 : 전달받은 컨텍스트 벡터를 디코딩 해서 하나씩 출력한다.
> 이때, 소프트맥스 함수를 거쳐서 적절한 단어를 선정해준다.
- 구성 특징 :
> 인코더와 디코더는, 내부에 엄청나게 많은 셀이 존재하는 RNN 모델이다!!
- 바닐라 RNN 을 사용할 경우 성능이 떨어지므로, LSTM 이나 GRU 를 활용한다
> 인코더의 마지막 은닉상태 -> 컨텍스트 벡터 = 디코더의 첫번째 은닉상태
> 디코더는 RNNLM 방식을 활용함
- 훈련 데이터 : 교사 강요 방식 활용
- 테스트 데이터 : 하나의 RNN 셀에 대한 출력값이, 다음 RNN 셀의 입력값으로 들어감
> 첫 시작은 <sos>, 마지막은 <eos> 가 나오도록 바꿔줘야 한다.
> 디코더는 매 셀마다, 번역 된 단어들을 출력해야 함 : 어떤 단어를 선택해서 출력해야 하는가?
- 선택해야 하므로, softmax 함수를 이용한 확률 변환으로, 단어를 선택하는 방식 채택
- 따라서, 각각의 셀에 대해서 Dense 층과 Softmax 층을 통과한 뒤에 매번 단어를 선택하는 과정을 거친다.
- 번역의 경우, 입력값의 길이와 출력값의 길이가 일치하지 않을 수 있다
ex) 나는 학생입니다 ( len : 2 ) -> I am a student ( len : 4 )
# 기계 번역의 여러 방법들 (BLEU 의 장점을 잘 보여주기 위함)
1. 단어 갯수 카운트로 측정 : "유니그램 정밀도" 방식
> 방법 : 정답 문장과, 예측 문장의 단어 구성을 확인한 뒤에 몇 개의 단어들이 겹치는지를 확인하는 방식 (링크 확인하기)
- 문제점이 당연히 있다 : 중복된 단어들이 등장할 경우에 오류가 발생
2. 중복을 제거하여 보정하기 : "보정된 유니그램 정밀도"
> 방법 : 유니그램 정밀도 방식이랑 유사하나, 정답 문장에 있는 단어들의 중복 등장 횟수를 초과하지 않는 선에서만 예측 문장의 단어들을 센다 (링크 확인!)
3. 순서를 고려하기 위해 n-gram 방식으로 접근하기
> 예를 들면, I know you -> "I know", "know you" 처럼 쪼개서 횟수를 세는 방식이다.
- 문제점이 있다. 이것도 결국엔, n 값이 작을 경우엔 2번의 방식과 마찬가지로 정밀도가 떨어지며, n 값이 클 경우엔 연산량이 과하다
4. BLEU 방식의 등장 : 모든 N-gram 결괏값을 활용하여 결과를 도출해낸다
> 보통은 4-gram 까지만 고려한다 (연산량이 과하게 되는걸 방지함)
- 이것도 문제가 있긴 하다. 예측 문장이 짧을수록 정확도가 높아지게 되는 오류가 생긴다.
> why? 정밀도를 계산할때, 예측 문장에 있는 n-gram 을 기준으로 측정을 하기 때문
5. Brevity Penalty
> 길이가 긴 문장에 대해서는 정밀도에 문제가 없다!
Why? BLEU 방식을 활용한다는 것 자체에서 길이가 과도하게 긴 문장에 대한 페널티를 충분히 부과하겠다는 것.
# BLEU
- 의의 : 기계 번역의 성능이 얼마나 뛰어난지를 평가하기 위함
> Bilingual Evaluation Understudy
- 방식 : 사람이 직접 번역한 결과와 얼마나 유사한지를 비교
> 측정 기준 : N-Gram
- 장점 :
1) 언어에 상관없이 사용 가능
2) 계산 속도가 빠름
'기계학습 > 자연어 처리 머신러닝' 카테고리의 다른 글
태깅 작업 - 딥러닝을 이용한 자연어처리 입문 (0) | 2020.01.28 |
---|---|
워드 임배딩 - 딥러닝을 이용한 자연어처리 입문 (0) | 2020.01.28 |
어텐션 매커니즘 - 딥러닝을 이용한 자연어처리 입문 (0) | 2020.01.28 |
딥 러닝 개념 모음 - 딥러닝을 이용한 자연어처리 입문 (0) | 2020.01.03 |
문서 표현 방법 - 딥러닝을 이용한 자연어 처리 입문 (0) | 2019.12.28 |