Redes neurais recorrentes
Dentro do campo de aprendizagem profunda ou aprendizado profundo, existem muitas arquiteturas e morfologias de redes neurais diferentes. Cada um é especializado em um tipo específico de tarefa.
Por exemplo, redes neurais convolucionais têm a característica de aceitar informações codificadas em tensores quadridimensionais, como imagens, portanto, quando tivermos que trabalhar com dados de imagem iremos utilizá-los.
Para trabalhar com texto e, em geral, com dados de sequência, as redes neurais mais ideais são aquelas conhecidas como redes neurais recorrentes.
No artigo de hoje daremos uma introdução às redes recorrentes, explicaremos como funcionam, os tipos que existem e quais aplicações possuem atualmente.
O que são redes neurais recorrentes?
Redes neurais recorrentes (RNN) são um tipo de rede neural artificial especializada no processamento de dados sequenciais ou séries temporais cuja arquitetura permite à rede obter memória artificial.
Esse tipo de rede artificial ajuda a fazer previsões do que acontecerá no futuro com base em dados históricos. Por exemplo, podemos usar redes neurais recorrentes para prever o volume de vendas de um determinado produto. Isso ajuda a prever o estoque necessário e a economizar dinheiro.
Eles também são muito úteis para analisar textos e gerar novos a partir de textos existentes. Há um filme que foi rodado há alguns anos cujo roteiro foi gerado por inteligência artificial que utilizou esse tipo de redes neurais.
A arquitetura desse tipo de modelo permite que a inteligência artificial lembre e esqueça informações. Dessa forma, a IA é capaz de lembrar o texto processado dezenas de frases atrás e associar conceitos às novas frases que analisa.
O neurônio recorrente
Vimos que esses tipos de redes possuem memória. Como eles conseguem isso?
Vamos começar com o básico. O que é um neurônio recorrente?
Normalmente, quando se fala em redes neurais, as funções de ativação se movem apenas em uma direção: para frente.
Um neurônio recorrente transmite informações para frente, mas também tem a característica de enviar informações para trás. Portanto, a cada passo, o neurônio recorrente recebe dados dos neurônios anteriores, mas também recebe informações dele mesmo na etapa anterior.
Para fins práticos, este tipo de conexões cíclicas não são eficientes, portanto é estabelecida uma implantação para gerar uma arquitetura livre de ciclos, muito mais adequada para a aplicação de ferramentas matemáticas de otimização.
Tipos de redes neurais recorrentes
Existem diferentes variações de redes neurais recorrentes dependendo do formato dos dados de entrada e saída que queremos obter.
Vetor para sequência ou um para muitos
Este tipo de arquitetura permite a entrada de um dado e a saída de muitos dados em sequência. É daí que vem o nome inglês um para muitos.
Um exemplo seria um modelo que pudesse nos descrever com base em uma imagem. Portanto, entraria na rede um único dado, no caso a imagem, e obteríamos uma sequência de dados, o texto, que seria a descrição da imagem.
Sequência para vetor ou muitos para um
Este tipo de arquitetura é exatamente o oposto da anterior. Damos uma sequência como valor de entrada e obtemos dados únicos.
Por exemplo, um modelo que recebeu a descrição de uma imagem e criou essa imagem seria uma rede neural recorrente muitos para um.
Sequência para sequência ou muitos para muitos
Finalmente, temos redes recorrentes muitos-para-muitos. Esta arquitetura recebe dados de entrada sequenciais e cria dados de saída sequenciais. Um exemplo muito claro são os tradutores inteligentes.
Eles recebem um texto, por exemplo, em espanhol e geram um novo texto, por exemplo, em inglês. Eles também são usados para gerar resumos de texto ou para converter texto em áudio ou áudio em texto.
Células de memória ou células de memória
Como vimos nos esquemas anteriores, a informação flui de um neurônio para outro durante um longo período de tempo. Portanto, os dados de entrada são uma função dos dados de entrada em momentos anteriores.
Todas as novas informações são adicionadas ao fluxo de dados, fato que permite que este tipo de redes tenham memória. Resumindo, RNNs possuem informações de tempos anteriores a cada timestep, ou seja, conseguem lembrar o que foi visto anteriormente na sequência.
Isso permite, por exemplo, que quando um texto é introduzido na rede neural recorrente, ele consiga relacionar conceitos distantes na sequência.
Problema de memória de curto prazo ( memória de curto prazo )
A memória deste tipo de redes é limitada, pelo que a transmissão eficaz de informação entre sequências muito distantes é difícil.
Isso se deve ao que é conhecido como desvanecimento gradiente ou gradiente desaparecendo .
Esse problema acontece quando, durante o treinamento da rede neural recorrente, os pesos vão ficando cada vez menores, fazendo com que o gradiente também diminua e os pesos da rede mal sejam atualizados, perdendo a capacidade de aprendizado do modelo.
Redes neurais recorrentes LSTM e GRU
Para resolver o problema da memória de curto prazo, o que é conhecido como portas ou portões em inglês. Essas portas são basicamente operações matemáticas como adição ou multiplicação que atuam como mecanismos para armazenar informações relevantes e eliminar informações que não são relevantes para o aprendizado.
Os dois tipos mais importantes de redes com esses mecanismos que permitem memória de longo prazo são LSTMs ( Memória de longo e curto prazo ) e o GRU ( Unidades recorrentes fechadas ).
LSTM ( Memória de longo e curto prazo )
LSTMs são um tipo de rede neural recorrente onde cada célula de memória ou célula de memória Possui um conjunto de operações muito específicas que permitem controlar o fluxo de informações. Estas operações, chamadas portas, permitem-nos decidir se determinada informação é lembrada ou esquecida.
Dentro da célula de memória novas informações são adicionadas àquelas provenientes de sequências anteriores, ou seja, de etapas de tempo anteriores. Como veremos, novas informações relevantes são adicionadas ao fluxo graças a uma operação de adição.
Vejamos esses mecanismos com mais detalhes:
- Portão do esquecimento ou esqueça o portão : Este portão decide quais informações permanecem e quais são esquecidas. Isto é conseguido com a função sigmóide que tem um domínio de 0 a 1. Quanto mais próximo de 0, menos importante é e quanto mais próximo de 1, mais importante é.
- porta de entrada ou porta de entrada : A função desta porta é atualizar o estado oculto da célula. Para esta tarefa, o novo entrada ele é adicionado ao estado oculto de um momento anterior. A quantidade de informação retida é controlada com a função sigmóide, transformando os valores entre 0 e 1. Zero significa que não é importante e pode, portanto, ser eliminado. Unidade significa que é importante e que o conhecimento deve permanecer.
- porta de saída ou portão de saída : Esta porta é responsável por decidir qual será o estado oculto da célula no intervalo de tempo seguindo. Para fazer isso, utiliza as funções sigmóide e tanh.
- função tanh : esta função que vemos repetidamente dentro das células de memória tem a função de comprimir os valores entre 1 e -1 para evitar que esses valores aumentem muito ou diminuam muito e assim evitar problemas de gradiente durante o treinamento que o tornariam difícil aprender a grade.
GRU ( Unidades recorrentes fechadas )
GRUs são neurônios recorrentes com uma estrutura um pouco diferente dos LSTMs. Eles são mais recentes e eliminam algumas das operações dos LSTMs.
GRUs não usam o estado da célula ( estado da célula ), eles usam apenas o estado oculto para a transferência de informações. Além disso, eles têm 2 portas ou portões diferenciado: a porta de atualização ou portão de atualização e a porta de reinicialização ou redefinir portão .
- Porta de atualização : Este tipo de porta GRU é semelhante à função das portas de esquecimento e entrada dos LSTMs. O objetivo é manter as informações relevantes e eliminar dados que não são importantes.
- redefinir porta : Este portão controla a quantidade de informações que são esquecidas durante o aprendizado da rede.
Como podemos ver, os GRUs têm menos operações e, portanto, são mais rápidos de treinar do que os LSTMs.
Para fins práticos, ambas as morfologias de rede funcionam bem. Qual será a melhor dependerá do tipo de problema e, portanto, o melhor é testar as duas arquiteturas, tanto as GRUs quanto as LSTMs, para determinar qual delas obtém melhores resultados.
Aplicações do redes neurais recorrentes
Existem vários exemplos de usos e aplicações deste tipo de redes neurais. A seguir mostramos alguns para que você tenha uma ideia do poder que as redes neurais recorrentes têm.
Tradutores inteligentes
Tradutores treinados com inteligência artificial utilizam esse tipo de redes neurais artificiais para gerar textos traduzidos.
Eles também podem ser usados para traduções em tempo real, onde os dados de entrada são a voz do locutor e os dados de saída são a fala artificial com o texto traduzido.
Este tipo de morfologia de rede neural melhorou muito a qualidade dos textos traduzidos, uma vez que anteriormente eram utilizadas funções baseadas em memória.
Bots de bate-papo inteligentes
RNNs também são usados para gerar bots automatizados que são capazes de responder perguntas que clientes em potencial possam ter. Em muitas páginas web vemos um chat com o qual podemos interagir e conversar para tirar dúvidas sobre o produto.
Muitos desses chats funcionam com inteligência artificial treinada especificamente para esse tipo de função. Esses modelos são normalmente LSTMs ou GRUs.
Previsão de vendas
Além do texto, também podemos usar outros tipos de informações sequenciais, como séries temporais. Muitas empresas usam modelos de aprendizado de máquina para realizar previsões de vendas e assim economizar em estoque.
Portanto, os RNNs também são usados para fazer previsões de preços com base em dados históricos de vendas anteriores.
Assistentes virtuais
O último exemplo são os assistentes virtuais. Se tivermos dispositivos Apple saberemos que podemos solicitar ao Siri ações a serem executadas. O mesmo se tivermos Alexa, da Amazon.
Esses assistentes são capazes de interpretar comandos em diversos idiomas e realizar as ações solicitadas.
Para compreender a informação que é transmitida, utilizam redes neurais RNN.