sliver__

[NLP] 인코더 - 디코더 네트워크 본문

카테고리 없음

[NLP] 인코더 - 디코더 네트워크

sliver__ 2022. 7. 11. 15:37
728x90
  • 영어 문장을 인코더로 주입하면 디코더는 프랑스어 번역을 출력한다.
  • 프랑스어 번역은 한 스텝 뒤쳐져서 디코더의 입력으로도 사용된다.
  • 디코더는 이전 스텝에서 출력된 단어를 입력으로 사용한다.
  • 맨처음 단어는 SOS ( start-of-sequence ) 토큰으로 시작한다.
  • 문장의 끝에 EOS ( end-of-sequence ) 토큰이 있을 것으로 기대한다.
  • 인코더로 주입되기 전에 문장이 거꾸로 뒤집힌다.
  • 각 단어는 초기에 1차원으로 표현되어 있다.
  • 그 다음 임베딩 층이 단어 임베딩을 반환하고 이 단어 임베딩이 인코더와 디코더로 주입된다.

 

  • 각 단계마다 디코더는 출력 어휘 사전에 있는 단어에 대한 점수를 출력한다.
  • 그 다음 소프트맥스 층이 이 점수를 확률로 바꾼다.
  • 그리고 가장 높은 확률의 단어가 출력된다.
  • 추론 시에는 이전에 출력된 단어를 입력으로 주입한다.

'

 

[빔 검색]

  • 모델이 앞선 실수를 고칠 수 있는 방법 중 하나 ( Beam search )
  • k개의 가능성 있는 문장의 리스트를 유지하고 디코더 단계마다 이 문장의 단어를 하나씩 생성하여 가능성 있는 k개의 문장을 만든다.
  • 파라미터 k를 빔 너비 ( Beam width ) 라고 부른다.
  • 각 단계에서 어휘 사전의 단어의 개수만큼 다음 단어의 확률을 계산한다.
  • 그리고 이전 단계의 단어의 확률과 다음 단어의 확률을 곱하여 확률이 가장 높은 단어를 결정한다.
  • 최대 k개의 문장을 생성하므로 ( 어휘 개수 * k ) 만큼의 확률을 계산한다.
728x90
Comments