본문 바로가기
기계학습/자연어 처리 머신러닝

기계 언어 - 딥러닝을 이용한 자연어처리 입문

by tryotto 2020. 1. 28.

# 시퀀스 투 시퀀스


- 활용 방식 : 입력 문장이 있으면, 이에 대응되는 출력 문장이 있을때 활용 (말 그대로 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) 계산 속도가 빠름