seq2seq tensorflow 예제

2014년 Sutskever에 설명된 간단한 seq2seq 모델을 구현하고 장난감 암기 작업에 대해 테스트합니다. 다음 프레임워크는 tf-seq2seq와 유사한 기능을 제공합니다. 우리는 우리가 서로에게서 배울 수 있도록 이러한 프레임 워크의 저자와 협력 할 수 있기를 바랍니다. 통계 및 신경 번역에 사용되는 표준 형식은 병렬 텍스트 형식입니다. 소스 문장과 대상 번역에 해당하는 파일이 있는 일반 텍스트 쌍으로 구성되며, 줄에 정렬됩니다. 예를 들어 각 줄은 공백으로 구분된 토큰 시퀀스에 해당합니다. 가장 간단한 경우 토큰은 문장의 단어입니다. 일반적으로 우리는 단어 줄기와 문장 부호를 고려하면서 토큰화기를 사용하여 문장을 토큰으로 분할합니다. 예를 들어, 토큰화자에 대한 일반적인 선택은 Moses tokenizer.perl 스크립트 또는 spaCy, nltk 또는 스탠포드 토큰화와 같은 라이브러리입니다. 이 문서에서는 간단한 시퀀스 간 질문-답변 작업에 대 한 seq2seq 모델(인코더-디코더 RNN)을 구현합니다. 이 모델은 입력 시퀀스(질문)를 출력 시퀀스(답변)에 매핑하도록 학습할 수 있으며, 이는 반드시 서로 같은 길이가 아닐 수 있습니다.

그러나 단어를 기반으로 모델을 학습하는 방법에는 몇 가지 단점이 있습니다. NMT 모델은 단어에 대한 확률 분포를 출력하므로 가능한 단어가 많을수록 매우 느려질 수 있습니다. 맞춤법 오류와 파생 된 단어를 어휘에 포함하면 가능한 단어의 수는 본질적으로 무한하며 모델이 처리하려는 가장 일반적인 단어의 방법에 대한 인위적인 제한을 부과해야합니다. 이것은 또한 어휘 크기라고하며 일반적으로 10,000에서 100,000 의 범위로 설정됩니다. 단어 토큰에 대한 교육의 또 다른 단점은 모델이 단어의 일반적인 „줄기”에 대해 배우지 않는다는 것입니다. 예를 들어, 공통의 뿌리에도 불구하고 „사랑”과 „사랑”을 완전히 분리된 클래스로 간주합니다. 모델 정의를 완료하는 데 더 많은 작업이 필요합니다. See의 용지의 코드는 GitHub에 있으며, 이보다 간결한 예제입니다. 오늘은 모든 최신 텐서 플로우 API [TF 1.3]를 사용하여 시퀀스 투 시퀀스 모델의 예를 보여주고 싶습니다.

확장성: 코드는 모듈식으로 구조화되어 있으며 구축하기 쉽습니다. 예를 들어 새로운 유형의 주의 메커니즘 또는 인코더 아키텍처를 추가하려면 최소한의 코드 변경만 필요합니다. 이 프로젝트에서는 TensorFlow에서 seq2seq 모델 또는 인코더 디코더 모델이라는 언어 번역 모델을 빌드할 예정입니다. 모델의 목적은 영어 문장을 프랑스어 문장으로 번역하는 것입니다. 자세한 단계를 보여 드리고 인코더 모델을 정의하는 방법, 디코더 모델을 정의하는 방법, 전체 seq2seq 모델을 빌드하는 방법, 손실 및 클립 그라데이션을 계산하는 방법과 같은 질문에 대답 할 것입니다. 업데이트 : 이 튜토리얼은 tf 버전에서 작동하지 않습니다 . 1.1, API. 나는 높은 수준의 seq2seq API를 배우는 대신 새로운 공식 자습서를 확인하는 것이 좋습니다. 나는 또한 최근 루카스 카리저에 의해 오픈 소스 Tensor2Tensor 프로젝트를 언급하고 싶다: https://github.com/tensorflow/tensor2tensor. 그것은 전투 테스트 및 튜닝 모델 [Seq2Seq 및 변압기 포함]뿐만 아니라 기계 번역 및 기타 데이터 세트에 대한 입력 리더의 큰 라이브러리가 포함되어 있습니다.