일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 확률
- 백준
- box-sizing
- 소수
- pandas
- Prefix Sums
- c++
- grid
- Gap
- Javascript
- float
- spring
- Codility
- 알고리즘
- 반응형 웹
- 미디어 쿼리
- Photoshop
- CSS
- SK바이오사이언스
- transform
- REM
- 통신사할인
- 상태
- c
- 수학
- 강화학습
- 포토샵
- skt membership
- react
- stl
Archives
- Today
- Total
sliver__
[NLP] 인코더 - 디코더 네트워크 본문
728x90
- 영어 문장을 인코더로 주입하면 디코더는 프랑스어 번역을 출력한다.
- 프랑스어 번역은 한 스텝 뒤쳐져서 디코더의 입력으로도 사용된다.
- 디코더는 이전 스텝에서 출력된 단어를 입력으로 사용한다.
- 맨처음 단어는 SOS ( start-of-sequence ) 토큰으로 시작한다.
- 문장의 끝에 EOS ( end-of-sequence ) 토큰이 있을 것으로 기대한다.
- 인코더로 주입되기 전에 문장이 거꾸로 뒤집힌다.
- 각 단어는 초기에 1차원으로 표현되어 있다.
- 그 다음 임베딩 층이 단어 임베딩을 반환하고 이 단어 임베딩이 인코더와 디코더로 주입된다.
- 각 단계마다 디코더는 출력 어휘 사전에 있는 단어에 대한 점수를 출력한다.
- 그 다음 소프트맥스 층이 이 점수를 확률로 바꾼다.
- 그리고 가장 높은 확률의 단어가 출력된다.
- 추론 시에는 이전에 출력된 단어를 입력으로 주입한다.
[빔 검색]
- 모델이 앞선 실수를 고칠 수 있는 방법 중 하나 ( Beam search )
- k개의 가능성 있는 문장의 리스트를 유지하고 디코더 단계마다 이 문장의 단어를 하나씩 생성하여 가능성 있는 k개의 문장을 만든다.
- 파라미터 k를 빔 너비 ( Beam width ) 라고 부른다.
- 각 단계에서 어휘 사전의 단어의 개수만큼 다음 단어의 확률을 계산한다.
- 그리고 이전 단계의 단어의 확률과 다음 단어의 확률을 곱하여 확률이 가장 높은 단어를 결정한다.
- 최대 k개의 문장을 생성하므로 ( 어휘 개수 * k ) 만큼의 확률을 계산한다.
728x90
Comments