Pular para o conteúdo principal
Translator
Esta página foi traduzida automaticamente pelo serviço de tradução automática do Microsoft Translator. Saiba Mais

Microsoft Tradutor blog

Tradução automática neural que permite inovações na paridade humana na nuvem

Em março de 2018 nós Anunciou (Hassan et al. 2018), um resultado inovador onde mostramos pela primeira vez um sistema de tradução automática que poderia funcionar tanto quanto tradutores humanos (em um cenário específico - tradução de notícias em chinês-inglês). Este foi um avanço emocionante na pesquisa de tradução automática, mas o sistema que construímos para este projeto foi um sistema de pesquisa complexo e pesado, incorporando várias técnicas de ponta. Embora tenhamos liberado a saída desse sistema em vários conjuntos de testes, o sistema em si não era adequado para implantação em uma API de nuvem de tradução automática em tempo real.

Hoje estamos animados para anunciar a disponibilidade na produção de nossa última geração de modelos de tradução automática neural. Esses modelos incorporam a maior parte da bondade do nosso sistema de pesquisa e agora estão disponíveis por padrão quando você usa a API do Microsoft Translator. Estes novos modelos estão hoje disponíveis em Chinês, Alemão, Francês, Hindi, Italiano, Espanhol, Japonês, Coreano e Russo, de e para Inglês. Mais línguas estão a chegar em breve.

Passando do Research Paper para a Cloud API

Ao longo do último ano, temos procurado formas de trazer grande parte da qualidade do nosso sistema de paridade humana para a Microsoft. Tradutor APIe, ao mesmo tempo, continuar a oferecer tradução em tempo real de baixo custo. Aqui estão alguns dos passos dessa viagem.

Formação de Professores-Alunos

Nosso primeiro passo foi mudar para uma estrutura "professor-aluno", onde treinamos um aluno leve em tempo real para imitar uma rede de professores pesados (Ba e Caruana 2014). Isto é conseguido através da formação do aluno não nos dados paralelos em que os sistemas MT são normalmente treinados, mas em traduções produzidas pelo professor (Kim e Rush 2016). Esta é uma tarefa mais simples do que aprender com dados brutos, e permite que um aluno mais superficial e mais simples acompanhe de perto o professor complexo. Como seria de esperar, as nossas tentativas iniciais ainda sofreram quedas de qualidade de professor para aluno (sem almoço gratuito!), mas mesmo assim ficámos em primeiro lugar no WNMT 2018 Shared Task on Efficient Decoding (Junczys-Dowmunt et al. 2018a). Alguns resultados particularmente emocionantes deste esforço foram que o Transformer (Vaswani et al. 2017) e suas modificações jogam bem com o treinamento do professor-aluno e são surpreendentemente eficientes durante a inferência na CPU.

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

Tradução em tempo real

A 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 se manifestariam também para os modelos de transformadores (ver Vaswani et al. 2017 para detalhes sobre este modelo). No entanto, rapidamente descobrimos que era esse o caso.

O estudante Transformer poderia usar um algoritmo de decodificação muito simplificado (pesquisa gananciosa) onde nós apenas escolhemos a única palavra melhor traduzida em cada etapa, em vez do método usual (beam-search), que envolve a busca pelo enorme espaço de possíveis traduções. Essa mudança teve um impacto mínimo na qualidade, mas levou a grandes melhorias na velocidade de tradução. Em contraste, um modelo de professor sofreria uma queda significativa na qualidade ao mudar da pesquisa em beam-search para a pesquisa em ganância.

Ao mesmo tempo, percebemos que ao invés de usar a última arquitetura neural (Transformer com autoatenção) no decodificador, o estudante poderia ser modificado para usar uma arquitetura drasticamente simplificada e mais rápida recorrente (RNN). Isto é importante porque enquanto o codificador Transformer pode ser computado sobre toda a frase fonte em paralelo, a frase alvo é gerada uma única palavra de cada vez, assim a velocidade do decodificador tem um grande impacto sobre a velocidade total da tradução. Comparado à autoatenção, o decodificador recorrente reduz a complexidade algorítmica de quadrática para linear no comprimento da sentença alvo. Especialmente no ambiente professor-aluno, não vimos nenhuma perda de qualidade devido a estas modificações, nem para resultados automáticos nem para avaliação humana. Várias melhorias adicionais, como a partilha de parâmetros, conduziram a novas reduções da complexidade e ao aumento da velocidade.

Outra vantagem da estrutura professor-aluno que estávamos muito entusiasmados 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 estudante não mutável. Nos casos em que vimos problemas a este respeito, ligeiros aumentos na capacidade do modelo estudantil fechariam novamente a lacuna.

Dupla Aprendizagem

A visão chave por detrás da aprendizagem dual (He et al. 2016) é a "tradução de ida e volta" que as pessoas às vezes usam para verificar a qualidade da tradução. Suponha que estamos a usar um tradutor online para passar do inglês para o italiano. Se não lemos italiano, como sabemos se fez um bom trabalho? 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 recebemos de volta se afastou muito do original, é provável que uma das traduções tenha saído dos trilhos.

A aprendizagem dupla 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 marcar, validar e treinar o outro sistema.

A aprendizagem dual foi um dos principais contribuintes para o resultado da nossa investigação sobre a paridade humana. Ao passarmos do sistema de pesquisa para a nossa receita de produção, generalizamos esta abordagem de forma ampla. Não só co-treinamos pares de sistemas no output um do outro, como 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 uns dos outros, idealmente criados por um tradutor humano. Ao que parece, estes dados paralelos estão frequentemente cheios de traduções imprecisas. Por vezes, os documentos não são verdadeiramente paralelos, mas apenas paráfrases soltas uns dos outros. Os tradutores humanos podem optar por deixar de fora algum material original ou inserir informações adicionais. Os dados podem conter erros tipográficos, erros ortográficos, erros gramaticais. Às vezes, nossos algoritmos de data mining são enganados por dados semelhantes, mas não paralelos, ou mesmo por frases no idioma errado. Pior de tudo, muitas das páginas web que vemos são spam, ou podem, de facto, ser traduções automáticas em vez de traduções humanas. Os sistemas neurais são muito sensíveis a este tipo de imprecisão nos dados. Descobrimos que a construção de modelos neurais para identificar automaticamente e se livrar dessas imprecisões deu fortes melhorias na qualidade dos nossos sistemas. A nossa abordagem à filtragem de dados resultou em primeiro lugar na Referência de filtragem de corpo paralelo WMT18 (Junczys-Dowmunt 2018a) e ajudou a construir um dos mais fortes sistemas de tradução Inglês-Alemão no WMT18 Tarefa de tradução de notícias (Junczys-Dowmunt 2018b). Utilizámos versões melhoradas desta abordagem nos sistemas de produção que lançámos hoje.

Representações de palavras facturadas

Ao mover uma tecnologia de pesquisa para a produção, vários desafios do mundo real surgem. Obter números, datas, horas, capitalização, espaçamento, etc. é muito mais importante na produção do que em um sistema de pesquisa.

Considerar o desafio da capitalização. Se estamos a traduzir a frase "VEJA AQUI CAT VIDEOS". Sabemos traduzir "gato". Gostaríamos de traduzir "CAT" da mesma forma. Mas agora considere "Veja o futebol americano aqui". Não queremos confundir a palavra "nós" com a sigla "US" neste 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 múltiplos embeddings, conhecidos como "fatores". Neste caso, a incorporação primária seria a mesma para "CAT" e "cat", mas um fator separado representaria a capitalização, mostrando que era all-caps em uma instância e lowercase na outra. Fatores semelhantes são usados no lado da fonte e no lado do alvo.

Usamos fatores semelhantes para lidar com fragmentos de palavras e espaçamento entre palavras (uma questão complexa em idiomas não espaçados ou semi-espaçados, como chinês, coreano, japonês ou tailandês).

Os fatores também melhoraram drasticamente a tradução de números, o que é crítico em muitos cenários. A tradução de números é principalmente uma transformação algorítmica. Por exemplo, 1.234.000 podem ser escritos 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 torna difícil para o aprendizado de máquina descobrir o algoritmo. Em vez disso, alimentamos cada dígito de um número separadamente, com fatores que marcam 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 com modelos

Quando estamos a treinar um sistema único para um único objectivo, como fizemos para o projecto de investigação sobre a paridade humana, esperamos lançar grandes quantidades de hardware em modelos que levam semanas a treinar. Ao treinar modelos de produção para mais de 20 pares de línguas, esta abordagem torna-se insustentável. Não só precisamos de tempos de resposta razoáveis, como também precisamos de moderar as nossas exigências de hardware. Para este projeto, fizemos uma série de melhorias de desempenho para Marian NMT (Junczys-Dowmunt et al. 2018b).

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

Devido à sua natureza autocontida, é bastante fácil otimizar o Marian para tarefas específicas de NMT, o que resulta em um dos mais eficientes toolkits de NMT disponíveis. Dê uma olhada no referências. Se você está interessado em pesquisa e desenvolvimento em Neural MT, por favor, participe e contribua para a comunidade em Github.

Nossas melhorias em relação ao treinamento de precisão mista e decodificação, bem como para o treinamento de modelos grandes, serão em breve disponibilizadas no repositório público do Github.

Estamos entusiasmados com o futuro da tradução automática neural. Continuaremos a implementar a arquitectura do novo modelo nas restantes linguagens e Tradutor personalizado ao longo deste ano. Os nossos utilizadores obterão automaticamente as traduções de qualidade significativamente melhor através do Tradutor APIo nosso Aplicativo do tradutorMicrosoft Office e o navegador Edge. Esperamos que as novas melhorias ajudem a sua vida pessoal e profissional e esperamos ansiosamente pelo seu feedback.

 

Referências

  • Jimmy Ba e Rich Caruana. 2014. As redes profundas precisam mesmo de ser profundas? Avanços em Sistemas de Processamento de Informação Neural 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 de Chinês para Inglês. http://arxiv.org/abs/1803.05567
  • Ele, Di e Xia, Yingce e Qin, Tao e Wang, Liwei e Yu, Nenghai e Liu, Tie-Yan e Ma, Wei-Ying. 2016. Aprendizado Duplo para Tradução Automática. Avanços em Sistemas de Processamento de Informação Neural 29. Páginas 820-828. https://papers.nips.cc/paper/6469-dual-learning-for-machine-translation
  • Marcin Junczys-Dowmunt. 2018a. Filtragem Cruzada Condicional Dupla de Antropia de Corpora Paralelo Barulhento. Actas da Terceira Conferência sobre Tradução Automática: Papéis de Tarefas Partilhadas. Bélgica, páginas 888-895. https://aclweb.org/anthology/papers/W/W18/W18-6478/
  • Marcin Junczys-Dowmunt. 2018b. Submissão da Microsoft ao WMT2018 News Translation Task: Como aprendi a parar de me preocupar e a amar os dados. Actas da Terceira Conferência sobre Tradução Automática: Papéis de Tarefas Partilhadas. 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 de Tradução e Geração de Máquinas Neuronais. 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 do ACL 2018, Demonstrações do Sistema. Melbourne, Austrália, páginas 116-121. https://www.aclweb.org/anthology/P18-4020/
  • Yoon Kim e Alexander M. Rush. 2016. Destilação do conhecimento ao nível da sequência. In Proceedings of the 2016 Conference on Empirical Methods in Natural Language Processing, EMNLP 2016, Austin, Texas, EUA, 1-4 de novembro de 2016, páginas 1317-1327. https://aclweb.org/anthology/papers/D/D16/D16-1139/
  • Philipp Koehn, Hieu Hoang. 2007. Modelos de Tradução Factorizada. Actas da Conferência Conjunta de 2007 sobre Métodos Empíricos no Processamento da Linguagem Natural e Aprendizagem Computacional da Linguagem Natural (EMNLP-CoNLL). Praga, República Checa, páginas 868-876. https://www.aclweb.org/anthology/D07-1091/
  • Rico Sennrich, Barry Haddow. 2016. Os recursos de entrada lingüística melhoram a tradução automática neural. Actas 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. A atenção é tudo o que precisas. Avanços em Sistemas de Processamento de Informação Neural 30. Páginas 5998-6008. https://papers.nips.cc/paper/7181-attention-is-all-you-need