Pular para o conteúdo principal
Tradutor

Blog do Microsoft Translator

Tradução automática neural possibilitando inovações de paridade humana na nuvem

Em março de 2018, nós anunciado (Hassan et al. 2018) um resultado revolucionário em que mostramos pela primeira vez um sistema de tradução automática que poderia ter um desempenho tão bom quanto o de tradutores humanos (em um cenário específico - tradução de notícias chinês-inglês). Esse foi um avanço empolgante na pesquisa de tradução automática, mas o sistema que criamos para esse projeto era um sistema de pesquisa complexo e pesado, que incorporava várias técnicas de ponta. Embora tenhamos liberado o resultado desse sistema em vários conjuntos de testes, o sistema em si não era adequado para ser implantado em uma API de nuvem de tradução automática em tempo real.

Hoje temos o prazer de anunciar a disponibilidade em produção de nossa última geração de modelos neurais de tradução automática. Esses modelos incorporam a maior parte das vantagens do nosso sistema de pesquisa e agora estão disponíveis por padrão quando você usa a API do Microsoft Translator. Esses novos modelos estão disponíveis hoje em chinês, alemão, francês, hindi, italiano, espanhol, japonês, coreano e russo, de e para o inglês. Mais idiomas serão disponibilizados em breve.

Do artigo de pesquisa à API na nuvem

No último ano, procuramos maneiras de trazer grande parte da qualidade de nosso sistema de paridade humana para o Microsoft API do tradutore, ao mesmo tempo, continuar a oferecer tradução em tempo real de baixo custo. Aqui estão algumas das etapas dessa jornada.

Treinamento entre professor e aluno

Nossa primeira etapa foi mudar para uma estrutura de "professor-aluno", em que treinamos um aluno leve em tempo real para imitar uma rede de professores pesada (Ba e Caruana 2014). Isso é feito treinando o aluno não nos dados paralelos com os quais os sistemas de MT geralmente são treinados, mas nas traduções produzidas pelo professor (Kim e Rush 2016). Essa é uma tarefa mais simples do que aprender com dados brutos e permite que um aluno mais raso e mais simples acompanhe de perto o professor complexo. Como era de se esperar, nossas tentativas iniciais ainda sofreram quedas de qualidade de professor para aluno (não há almoço grátis!), mas mesmo assim ficamos em primeiro lugar na Tarefa Compartilhada WNMT 2018 sobre Decodificação Eficiente (Junczys-Dowmunt et al. 2018a). Alguns resultados particularmente interessantes desse esforço foram que o Transformer (Vaswani et al. 2017) e suas modificações funcionam bem com o treinamento de professor-aluno e são surpreendentemente eficientes durante a inferência na CPU.

Aprendendo com esses resultados iniciais e depois de muita iteração, descobrimos uma receita que permite que nosso aluno simples tenha quase a mesma qualidade que o professor complexo (afinal, às vezes há um almoço grátis?). Agora estávamos livres para criar modelos de professores grandes e complexos para maximizar a qualidade, sem nos preocuparmos com restrições em tempo real (demais).

Tradução em tempo real

Nossa decisão de mudar para uma estrutura professor-aluno foi motivada pelo excelente trabalho de Kim e Rush (2016) para modelos simples baseados em RNN. Naquele momento, não estava claro se os benefícios relatados também se manifestariam para os modelos Transformer (consulte Vaswani et al. 2017 para obter detalhes sobre esse modelo). No entanto, descobrimos rapidamente que esse era de fato o caso.

O aluno do Transformer pôde usar um algoritmo de decodificação bastante simplificado (busca gulosa), em que apenas escolhemos a única palavra melhor traduzida em cada etapa, em vez do método usual (busca por feixe), que envolve a busca no enorme espaço de possíveis traduções. Essa alteração teve um impacto mínimo na qualidade, mas levou a grandes melhorias na velocidade de tradução. Por outro lado, um modelo de professor sofreria uma queda significativa na qualidade ao mudar de beam-search para greedy-search.

Ao mesmo tempo, percebemos que, em vez de usar a arquitetura neural mais recente (Transformer com autoatenção) no decodificador, o aluno poderia ser modificado para usar uma arquitetura recorrente (RNN) drasticamente simplificada e mais rápida. Isso é importante porque, embora o codificador Transformer possa ser computado em toda a sentença de origem em paralelo, a sentença de destino é gerada uma única palavra por vez, de modo que a velocidade do decodificador tem um grande impacto na velocidade geral da tradução. Em comparação com a autoatenção, o decodificador recorrente reduz a complexidade algorítmica de quadrática para linear no comprimento da frase-alvo. Especialmente na configuração professor-aluno, não observamos nenhuma perda de qualidade devido a essas modificações, nem nos resultados da avaliação automática nem na humana. Vários aprimoramentos adicionais, como o compartilhamento de parâmetros, levaram a mais reduções na complexidade e ao aumento da velocidade.

Outra vantagem da estrutura professor-aluno que ficamos muito animados em ver é que as melhorias de qualidade ao longo do tempo dos professores em constante crescimento e mudança são facilmente transferidas para uma arquitetura de alunos que não muda. Nos casos em que vimos problemas nesse sentido, pequenos aumentos na capacidade do modelo do aluno eliminariam a lacuna novamente.

Aprendizado duplo

O principal insight por trás da aprendizagem dupla (He et al. 2016) é a verificação de "tradução de ida e volta" que as pessoas às vezes usam para verificar a qualidade da tradução. Suponha que estejamos usando um tradutor on-line para ir do inglês para o italiano. Se não soubermos ler italiano, como saberemos se o trabalho foi bem feito? Antes de clicar em enviar Em um e-mail, podemos optar por verificar a qualidade traduzindo o italiano de volta para o inglês (talvez em um site diferente). Se o inglês que recebermos de volta estiver muito distante do original, é provável que uma das traduções tenha saído dos trilhos.

O aprendizado duplo usa a mesma abordagem para treinar dois sistemas (por exemplo, inglês->italiano e italiano->inglês) em paralelo, usando a tradução de ida e volta de um sistema para pontuar, validar e treinar o outro sistema.

O aprendizado duplo foi um dos principais contribuintes para o resultado de nossa pesquisa de paridade humana. Ao passar do sistema de pesquisa para nossa receita de produção, generalizamos amplamente essa abordagem. Não apenas treinamos pares de sistemas em conjunto com os resultados uns dos outros, mas também usamos o mesmo critério para filtrar nossos dados paralelos.

Limpeza de dados imprecisos

Os sistemas de tradução automática são treinados em "dados paralelos", ou seja, pares de documentos que são traduções um do outro, idealmente criados por um tradutor humano. Como se vê, esses dados paralelos geralmente estão repletos de traduções imprecisas. Às vezes, os documentos não são realmente paralelos, mas apenas paráfrases soltas um do outro. Os tradutores humanos podem optar por deixar de fora algum material de origem ou inserir informações adicionais. Os dados podem conter erros de digitação, erros de ortografia e erros gramaticais. Às vezes, nossos algoritmos de mineração de dados são enganados por dados semelhantes, mas não paralelos, ou até mesmo por frases no idioma errado. O pior de tudo é que muitas das páginas da Web que vemos são spam ou podem, de fato, ser traduções automáticas em vez de traduções humanas. Os sistemas neurais são muito sensíveis a esse tipo de imprecisão nos dados. Descobrimos que a criação de modelos neurais para identificar e eliminar automaticamente essas imprecisões proporcionou grandes melhorias na qualidade de nossos sistemas. Nossa abordagem de filtragem de dados resultou no primeiro lugar no Referência de filtragem de corpus paralelo WMT18 (Junczys-Dowmunt 2018a) e ajudou a criar um dos mais sólidos sistemas de tradução inglês-alemão da indústria WMT18 Tarefa de tradução de notícias (Junczys-Dowmunt 2018b). Usamos versões aprimoradas dessa abordagem nos sistemas de produção que lançamos hoje.

Representações de palavras fatoradas

Ao passar uma tecnologia de pesquisa para a produção, surgem vários desafios do mundo real. Acertar números, datas, horários, letras maiúsculas, espaçamento etc. é muito mais importante na produção do que em um sistema de pesquisa.

Considere o desafio da capitalização. Se estivermos traduzindo a frase "WATCH CAT VIDEOS HERE". Sabemos como traduzir "cat". Gostaríamos de traduzir "CAT" da mesma forma. Mas agora considere "Watch US soccer here". Não queremos confundir a palavra "us" e o acrônimo "US" nesse contexto.

Para lidar com isso, usamos uma abordagem conhecida como tradução automática fatorada (Koehn e Hoang 2007Sennrich e Haddow 2016) que funciona da seguinte forma. Em vez de uma única representação numérica ("embedding") para "cat" ou "CAT", usamos vários embeddings, conhecidos como "fatores". Nesse caso, o embedding primário seria o mesmo para "CAT" e "cat", mas um fator separado representaria a capitalização, mostrando que era tudo maiúsculo em uma instância, mas minúsculo na outra. Fatores semelhantes são usados no lado de origem e no lado de destino.

Usamos fatores semelhantes para lidar com fragmentos de palavras e espaçamento entre palavras (um problema complexo em idiomas sem espaçamento ou semiespaçamento, como chinês, coreano, japonês ou tailandês).

Os fatores também melhoraram drasticamente a tradução de números, o que é fundamental em muitos cenários. A tradução de números é principalmente uma transformação algorítmica. Por exemplo, 1.234.000 pode ser escrito como 12.34.000 em hindi, 1.234.000 em alemão e 123.4万 em chinês. Tradicionalmente, os números são representados como palavras, como grupos de caracteres de comprimento variável. Isso dificulta a descoberta do algoritmo pelo aprendizado de máquina. Em vez disso, alimentamos cada dígito de um número separadamente, com fatores marcando o início e o fim. Esse truque simples removeu de forma robusta e confiável quase todos os erros de tradução de números.

Treinamento mais rápido do modelo

Quando estamos treinando um único sistema para um único objetivo, como fizemos para o projeto de pesquisa de paridade humana, esperamos lançar um grande número de hardware em modelos que levam semanas para serem treinados. Ao treinar modelos de produção para mais de 20 pares de idiomas, essa abordagem se torna insustentável. Não só precisamos de tempos de resposta razoáveis, mas também precisamos moderar nossas demandas de hardware. Para esse projeto, fizemos várias melhorias de desempenho para Marian NMT (Junczys-Dowmunt et al. 2018b).

O Marian NMT é o kit de ferramentas Neural MT de código aberto no qual o Microsoft Translator se baseia. O Marian é um kit de ferramentas de tradução automática neural em C++ puro e, como resultado, é extremamente eficiente, não exigindo GPUs no tempo de execução e muito eficiente no tempo de treinamento

Devido à sua natureza autônoma, é muito fácil otimizar o Marian para tarefas específicas de NMT, o que resulta em um dos kits de ferramentas de NMT mais eficientes disponíveis. Dê uma olhada no referências. Se você estiver interessado em pesquisa e desenvolvimento de MTs neurais, participe e contribua com o comunidade no Github.

Nossos aprimoramentos relativos ao treinamento e à decodificação de precisão mista, bem como ao treinamento de modelos grandes, serão disponibilizados em breve no repositório público do Github.

Estamos entusiasmados com o futuro da tradução automática neural. Continuaremos a implantar a nova arquitetura de modelo nos idiomas restantes e Tradutor personalizado ao longo deste ano. Nossos usuários receberão automaticamente as traduções de qualidade significativamente melhor por meio do API do tradutor, nosso Aplicativo tradutorMicrosoft Office e o navegador Edge. Esperamos que os novos aprimoramentos ajudem sua vida pessoal e profissional e aguardamos seus comentários.

 

Referências

  • Jimmy Ba e Rich Caruana. 2014. As redes profundas realmente precisam ser profundas? Avanços em sistemas de processamento de informações neurais 27. Páginas 2654-2662. https://papers.nips.cc/paper/5484-do-deep-nets-really-need-to-be-deep
  • Hany Hassan, Anthony Aue, Chang Chen, Vishal Chowdhary, Jonathan Clark, Christian Federmann, Xuedong Huang, Marcin Junczys-Dowmunt, William Lewis, Mu Li, Shujie Liu, Tie-Yan Liu, Renqian Luo, Arul Menezes, Tao Qin, Frank Seide, Xu Tan, Fei Tian, Lijun Wu, Shuangzhi Wu, Yingce Xia, Dongdong Zhang, Zhirui Zhang, Ming Zhou. 2018. Alcançando a paridade humana na tradução automática de notícias do chinês para o inglês. http://arxiv.org/abs/1803.05567
  • He, Di e Xia, Yingce e Qin, Tao e Wang, Liwei e Yu, Nenghai e Liu, Tie-Yan e Ma, Wei-Ying. 2016. Dual Learning for Machine Translation (Aprendizagem dupla para tradução automática). Avanços em Sistemas de Processamento de Informações Neurais 29. Páginas 820-828. https://papers.nips.cc/paper/6469-dual-learning-for-machine-translation
  • Marcin Junczys-Dowmunt. 2018a. Dual Conditional Cross-Entropy Filtering of Noisy Parallel Corpora (Filtragem de entropia cruzada condicional dupla de corpora paralelos ruidosos). Anais da Terceira Conferência sobre Tradução Automática: Shared Task Papers. Bélgica, páginas 888-895. https://aclweb.org/anthology/papers/W/W18/W18-6478/
  • Marcin Junczys-Dowmunt. 2018b. O envio da Microsoft para a tarefa de tradução de notícias do WMT2018: How I Learned to Stop Worrying and Love the Data (Como aprendi a parar de me preocupar e amar os dados). Anais da Terceira Conferência sobre Tradução Automática: Documentos de tarefas compartilhadas. Bélgica, páginas 425-430. https://www.aclweb.org/anthology/W18-6415/
  • Marcin Junczys-Dowmunt, Kenneth Heafield, Hieu Hoang, Roman Grundkiewicz, Anthony Aue. 2018a. Marian: Tradução automática neural de alta qualidade e econômica em C++. Anais do 2º Workshop sobre Tradução e Geração Automática Neural. Melbourne, Austrália, páginas 129-135. https://aclweb.org/anthology/papers/W/W18/W18-2716/
  • Marcin Junczys-Dowmunt, Roman Grundkiewicz, Tomasz Dwojak, Hieu Hoang, Kenneth Heafield, Tom Neckermann, Frank Seide, Ulrich Germann, Alham Fikri Aji, Nikolay Bogoychev, André F. T. Martins, Alexandra Birch. 2018b. Marian: Tradução automática neural rápida em C++. Anais da ACL 2018, Demonstrações de sistemas. Melbourne, Austrália, páginas 116-121. https://www.aclweb.org/anthology/P18-4020/
  • Yoon Kim e Alexander M. Rush. 2016. Destilação de conhecimento em nível de sequência. Em Proceedings of the 2016 Conference on Empirical Methods in Natural Language Processing, EMNLP 2016, Austin, Texas, EUA, 1 a 4 de novembro de 2016, páginas 1317-1327. https://aclweb.org/anthology/papers/D/D16/D16-1139/
  • Philipp Koehn, Hieu Hoang. 2007. Factored Translation Models (Modelos de tradução fatorados). Anais da Conferência Conjunta de 2007 sobre Métodos Empíricos em Processamento de Linguagem Natural e Aprendizagem Computacional de Linguagem Natural (EMNLP-CoNLL). Praga, República Tcheca, páginas 868-876. https://www.aclweb.org/anthology/D07-1091/
  • Rico Sennrich, Barry Haddow. 2016. Recursos de entrada linguística melhoram a tradução automática neural. Anais da Primeira Conferência sobre Tradução Automática: Volume 1, Research Papers. Berlim, Alemanha, páginas 83-91. https://www.aclweb.org/anthology/W16-2209/
  • Vaswani, Ashish e Shazeer, Noam e Parmar, Niki e Uszkoreit, Jakob e Jones, Llion e Gomez, Aidan N e Kaiser, Lukasz e Polosukhin, Illia. 2017. Atenção é tudo o que você precisa. Avanços em Sistemas de Processamento de Informações Neurais 30. Páginas 5998-6008. https://papers.nips.cc/paper/7181-attention-is-all-you-need