Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Projeto] Sessão 3 - Variação da RNN

O problema de tradução entre idiomas é um exemplo clássico do tipo Muitos-para-Muitos não sincronizado (Many-to-Many).

A entrada é uma sequência de palavras (ou tokens) em francês:
["Voulez", "vous", "étudier", "avec", "moi", "?"] → 6 elementos

A saída é uma sequência de palavras em português:
["Você", "quer", "estudar", "comigo", "?"] → 5 elementos

Esse problema não se encaixa no Muitos-para-Muitos sincronizado, pois as saídas não são geradas em correspondência direta e imediata com cada entrada. A palavra "Voulez-vous" (2 tokens em francês) corresponde a "Você quer" (2 tokens em português), mas a ordem e o número de palavras podem variar entre os idiomas — como vemos no par acima, onde 6 tokens na entrada resultam em 5 tokens na saída.

A arquitetura usada para esse tipo de problema é o chamado Encoder-Decoder: a rede primeiro lê toda a sequência de entrada acumulando o contexto em um vetor de estado (fase de Encoding — que é um Muitos-para-Um), e só então gera a sequência de saída token a token a partir desse contexto (fase de Decoding — que é um Um-para-Muitos). O resultado é uma estrutura Muitos-para-Muitos, mas com a produção da saída desacoplada temporalmente da entrada.


1 resposta

Oi, Leandro! Como vai?

Obrigado por compartilhar suas reflexões sobre o projeto da Sessão 3, dedicada às variações da RNN. A sua análise sobre o problema de tradução entre idiomas ficou bem estruturada e demonstra uma compreensão sólida do tema.

Você identificou corretamente que esse é um caso clássico do tipo Muitos-para-Muitos não sincronizado. A entrada em francês possui 6 elementos (tokens como "Voulez", "vous", "étudier", entre outros), enquanto a saída em português resulta em 5 tokens ("Você", "quer", "estudar", "comigo", "?"). Essa diferença de quantidade entre entrada e saída já deixa claro por que as sequências não podem ser tratadas como sincronizadas, já que não há correspondência direta e imediata entre cada token da entrada e cada token da saída.

Sua explicação sobre a arquitetura Encoder-Decoder também foi muito precisa. Na fase de Encoding, toda a sequência de entrada é lida e o contexto é acumulado em um vetor de estado, caracterizando um modelo Muitos-para-Um. Na fase de Decoding, esse contexto é usado para gerar a sequência de saída token a token, no estilo Um-para-Muitos. O resultado final é justamente um Muitos-para-Muitos com a produção da saída desacoplada temporalmente da entrada, o que resolve o problema de variação no número de palavras entre os idiomas.

Continue assim, pois compreender essas variações de arquitetura faz toda a diferença na hora de escolher a abordagem mais adequada para cada problema. Conte com o apoio do Fórum na sua jornada.

Você já teve a oportunidade de observar como o mecanismo de Attention influencia o fluxo de informações entre o encoder e o decoder em exemplos práticos de tradução automática?

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!