Rede neural recorrente - Recurrent neural network

Uma rede neural recorrente ( RNN ) é uma classe de redes neurais artificiais onde as conexões entre os nós formam um gráfico direcionado ao longo de uma sequência temporal. Isso permite que ele exiba um comportamento dinâmico temporal. Derivado de redes neurais feedforward , os RNNs podem usar seu estado interno (memória) para processar sequências de entradas de comprimento variável. Isso os torna aplicáveis ​​a tarefas como reconhecimento de manuscrito conectado não segmentado ou reconhecimento de fala . As redes neurais recorrentes são teoricamente Turing completas e podem executar programas arbitrários para processar sequências arbitrárias de entradas.

O termo “rede neural recorrente” é usado indiscriminadamente para se referir a duas classes amplas de redes com uma estrutura geral semelhante, onde uma é impulso finito e a outra é impulso infinito . Ambas as classes de redes exibem comportamento dinâmico temporal . Uma rede recorrente de impulso finito é um gráfico acíclico direcionado que pode ser desenrolado e substituído por uma rede neural estritamente feedforward, enquanto uma rede recorrente de impulso infinito é um gráfico cíclico direcionado que não pode ser desenrolado.

As redes recorrentes de impulso finito e impulso infinito podem ter estados armazenados adicionais, e o armazenamento pode estar sob controle direto da rede neural. O armazenamento também pode ser substituído por outra rede ou gráfico se isso incorporar atrasos ou tiver loops de feedback. Esses estados controlados são chamados de estado fechado ou memória fechada e são parte de redes de memória de curto prazo longas (LSTMs) e unidades recorrentes fechadas . Isso também é chamado de Rede Neural de Feedback (FNN).

Em bibliotecas típicas, como o PyTorch, a compilação Just-in-time desempenha um papel importante na implementação eficiente de redes neurais recorrentes.

História

Redes neurais recorrentes foram baseadas no trabalho de David Rumelhart em 1986. Redes de Hopfield - um tipo especial de RNN - foram (re) descobertas por John Hopfield em 1982. Em 1993, um sistema compressor de história neural resolveu um “Aprendizado Muito Profundo” tarefa que exigiu mais de 1000 camadas subsequentes em um RNN desdobrada no tempo.

LSTM

As redes de memória longa de curto prazo (LSTM) foram inventadas por Hochreiter e Schmidhuber em 1997 e estabeleceram registros de precisão em vários domínios de aplicativos.

Por volta de 2007, a LSTM começou a revolucionar o reconhecimento de fala , superando os modelos tradicionais em certas aplicações de fala. Em 2009, uma rede LSTM treinada pela Connectionist Temporal Classification (CTC) foi a primeira RNN a ganhar concursos de reconhecimento de padrões ao vencer várias competições de reconhecimento de escrita manual conectada . Em 2014, a empresa chinesa Baidu usou RNNs treinados pela CTC para quebrar o benchmark do conjunto de dados de reconhecimento de fala 2S09 Switchboard Hub5'00 sem usar nenhum método tradicional de processamento de fala.

O LSTM também melhorou o reconhecimento de voz de grande vocabulário e a síntese de texto para fala e foi usado no Google Android . Em 2015, o reconhecimento de voz do Google supostamente experimentou um salto dramático de desempenho de 49% por meio do LSTM treinado pelo CTC.

A LSTM bateu recordes em tradução automática , modelagem de linguagem e processamento de idioma multilíngue aprimorados . O LSTM combinado com redes neurais convolucionais (CNNs) melhorou a legenda automática de imagens .

Arquiteturas

RNNs vêm em muitas variantes.

Totalmente recorrente

Rede neural recorrente básica desdobrada

Redes neurais totalmente recorrentes (FRNN) conectam as saídas de todos os neurônios às entradas de todos os neurônios. Esta é a topologia de rede neural mais geral porque todas as outras topologias podem ser representadas definindo alguns pesos de conexão como zero para simular a falta de conexões entre esses neurônios. A ilustração à direita pode ser enganosa para muitos porque as topologias práticas de rede neural são frequentemente organizadas em "camadas" e o desenho dá essa aparência. No entanto, o que parecem ser camadas são, na verdade, etapas diferentes no tempo da mesma rede neural totalmente recorrente. O item mais à esquerda na ilustração mostra as conexões recorrentes como o arco rotulado como 'v'. É "desdobrado" a tempo de produzir a aparência de camadas .

Redes Elman e redes Jordan

A rede Elman

Uma rede Elman é uma rede de três camadas (organizada horizontalmente como x , y e z na ilustração) com a adição de um conjunto de unidades de contexto ( u na ilustração). A camada intermediária (oculta) é conectada a essas unidades de contexto fixadas com um peso de um. A cada passo de tempo, a entrada é alimentada e uma regra de aprendizagem é aplicada. As conexões traseiras fixas salvam uma cópia dos valores anteriores das unidades ocultas nas unidades de contexto (uma vez que se propagam pelas conexões antes que a regra de aprendizado seja aplicada). Assim, a rede pode manter uma espécie de estado, permitindo-lhe realizar tarefas como predição de sequência que estão além do poder de um perceptron multicamadas padrão .

As redes Jordan são semelhantes às redes Elman. As unidades de contexto são alimentadas a partir da camada de saída em vez da camada oculta. As unidades de contexto em uma rede Jordan também são chamadas de camada de estado. Eles têm uma conexão recorrente com eles mesmos.

As redes Elman e Jordan também são conhecidas como “redes recorrentes simples” (SRN).

Rede elman
Rede Jordan

Variáveis ​​e funções

  • : vetor de entrada
  • : vetor de camada oculta
  • : vetor de saída
  • , e : matrizes de parâmetro e vetor
  • e : funções de ativação

Hopfield

A rede Hopfield é um RNN em que todas as conexões entre as camadas têm o mesmo tamanho. Ele requer entradas estacionárias e, portanto, não é um RNN geral, pois não processa sequências de padrões. No entanto, garante que vai convergir. Se as conexões são treinadas usando o aprendizado Hebbian , a rede Hopfield pode funcionar como uma memória endereçável por conteúdo robusta , resistente à alteração da conexão.

Memória associativa bidirecional

Introduzida por Bart Kosko, uma rede de memória associativa bidirecional (BAM) é uma variante de uma rede Hopfield que armazena dados associativos como um vetor. A bidirecionalidade vem da passagem da informação por uma matriz e sua transposição . Normalmente, a codificação bipolar é preferida à codificação binária dos pares associativos. Recentemente, os modelos BAM estocásticos usando a revisão de Markov foram otimizados para aumentar a estabilidade da rede e a relevância para as aplicações do mundo real.

Uma rede BAM possui duas camadas, qualquer uma das quais pode ser acionada como uma entrada para recuperar uma associação e produzir uma saída na outra camada.

Estado de eco

A rede de estado de eco (ESN) tem uma camada oculta aleatória conectada esparsamente. Os pesos dos neurônios de saída são a única parte da rede que pode mudar (ser treinada). ESNs são bons em reproduzir certas séries temporais . Uma variante para spiking neurônios é conhecida como máquina de estado líquido .

Independentemente RNN (IndRNN)

A rede neural recorrente independente (IndRNN) aborda os problemas de desaparecimento e explosão de gradiente no RNN tradicional totalmente conectado. Cada neurônio em uma camada recebe apenas seu próprio estado passado como informação de contexto (em vez de conectividade total com todos os outros neurônios nesta camada) e, portanto, os neurônios são independentes da história uns dos outros. A retropropagação do gradiente pode ser regulada para evitar o desaparecimento e a explosão do gradiente, a fim de manter a memória de longo ou curto prazo. As informações entre os neurônios são exploradas nas próximas camadas. IndRNN pode ser treinado de forma robusta com as funções não lineares não saturadas, como ReLU. Usando conexões de salto, redes profundas podem ser treinadas.

Recursiva

Uma rede neural recursiva é criada aplicando o mesmo conjunto de pesos recursivamente sobre uma estrutura semelhante a um gráfico diferenciável, percorrendo a estrutura em ordem topológica . Normalmente, essas redes também são treinadas pelo modo reverso de diferenciação automática . Eles podem processar representações distribuídas de estrutura, como termos lógicos . Um caso especial de redes neurais recursivas é o RNN cuja estrutura corresponde a uma cadeia linear. Redes neurais recursivas têm sido aplicadas ao processamento de linguagem natural . A rede de tensores neurais recursivos usa uma função de composição baseada em tensores para todos os nós da árvore.

Compressor de história neural

O compressor de histórico neural é uma pilha não supervisionada de RNNs. No nível de entrada, ele aprende a prever sua próxima entrada a partir das entradas anteriores. Apenas entradas imprevisíveis de algum RNN na hierarquia se tornam entradas para o próximo nível RNN superior, que, portanto, recalcula seu estado interno apenas raramente. Cada RNN de nível superior estuda, portanto, uma representação compactada das informações no RNN abaixo. Isso é feito de forma que a sequência de entrada possa ser reconstruída com precisão a partir da representação no nível mais alto.

O sistema minimiza efetivamente o comprimento da descrição ou o logaritmo negativo da probabilidade dos dados. Dada a grande previsibilidade de aprendizado na sequência de dados de entrada, o RNN de nível mais alto pode usar o aprendizado supervisionado para classificar facilmente até mesmo sequências profundas com longos intervalos entre eventos importantes.

É possível destilar a hierarquia RNN em dois RNNs: o chunker "consciente" (nível superior) e o automatizador "subconsciente" (nível inferior). Uma vez que o chunker tenha aprendido a prever e comprimir entradas que são imprevisíveis pelo automatizador, então o automatizador pode ser forçado na próxima fase de aprendizagem a prever ou imitar através de unidades adicionais as unidades ocultas do chunker que muda mais lentamente. Isso torna mais fácil para o automatizador aprender apropriadamente, raramente mudando as memórias em intervalos longos. Por sua vez, isso ajuda o automatizador a tornar previsíveis muitas de suas entradas antes imprevisíveis, de modo que o chunker possa se concentrar nos eventos imprevisíveis restantes.

Um modelo generativo superou parcialmente o problema do gradiente de desaparecimento de diferenciação automática ou retropropagação em redes neurais em 1992. Em 1993, tal sistema resolveu uma tarefa de "Aprendizado muito profundo" que exigia mais de 1000 camadas subsequentes em um RNN desdobrado no tempo.

RNNs de segunda ordem

Os RNNs de segunda ordem usam pesos de pedido mais altos em vez dos pesos padrão e os estados podem ser um produto. Isso permite um mapeamento direto para uma máquina de estado finito em treinamento, estabilidade e representação. A memória de curto prazo longa é um exemplo disso, mas não possui tais mapeamentos formais ou prova de estabilidade.

Memória longa de curto prazo

Unidade de memória longa de curto prazo

A memória de longo prazo (LSTM) é um sistema de aprendizado profundo que evita o problema do gradiente de desaparecimento . O LSTM é normalmente aumentado por portas recorrentes chamadas “portas de esquecimento”. LSTM evita que erros retropropagados desapareçam ou explodam. Em vez disso, os erros podem fluir para trás através de um número ilimitado de camadas virtuais desdobradas no espaço. Ou seja, o LSTM pode aprender tarefas que requerem memórias de eventos que aconteceram milhares ou até milhões de etapas de tempo discretas antes. Topologias semelhantes a LSTM específicas para problemas podem ser desenvolvidas. O LSTM funciona mesmo com longos atrasos entre eventos significativos e pode manipular sinais que misturam componentes de baixa e alta frequência.

Muitos aplicativos usam pilhas de LSTM RNNs e os treinam por Connectionist Temporal Classification (CTC) para encontrar uma matriz de peso RNN que maximize a probabilidade das sequências de rótulo em um conjunto de treinamento, dadas as sequências de entrada correspondentes. O CTC alcança alinhamento e reconhecimento.

O LSTM pode aprender a reconhecer linguagens sensíveis ao contexto, ao contrário dos modelos anteriores baseados em modelos ocultos de Markov (HMM) e conceitos semelhantes.

Unidade recorrente bloqueada

Unidade recorrente bloqueada

Unidades recorrentes bloqueadas (GRUs) são um mecanismo de bloqueio em redes neurais recorrentes introduzidas em 2014. Elas são usadas na forma completa e em várias variantes simplificadas. Seu desempenho na modelagem musical polifônica e na modelagem do sinal de fala foi considerado semelhante ao da memória de longo prazo. Eles têm menos parâmetros do que o LSTM, pois não têm uma porta de saída.

Bidirecional

Os RNNs bidirecionais usam uma sequência finita para prever ou rotular cada elemento da sequência com base nos contextos passados ​​e futuros do elemento. Isso é feito concatenando as saídas de dois RNNs, um processando a sequência da esquerda para a direita e o outro da direita para a esquerda. Os resultados combinados são as previsões dos sinais de destino dados pelo professor. Esta técnica provou ser especialmente útil quando combinada com LSTM RNNs.

Tempo contínuo

Uma rede neural recorrente de tempo contínuo (CTRNN) usa um sistema de equações diferenciais ordinárias para modelar os efeitos das entradas de entrada em um neurônio.

Para um neurônio na rede com ativação , a taxa de mudança de ativação é dada por:

Onde:

  •  : Constante de tempo do nó pós-sináptico
  •  : Ativação do nó pós-sináptico
  •  : Taxa de mudança de ativação do nó pós-sináptico
  •  : Peso da conexão do nó pré ao pós-sináptico
  •  : Sigmóide de x, por exemplo .
  •  : Ativação do nó pré-sináptico
  •  : Viés de nó pré-sináptico
  •  : Entrada (se houver) para o nó

Os CTRNNs foram aplicados à robótica evolucionária, onde foram usados ​​para abordar a visão, a cooperação e o comportamento cognitivo mínimo.

Observe que, pelo teorema da amostragem de Shannon , as redes neurais recorrentes em tempo discreto podem ser vistas como redes neurais recorrentes em tempo contínuo, onde as equações diferenciais se transformaram em equações de diferença equivalentes . Essa transformação pode ser considerada como ocorrendo após as funções de ativação do nó pós-sináptico terem sido filtradas em passagem baixa, mas antes da amostragem.

Hierárquico

RNNs hierárquicos conectam seus neurônios de várias maneiras para decompor o comportamento hierárquico em subprogramas úteis. Essas estruturas hierárquicas de cognição estão presentes nas teorias da memória apresentadas pelo filósofo Henri Bergson , cujas visões filosóficas inspiraram modelos hierárquicos.

Rede perceptron multicamada recorrente

Geralmente, uma rede recorrente de rede perceptron multicamadas (RMLP) consiste em sub-redes em cascata, cada uma contendo várias camadas de nós. Cada uma dessas sub-redes é feed-forward, exceto para a última camada, que pode ter conexões de feedback. Cada uma dessas sub-redes é conectada apenas por conexões de feed-forward.

Modelo de múltiplas escalas de tempo

Uma rede neural recorrente de múltiplas escalas de tempo (MTRNN) é um modelo computacional baseado em neurônios que pode simular a hierarquia funcional do cérebro por meio da auto-organização que depende da conexão espacial entre os neurônios e de tipos distintos de atividades neuronais, cada um com propriedades de tempo distintas. Com atividades neuronais tão variadas, sequências contínuas de qualquer conjunto de comportamentos são segmentadas em primitivas reutilizáveis, que por sua vez são integradas de forma flexível em diversos comportamentos sequenciais. A aprovação biológica de tal tipo de hierarquia foi discutida na teoria de predição de memória da função cerebral de Hawkins em seu livro On Intelligence . Essa hierarquia também concorda com as teorias da memória postuladas pelo filósofo Henri Bergson , que foram incorporadas a um modelo MTRNN.

Máquinas de Turing Neural

Máquinas de Turing Neural (NTMs) são um método de estender redes neurais recorrentes, acoplando-as a recursos de memória externos com os quais podem interagir por meio de processos atencionais . O sistema combinado é análogo a uma máquina de Turing ou arquitetura Von Neumann, mas é diferenciável de ponta a ponta, permitindo que seja treinado com eficiência com descida gradiente .

Computador neural diferenciável

Os computadores neurais diferenciáveis ​​(DNCs) são uma extensão das máquinas de Turing Neural, permitindo o uso de quantidades difusas de cada endereço de memória e um registro da cronologia.

Autômatos pushdown de rede neural

Autômatos pushdown de rede neural (NNPDA) são semelhantes aos NTMs, mas as fitas são substituídas por pilhas analógicas que são diferenciáveis ​​e que são treinadas. Dessa forma, eles são semelhantes em complexidade aos reconhecedores de gramáticas livres de contexto (CFGs).

Redes Memristive

Greg Snider, do HP Labs, descreve um sistema de computação cortical com nanodispositivos memristivos. Os memristores (resistores de memória) são implementados por materiais de filme fino em que a resistência é eletricamente ajustada por meio do transporte de íons ou vazios de oxigênio dentro do filme. O projeto SyNAPSE da DARPA financiou a IBM Research e HP Labs, em colaboração com o Departamento de Sistemas Cognitivos e Neurais (CNS) da Universidade de Boston, para desenvolver arquiteturas neuromórficas que podem ser baseadas em sistemas memristivos. As redes memristivas são um tipo particular de rede neural física que tem propriedades muito semelhantes às redes (Little-) Hopfield, pois têm uma dinâmica contínua, têm uma capacidade de memória limitada e relaxam naturalmente através da minimização de uma função que é assintótica ao Modelo de Ising. Nesse sentido, a dinâmica de um circuito memristivo tem a vantagem em relação a uma rede Resistor-Capacitor por ter um comportamento não linear mais interessante. Deste ponto de vista, a engenharia de redes memristivas analógicas é responsável por um tipo peculiar de engenharia neuromórfica em que o comportamento do dispositivo depende da fiação do circuito, ou topologia.

Treinamento

Gradiente descendente

O gradiente descendente é um algoritmo de otimização iterativa de primeira ordem para encontrar o mínimo de uma função. Em redes neurais, ele pode ser usado para minimizar o termo de erro alterando cada peso em proporção à derivada do erro em relação a esse peso, desde que as funções de ativação não lineares sejam diferenciáveis . Vários métodos para fazer isso foram desenvolvidos na década de 1980 e início de 1990 por Werbos , Williams , Robinson , Schmidhuber , Hochreiter , Pearlmutter e outros.

O método padrão é chamado de “ retropropagação através do tempo ” ou BPTT, e é uma generalização da retropropagação para redes feed-forward. Como esse método, é um exemplo de diferenciação automática no modo de acumulação reversa do princípio do mínimo de Pontryagin . Uma variante online mais cara do ponto de vista computacional é chamada de “Aprendizado Recorrente em Tempo Real” ou RTRL, que é uma instância de diferenciação automática no modo de acumulação direta com vetores tangentes empilhados. Ao contrário do BPTT, este algoritmo é local no tempo, mas não local no espaço.

Nesse contexto, local no espaço significa que o vetor de peso de uma unidade pode ser atualizado usando apenas as informações armazenadas nas unidades conectadas e a própria unidade, de modo que a complexidade de atualização de uma única unidade seja linear na dimensionalidade do vetor de peso. Local no tempo significa que as atualizações ocorrem continuamente (on-line) e dependem apenas do intervalo de tempo mais recente, em vez de vários intervalos de tempo dentro de um determinado horizonte de tempo, como no BPTT. As redes neurais biológicas parecem ser locais com respeito ao tempo e ao espaço.

Para calcular recursivamente as derivadas parciais, RTRL tem uma complexidade de tempo de O (número de ocultos x número de pesos) por passo de tempo para calcular as matrizes Jacobianas , enquanto BPTT leva apenas O (número de pesos) por passo de tempo, ao custo de armazenar todas as ativações futuras dentro de um determinado horizonte de tempo. Existe um híbrido online entre BPTT e RTRL com complexidade intermediária, junto com variantes para tempo contínuo.

Um grande problema com a descida de gradiente para arquiteturas RNN padrão é que gradientes de erro desaparecem exponencialmente rapidamente com o tamanho do intervalo de tempo entre eventos importantes. O LSTM combinado com um método de aprendizado híbrido BPTT / RTRL tenta superar esses problemas. Esse problema também é resolvido na rede neural recorrente de forma independente (IndRNN), reduzindo o contexto de um neurônio ao seu próprio estado anterior e as informações entre os neurônios podem ser exploradas nas camadas seguintes. Memórias de alcance diferente, incluindo memória de longo prazo, podem ser aprendidas sem o problema de desaparecimento e explosão do gradiente.

O algoritmo on-line denominado backpropagation causal recursive (CRBP), implementa e combina os paradigmas BPTT e RTRL para redes locais recorrentes. Funciona com as redes locais recorrentes mais gerais. O algoritmo CRBP pode minimizar o termo de erro global. Este fato melhora a estabilidade do algoritmo, proporcionando uma visão unificadora das técnicas de cálculo de gradiente para redes recorrentes com feedback local.

Uma abordagem para o cálculo de informações de gradiente em RNNs com arquiteturas arbitrárias é baseada na derivação diagramática de gráficos de fluxo de sinal. Ele usa o algoritmo de lote BPTT, baseado no teorema de Lee para cálculos de sensibilidade de rede. Foi proposto por Wan e Beaufays, enquanto sua versão online rápida foi proposta por Campolucci, Uncini e Piazza.

Métodos de otimização global

O treinamento dos pesos em uma rede neural pode ser modelado como um problema de otimização global não linear . Uma função alvo pode ser formada para avaliar a adequação ou o erro de um vetor de peso específico da seguinte maneira: Primeiro, os pesos na rede são definidos de acordo com o vetor de peso. Em seguida, a rede é avaliada em relação à sequência de treinamento. Normalmente, a diferença de soma quadrada entre as previsões e os valores alvo especificados na sequência de treinamento é usada para representar o erro do vetor de peso atual. Técnicas de otimização global arbitrária podem então ser usadas para minimizar esta função alvo.

O método de otimização global mais comum para treinar RNNs são os algoritmos genéticos , especialmente em redes não estruturadas.

Inicialmente, o algoritmo genético é codificado com os pesos da rede neural de uma maneira predefinida, em que um gene no cromossomo representa um link de peso. Toda a rede é representada como um único cromossomo. A função de fitness é avaliada da seguinte forma:

  • Cada peso codificado no cromossomo é atribuído ao respectivo elo de peso da rede.
  • O conjunto de treinamento é apresentado à rede que propaga os sinais de entrada para a frente.
  • O erro quadrático médio é retornado à função de adequação.
  • Esta função conduz o processo de seleção genética.

Muitos cromossomos constituem a população; portanto, muitas redes neurais diferentes são desenvolvidas até que um critério de parada seja satisfeito. Um esquema de parada comum é:

  • Quando a rede neural aprendeu uma certa porcentagem dos dados de treinamento ou
  • Quando o valor mínimo do erro quadrático médio for satisfeito ou
  • Quando o número máximo de gerações de treinamento for atingido.

O critério de parada é avaliado pela função de adequação à medida que obtém o recíproco do erro quadrático médio de cada rede durante o treinamento. Portanto, o objetivo do algoritmo genético é maximizar a função de aptidão, reduzindo o erro quadrático médio.

Outras técnicas de otimização global (e / ou evolutiva) podem ser usadas para buscar um bom conjunto de pesos, como recozimento simulado ou otimização de enxame de partículas .

Campos e modelos relacionados

Os RNNs podem se comportar de forma caótica . Nesses casos, a teoria dos sistemas dinâmicos pode ser usada para análise.

Na verdade, são redes neurais recursivas com uma estrutura particular: a de uma cadeia linear. Enquanto as redes neurais recursivas operam em qualquer estrutura hierárquica, combinando representações de filhos em representações de pais, as redes neurais recorrentes operam na progressão linear do tempo, combinando o intervalo de tempo anterior e uma representação oculta na representação do intervalo de tempo atual.

Em particular, os RNNs podem aparecer como versões não lineares de resposta ao impulso finita e filtros de resposta ao impulso infinito e também como um modelo exógeno autoregressivo não linear (NARX).

Bibliotecas

  • Apache Singa
  • Caffe : Criado pelo Berkeley Vision and Learning Center (BVLC). Suporta CPU e GPU. Desenvolvido em C ++ , possui wrappers Python e MATLAB .
  • Chainer : a primeira biblioteca de aprendizado profundo estável que oferece suporte a redes neurais dinâmicas definidas por execução. Totalmente em Python, suporte de produção para CPU, GPU, treinamento distribuído.
  • Deeplearning4j : Aprendizado profundo em Java e Scala no Spark habilitado para multi-GPU . Uma biblioteca de aprendizado profundo de uso geral para a pilha de produção JVM em execução em um mecanismo de computação científica C ++ . Permite a criação de camadas personalizadas. Integra-se com Hadoop e Kafka .
  • Flux : inclui interfaces para RNNs, incluindo GRUs e LSTMs, escritos em Julia .
  • Keras : API de alto nível e fácil de usar, fornecendo um wrapper para muitas outras bibliotecas de aprendizado profundo.
  • Kit de ferramentas cognitivas da Microsoft
  • MXNet : uma estrutura de aprendizado profundo de código aberto moderna usada para treinar e implantar redes neurais profundas.
  • PyTorch : tensores e redes neurais dinâmicas em Python com forte aceleração de GPU.
  • TensorFlow : biblioteca semelhante a Theano licenciada pelo Apache 2.0 com suporte para CPU, GPU e TPU proprietária do Google para dispositivos móveis
  • Theano : A biblioteca de aprendizado profundo de referência para Python com uma API amplamente compatível com a popular biblioteca NumPy . Permite ao usuário escrever expressões matemáticas simbólicas e, em seguida, gerar automaticamente seus derivados, evitando que o usuário tenha que codificar gradientes ou retropropagação. Essas expressões simbólicas são compiladas automaticamente para o código CUDA para uma implementação rápida na GPU.
  • Torch ( www.torch.ch ): Um framework de computação científica com amplo suporte para algoritmos de aprendizado de máquina, escrito em C e lua . O autor principal é Ronan Collobert e agora é usado no Facebook AI Research e no Twitter.

Formulários

As aplicações de redes neurais recorrentes incluem:

Referências

Leitura adicional

  • Mandic, Danilo P. e Chambers, Jonathon A. (2001). Redes Neurais Recorrentes para Predição: Algoritmos de Aprendizagem, Arquiteturas e Estabilidade . Wiley. ISBN 978-0-471-49517-8.

links externos