Buscar

Ecossistema Hadoop Tema 3 Redes Neurais Recorrentes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 86 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 86 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 86 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 1/86
Redes Neurais Recorrentes
Prof. Sérgio Monteiro
false
Descrição
Conceitos sobre Redes Neurais Recorrentes – Recurrent Neural Network
(RNN): diferentes arquiteturas, aplicações para Processamento de
Linguagem Natural (PLN) e estudo de séries temporais.
Propósito
Compreender os conceitos das RNN é fundamental para profissionais
da área de ciência de dados por sua larga utilização no reconhecimento
de padrões em sequências de dados, como textos, números, genomas,
caligrafia, áudio e vídeo.
Preparação
É necessário criar uma conta no Google Colab para executar os
exemplos que foram desenvolvidos na linguagem Python.
Objetivos
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 2/86
Módulo 1
Fundamentos
Descrever fundamentos das RNN e suas aplicações.
Módulo 2
Arquiteturas
Distinguir as principais variações de arquiteturas de RNN.
Módulo 3
Aplicação em séries temporais
Empregar RNN em predição de séries temporais.
Módulo 4
Aplicação em Processamento de
Linguagem Natural
Empregar RNN em Processamento de Linguagem Natural.
Atualmente, temos à disposição tecnologias que nos ajudam a
fazer escolhas de produtos e serviços. Cada vez que acessamos
essas tecnologias, estamos consumindo e, ao mesmo tempo,
produzindo dados. Esses dados revelam muitas coisas sobre nosso
comportamento: o que pensamos sobre determinados assuntos,
quais são nossos interesses profissionais e de entretenimento e
quais são nossos anseios.
Introdução
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 3/86
1 - Fundamentos
Ao �nal deste módulo, você será capaz de descrever fundamentos
das RNN e suas aplicações.
Ligando os pontos
Você sabia que existem diferentes tipos de redes neurais de
aprendizado de máquina profundo? Sabia que algumas dessas redes
são aplicadas para problemas de predição? Para respondermos a estas
perguntas, vamos analisar algumas situações práticas.
A empresa Sentimentos Classificados S.A. atua no ramo de pesquisa de
mercado. Ela presta serviço para outras companhias com o objetivo de
Para processar tantos dados e conseguir extrair características que
nos permitam fazer generalizações, podemos utilizar métodos de
aprendizado de máquina. Entre os modelos disponíveis estão as
Redes Neurais Recorrentes – Recurrent Neural Network (RNN).
Essas redes possuem como principal característica trabalhar com
dados sequenciais, o que as torna muito interessantes para lidar
com Processamento de Linguagem Natural (PLN) e estudar séries
temporais. Ambos os assuntos têm diversas aplicações práticas e
métodos bem consolidados que nos permitem desenvolver
projetos com base em RNN.
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 4/86
fazer um levantamento da opinião do público-alvo a respeito da
qualidade dos serviços e da força da marca dessas empresas.
A fonte de dados da Sentimentos Classificados está, principalmente,
nas redes sociais, onde segue a sequência de passos:
Identificar comentários sobre as empresas do seu portfólio de
clientes
Detectar se o comentário foi feito por uma pessoa ou um programa
Classificar o comentário como positivo, negativo, ou neutro
Até então, esse trabalho era feito por profissionais que utilizavam
ferramentas para auxiliá-los. No entanto, a empresa está tendo muitas
dificuldades de atender a demanda de seus clientes, além, é claro, não
tem nenhuma possibilidade de expandir os negócios dela no atual
cenário. Diante desse quadro, os gestores da empresa tiveram algumas
reuniões para reverter essa situação. Uma das ideias propostas foi a de
utilizar técnicas de aprendizado profundo no contexto do
processamento de linguagem natural. Em especial, foi dado destaque
para um modelo computacional chamado de Rede Neural Recorrente,
ou, como é mais conhecida, RNN. Isso porque esse modelo de rede é
aplicado com bastante sucesso exatamente para esse tipo de situação
que a Sentimentos Classificados atua.
A ideia teve uma boa recepção, mas não foi simples transformá-la em
realidade. Um dos principais problemas foi a carência de profissionais
que dominassem o conhecimento sobre as redes RNN. Em resumo, a
empresa traçou e executou um plano para qualificar seus profissionais,
além de fazer parcerias com algumas instituições de ensino para
acelerar o aprendizado e intensificar a colaboração. Hoje em dia, a
Sentimentos Classificados utiliza redes RNN nas suas soluções e está
obtendo excelentes resultados para seus clientes.
E você, concorda com a estratégia dos gestores da Sentimentos
Classificados S.A. para qualificar os colaboradores dela?
Após a leitura do case, é hora de aplicar seus conhecimentos! Vamos
ligar esses pontos?
Questão 1
A empresa Sentimentos Classificados S.A. utiliza as redes sociais
como uma fonte de dados para realizar análises. Analisando a
estratégia acima, qual o seu entendimento de como as redes RNNs
são úteis para auxiliar esse processo de análise?
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 5/86
Parabéns! A alternativa D está correta.
A Sentimentos Classificados S.A. observou duas coisas: primeira
delas é que as redes RNNs são excelentes para processamento de
linguagem natural; A segunda coisa é que elas não são simples de
serem usadas na prática. É necessário estudar bastante para
dominá-las e fazer com que apresentem resultados úteis.
Questão 2
O nome da empresa Sentimentos Classificados S.A. é bastante
curioso. Você relacionaria esse nome com as redes RNNs?
A As redes RNNs são adequadas para identificar os
perfis dos usuários das redes sociais.
B
A melhor forma de utilizar as redes RNNs são com
textos não estruturados como é o caso das redes
sociais.
C
As redes RNNs são a única opção de modelo
computacional para tratar processamento de
linguagem natural.
D
As redes RNNs são utilizadas com sucesso para
processamento de linguagem natural.
E
As redes RNNs são muito simples de serem
aplicadas para processamento de linguagem
natural.
A
Sim, pois chama a atenção do público para a
utilização de técnicas de inteligência artificial.
B
Sim, pois as redes RNNs podem ser úteis para
classificar qualquer coisa.
C
Sim, pois as redes RNNs são adequadas para
classificar quais sentimentos são refletidos em um
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 6/86
Parabéns! A alternativa C está correta.
O nome da empresa Sentimentos Classificados é devido ao fato de
que ela classifica um texto escrito em linguagem natural em
positivo, negativo ou neutro. E, para fazer isso, ela utiliza redes
RNNs que são adequadas para este tipo de situação.
Questão 3
Considere o seguinte cenário: os gestores da Sentimentos Classificados
S.A. desejam expandir sua área de atuação para classificar notícias de
redes sociais como falsas, ou verdadeiras. Você acha que faz sentido
utilizar uma rede RNN para esse tipo de aplicação?
Digite sua resposta aqui
Chave de resposta
Sim, pois o problema descrito na questão condiz exatamente a
uma aplicação de processamento de linguagem natural. O desafio
aqui é treinar a rede para ser capaz de aprender o que é uma
notícia falsa, ou verdadeira.
Redes neurais
texto.
D
Não, pois as redes RNN não são adequadas para
classificar sentimentos.
E
Não, pois o objetivo da empresa foi apenas fazer um
jogo com as palavras.
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 7/86
As redes neurais artificiais são modelos computacionais baseados no
funcionamento das células neurais biológicas. Elas são aplicadas com
sucesso em diversos contextos relacionados aoreconhecimento de
padrões. Entre as evoluções das redes neurais estão as Redes Neurais
Recorrentes – Recurrent Neural Network (RNN).
Rede Neural Recorrente.
As RNN são modelos de aprendizado profundo que se caracterizam por
usar dados sequenciais ou dados de séries temporais. Entre as
aplicações em que são utilizadas estão:

Processamento de Linguagem
Natural (PLN)
Fazem a tradução entre idiomas, reconhecimento de voz e legenda de
imagens.

Estimativa de valores
Obtêm o provável próximo valor de uma série temporal a partir da
análise do histórico.
Atenção!
Semelhantemente ao que ocorre com outros tipos de redes neurais
artificiais, as RNN também passam por algoritmos de treinamento, em
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 8/86
que extraem características dos dados para fazer generalizações.
Conceitos essenciais
As RNN têm muitos conceitos que precisamos conhecer antes de
estudarmos as particularidades de suas arquiteturas. Como veremos, os
termos das redes neurais são bastante referenciados pelos termos
originais em inglês. É importante sabermos disso, pois nos ajuda no uso
de pacotes computacionais para fazermos implementações. Aqui,
vamos apresentar alguns deles de forma resumida:
Itens que se destacam nos dados de treinamento e que são
usados para que a rede aprenda. Em muitos textos, são
chamados de “recursos”.
Conjuntos de dados que são fornecidos para treinar as RNN. São
formados por pares de entrada e saída. A ideia é que o modelo
faça associação entre as características de uma entrada com
determinada saída.
Saídas do modelo, também referenciadas como dados nominais.
Conjunto de nós conectados entre si em uma rede neural. O
modo como as camadas são estruturadas caracteriza as
arquiteturas dos modelos.
Características (Features) 
Exemplos 
Rótulos (Label) 
Camada (Layer) 
Modelo (Model) 
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 9/86
Representação formal da rede neural.
Todos os nós em uma camada são conectados a cada nó na
camada anterior.
Variáveis internas do modelo. São essas variáveis que queremos
otimizar, pois é por meio delas que aplicamos nosso modelo, a
fim de resolver os problemas para os quais foi projetado.
Diferença entre a saída desejada e a saída real. Também é
referenciada como função de erro e função de custo.
Tipo de função de perda que considera um pequeno número de
grandes discrepâncias como pior do que um grande número de
pequenas discrepâncias.
Utilizado para ajustar as variáveis internas do modelo, visando
minimizar a função de perda. O método calcula o gradiente da
função de custo associada a cada peso
e obtém o vetor gradiente,
Camada densa e totalmente conectada 
Pesos sinápticos e vieses (Biases) 
Função de perda (loss) 
Erro Quadrático Médio – Mean Squared Error (MSE) 
Algoritmo de descida do gradiente (Gradient descent) 
(wk)
ΔJ (wk)
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 10/86
, usando a seguinte equação:
Em que η corresponde ao parâmetro de taxa de aprendizagem.
Implementação específica do algoritmo de descida de gradiente.
Existem vários algoritmos que podem ser utilizados para isso,
como ADAptive with Momentum (ADAM).
Valor usado para ajustar os pesos sinápticos durante a execução
do algoritmo de descida do gradiente.
Conjunto de exemplos usados durante o treinamento da rede
neural.
Passagem completa sobre todo o conjunto de dados de
treinamento.
Cálculo dos valores de saída a partir da camada de entrada.
Corresponde à primeira fase do algoritmo de treinamento
backpropagation.
wk+1 = wk − ηΔJ (wk)
Otimizador 
Taxa de aprendizagem 
Lote (Batch) 
Época (Epoch) 
Passo para frente (Forward pass) 
Passo de volta (Backward pass) 
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 11/86
Fase de ajustes das variáveis internas do modelo, de acordo com
o algoritmo do otimizador. O fluxo de execução começa da
camada de saída e vai até a camada de entrada.
Funções de ativação
Este tipo de função é usado para ativar um neurônio por meio de um
sinal. A ideia, basicamente, é que um neurônio receba um valor,
calculado pela combinação da multiplicação dos pesos com suas
respectivas entradas e seus vieses, e o utilize como entrada para uma
função de ativação. Conheça as principais funções de ativação a seguir.
Função sigmoide ou logística
Sua fórmula e derivada são dadas por:
Função tangente hiperbólica
Sua fórmula e derivada são dadas por:
σ(z) =
1
1 + e−z
σ′(z) = σ(z)(1 − σ(z))
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 12/86
Função ReLU
Sua fórmula e derivada são dadas por:
Softmax
É uma função que fornece probabilidades para cada classe de saída
possível. Ela é usada no final de uma rede neural. Sua fórmula é dada
por:
tanh(z) = 2σ(2z) − 1
tanh′(z) = 1 − tanh2(z)
ReLU(s) = max{0, s}
ReLU′(s) = {1,  se x ≥ 0
0,  caso contrário 
pi =
ezi
∑nj=1 e
zj
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 13/86
Em que:
i-ésimo resultado da função Softmax.
Resultado para o i-ésimo neurônio de saída.
Quantidade de neurônios de saída.
Aspectos intrínsecos
Nas redes neurais profundas tradicionais, as entradas e saídas são
consideradas independentes entre si. No caso das RNN, as informações
de entradas anteriores são usadas para influenciar a entrada e a saída
atuais, ou seja, a saída delas depende dos elementos anteriores da
sequência.
Exemplo
Quando queremos expressar que apreciamos um filme, podemos usar
uma frase do tipo: “O filme foi muito legal!”. Mas se disséssemos “Legal
muito foi o filme!”, apesar de termos aplicado exatamente as mesmas
palavras, a frase não faria sentido, pois a ordem das palavras é
importante para que a ideia fique clara. Esse exemplo ilustra como as
RNN consideram a posição de cada palavra na frase e usam essa
informação para prever a próxima palavra na sequência.
Outro fato em relação às características que distinguem as RNN de
outros modelos de redes neurais é a forma como o fluxo das
informações é processado. Veja dois exemplos de outros modelos:
pi
zi
n
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 14/86
FNN
Quando uma rede neural processa as informações em uma única
direção, que vai da camada de entrada para a camada de saída, ela é
chamada de feedforward (Feedforward Neural Network - FNN), também
conhecida como rede sem realimentação e, ainda, rede direta ou
alimentação avante.
CNN
As Redes Neurais Convolucionais (Convolutional Neural Networks - CNN)
extraem características dos objetos de forma automática e adaptativa
usando camadas em estruturas de hierarquias espaciais e são
aplicadas, principalmente, em visão computacional e reconhecimento de
imagens.
No caso das RNN, as camadas podem ser organizadas para processar
informações em duas direções. Elas usam estruturas de laços para
obter informações ao longo do processo computacional, as quais são
usadas para enviar informações de volta à rede. Isso conecta as
entradas e permite que as RNN processem dados sequenciais e
temporais (BENGIO; SIMARD; FRASCONI, 1994). Na imagem a seguir,
apresentamos o esquema conceitual de RNN:
Esquema básico de RNN.
No esquema, temos:
U = peso da camada oculta;
V = peso da camada de saída;
W = peso da camada de estado oculta;
 = vetor de entrada no instante t;
 = estado oculto no instante t, calculado como
, em que representa a função de ativação.
No caso das RNN, as funções de ativação mais comuns são sigmoide e
ReLU;
xt
st
st = f(Uxt + Wst − 1) f
14/02/2024, 19:45 Redes Neurais Recorrenteshttps://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 15/86
 = vetor de saída no instante t, calculado como .
Processo de aprendizado
Para que as RNN possam ser aplicadas para resolver problemas
práticos, elas precisam passar por um processo de aprendizado
parecido com o que ocorre com outras redes neurais tradicionais. As
redes neurais tradicionais são treinadas por meio do algoritmo
backpropagation, que atualiza os pesos sinápticos entre os neurônios,
de modo a extrair características (features) dos dados de treinamento,
usadas para fazer generalizações.
Como vimos, as RNN usam as entradas atuais e consideram as que
ocorreram antes delas para obter suas saídas. Isso representa uma
relação de dependência da saída atual com a entrada atual e das
entradas anteriores, o que chamamos de “memória”. As RNN são
treinadas, principalmente, pelo algoritmo BPTT, que tem o mesmo
princípio de funcionamento do backpropagation: treinar o modelo a
partir do cálculo dos erros de sua camada de saída para sua camada de
entrada. Esse cálculo nos permite ajustar os parâmetros do modelo de
forma adequada. Como as RNN compartilham seus parâmetros em
cada camada, o BPTT soma os erros em cada etapa de tempo, enquanto
as redes feedforward não precisam somar os erros, pois não
compartilham parâmetros entre suas camadas.
ot ot = f(V st)
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 16/86
Nuvem de palavras.
BPTT
Backpropagation Through Time ou Retropropagação ao Longo do Tempo.
Devido às características das RNN, existem dois problemas que podem
ocorrer no processo de treinamento, devido à dependência das
camadas: dissipação do gradiente e explosão do gradiente. Felizmente,
existem soluções para esses problemas.
Dissipação do gradiente (Vanishing
gradient)
Quando este problema ocorre, o modelo não aprende nada. Nessa
situação, o gradiente se torna muito pequeno. Isso significa que a
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 17/86
mudança dos pesos é insignificante para minimizar a função de erro. As
soluções para esse problema são:
Atribuir pesos iniciais
Para evitar que o algoritmo de treinamento atribua valores muito
pequenos para os pesos.
Aplicar o modelo indicado
Algumas redes neurais que já são estruturadas para evitar esse tipo de
problema – a mais importante é a LSMT.
LSTM
Long Short-Term Memory Networks ou Unidades de Memória Longa de
Curto Prazo
Explosão do gradiente
Nesta situação, ocorre exatamente o contrário em relação ao caso da
dissipação: o gradiente cresce excessivamente, e o modelo nunca
converge. As soluções para esse problema são:
Parar de retropropagar após determinada quantidade de iterações;
Penalizar ou reduzir artificialmente o gradiente;
Impor um limite máximo em um gradiente – técnica chamada de
“recorte de gradiente”.
Aplicações
As RNN são aplicadas em contextos em que os dados são sequenciais,
como nos casos de problemas de predição de séries temporais e
processamento de linguagem natural (SOCHER et al., 2013; BAHDANAU;
CHO; BENGIO, 2015).
Vamos apresentar alguns exemplos que nos ajudarão a visualizar casos
de sucesso de aplicações de RNN e como podemos adaptá-las para
outras situações.
Modelagem de linguagem e
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 18/86
geração de texto
Quando assistimos a algum filme ou lemos alguma história e
observamos os diálogos dos personagens, em muitos casos, podemos
ter uma boa noção do que eles vão falar em seguida. Isso ocorre porque
fazemos analogias com outras situações que já observamos e
conseguimos capturar características que nos ajudam a fazer
generalizações. De forma semelhante ocorre com as RNN.
As RNN recebem uma sequência de palavras
como entrada e, em seguida, tentam
predizer a possibilidade da próxima palavra.
No contexto de tradução de idiomas, essa abordagem é bastante
interessante, pois a frase mais provável tem mais chances de ser a
correta.
Máquina de tradução
No exemplo de aplicação anterior, estávamos interessados em predizer
a próxima palavra. Agora, nosso interesse é entender como as RNN
podem ser usadas para traduzir texto de um idioma para outro.
Se você já usou uma ferramenta para tradução de idiomas, é bastante
provável que tenha sido com RNN, pois muitos sistemas de tradução
aplicam alguma versão desse tipo de rede neural. Basicamente, essas
aplicações recebem como entrada um texto com o idioma de origem e
produzem um texto traduzido para o idioma de destino que o usuário
solicitou.
Um dos grandes exemplos de programas de tradução que utiliza RNN é o Google Translate.
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 19/86
Reconhecimento de fala
Reconhecimento de fala.
Uma aplicação bastante interessante de RNN é o reconhecimento de
fala. Para isso, é necessário que as RNN recebam ondas sonoras como
fonte de entrada para predizer segmentos fonéticos.
E como podemos fornecer esses dados como entrada para o modelo?
Por meio do processamento das ondas sonoras, com a transformação
em sequências numéricas, que podem ser trabalhadas pela rede. A rede
RNN calculará os fonemas e, na sequência, gerará um segmento
fonético.
Gerando descrições de imagens
Este problema consiste em descrever o que está ocorrendo dentro de
uma imagem. Vamos ver um exemplo para entender melhor:
Pessoas correndo.
O que podemos interpretar da foto que estamos vendo?
Algumas pessoas estão participando de uma competição de corrida em
um dia claro. Se olharmos com mais cuidado, poderemos encontrar
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 20/86
mais características que informam melhor sobre o que está
acontecendo. Essas descrições das imagens podem ser obtidas com
uma combinação de CNN e RNN.
As redes CNN são um tipo de rede neural utilizado para problemas que
envolvem visão computacional. Então, o processo tem duas etapas:

CNN
Fazem a segmentação.

RNN
Usam os dados
segmentados para
recriar a descrição.
Tag de vídeo
Outra situação muito útil para aplicação de RNN é fazer pesquisa de
vídeo: fornecemos como entrada para o modelo uma descrição da
imagem de um vídeo, e a rede retorna o quadro do vídeo.
Resumo do texto
Este tipo de aplicação ajuda a resumir o conteúdo de textos, por meio do
processamento de linguagem natural, e a personalizá-los para entrega
em aplicativos que não podem suportar grandes volumes.
Análise de centros de suporte
Atualmente, muitos serviços de suporte são realizados remotamente
por meio de chamadas telefônicas. Ao final das chamadas, há duas
situações:

14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 21/86

O problema foi
resolvido.

O problema não foi
resolvido.
Uma aplicação muito interessante para RNN é fazer o processamento
do áudio do suporte e analisá-lo com base no resultado da chamada.
Em outras palavras, estamos interessados em saber se a equipe de
suporte teve sucesso e quais foram as medidas tomadas para resolver o
problema do cliente. Dessa forma, esse aprendizado pode ser analisado
e reaplicado a outros cenários semelhantes ou pode servir para treinar
outras pessoas de suporte.
A evolução desse processo é fazer a
automatização com base no uso de RNN, de
modo a processar e sintetizar a fala real da
chamada para �ns de análise.
Aplicações em séries temporais
As séries temporais são mais um exemplo de dados sequenciais. Há
muitas situações em que estamos interessados em estimar qual será o
próximo valor da série e identificar comportamentos anômalos. Entre as
aplicações de séries temporais estão a análise de séries financeiras,
níveis de poluição e estudosde fenômenos meteorológicos.
Exemplo de série temporal.
Saiba mais

14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 22/86
É claro que as aplicações de RNN não se limitam às que apresentamos
aqui. Existem exemplos de aplicações para aprendizado de ritmo,
composição musical, reconhecimento de caligrafia, aprendizagem de
gramática, reconhecimento de ações humanas, além de diversas tarefas
de previsão na área de gerenciamento de processos de negócios e
previsão em caminhos de assistência médica.
Vantagens e desvantagens
Conheça as vantagens e desvantagens de utilizar as RNN:

Vantagens
Podem processar
entradas de qualquer
comprimento.
Lembram de cada
informação ao longo do
tempo e, por causa
disso, encaixam-se bem
em diversas aplicações
sequenciais.
Os pesos podem ser
compartilhados entre as
etapas de tempo.

Desvantagens
O cálculo de
treinamento é lento
devido à sua natureza
recorrente.
São propensas a
problemas como
explosão e
desaparecimento de
gradiente.
Fundamentos das redes
recorrentes
Está na hora de nosso bate-papo sobre os principais conceitos sobre
Redes Neurais Recorrentes com foco na arquitetura básica da rede e em
algumas de suas principais aplicações. Vamos lá!


14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 23/86
Falta pouco para atingir seus objetivos.
Vamos praticar alguns conceitos?
Questão 1
As RNN fazem parte dos algoritmos de aprendizado de máquina.
Como se trata de um tipo de rede neural, elas incorporam diversos
aspectos fundamentais para seu funcionamento. Assinale a
alternativa que apresenta um desses aspectos:
Parabéns! A alternativa D está correta.
A
As RNN são adequadas para situações em que os
dados não possuem dependência entre si.
B
As RNN são caracterizadas por processos
sequenciais de processamento, que reduzem sua
dependência do conjunto de dados de testes.
C
As RNN precisam ser implementadas com funções
de ativação ReLU para fazer classificações.
D
O processo de incorporação de conhecimento das
RNN está diretamente relacionado à diversidade do
conjunto de dados de treinamento.
E
A principal característica das RNN é a utilização de
camadas ocultas, que eliminam a dependência
relacional entre os dados.
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 24/86
De forma semelhante ao que ocorre com outros tipos de redes
neurais, as RNN têm por objetivo extrair informações do conjunto
de dados de treinamento que sejam úteis para fazer generalizações.
Essas informações são chamadas de características, também
conhecidas como recursos.
Questão 2
A recorrência é uma propriedade explorada por diversos problemas
de computação. Um exemplo clássico de aplicação de recorrência
ocorre no fatorial de um número, em que o cálculo do fatorial de
determinado número natural n depende do fatorial de n-1. Assinale
a alternativa que apresenta a aplicação correta das RNN para
resolver problemas:
Parabéns! A alternativa C está correta.
O principal aspecto das RNN que as destacam em relação a outros
tipos de redes neurais é a captura de dependências entre os dados.
A
Uma das aplicações clássicas de recorrência é a
segmentação de imagens, que é resolvida com
sucesso por RNN.
B
Devido à sua natureza recorrente, as RNN são
especialmente adequadas para reconhecimento de
imagens.
C
As RNN são adequadas para prever a próxima
palavra de uma conversa.
D
Devido às características de recorrência das RNN,
sua aplicação mais adequada é para a resolução de
problemas de combinatória.
E
As RNN têm a capacidade de gerar informações que
as colocam como um exemplo de aprendizado de
máquina não supervisionado.
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 25/86
Isso as torna especialmente interessantes para tratar problemas de
séries temporais e PLN.
2 - Arquiteturas
Ao �nal deste módulo, você será capaz de distinguir as principais
variações de arquiteturas de RNN.
Ligando os pontos
Você sabe qual a importância de uma arquitetura de rede neural RNN?
Sabia que elas podem ter diferentes arquiteturas? Para respondermos a
estas perguntas, vamos analisar algumas situações práticas.
A empresa RNN Arquitetura S.A. é especializada no desenvolvimento de
arquitetura para redes neurais recorrentes (RNNs). É um ramo muito
específico, mas, ainda assim, tem altíssimo valor agregado. Isso porque
essas redes podem ser aplicadas a diversas áreas, como:
Previsão de preços de ativos do mercado financeiro;
Previsão de chuvas para determinada região;
Construção de legendas automáticas;
Análise de sentimentos de textos de escrita livre.
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 26/86
E a lista de aplicações está bem longe de se encerrar, mas já dá uma
boa ideia da importância desse tipo de rede. Mas para construir uma
rede RNN que produza excelentes resultados é necessário investir em
uma arquitetura e valores de parâmetros eficientes. E isso não é um
trabalho trivial. Muito pelo contrário! Foi aí que os fundadores da RNN
Arquitetura encontraram uma oportunidade de negócio: projetar e
desenvolver arquiteturas eficientes, além de realizar um elaborado
processo de testes que auxiliasse para fornecer os valores adequados
para os parâmetros da rede.
Existe mais um ponto que torna o modelo de negócio da RNN
Arquitetura ainda mais interessante: ela atua com diversas arquiteturas
de RNNs. Isso é fundamental, pois a utilização da rede para
determinadas finalidades está completamente vinculada à sua
arquitetura.
Para trabalhar em ramo tão específico, a RNN Arquitetura conta com um
programa de treinamento intenso em que são fornecidos cursos para
seus colaboradores. Além disso, ela faz parcerias com instituições de
ensino para buscar talentos que ainda estejam se formando.
E você, acha que a estratégia dos gestores da RNN Arquitetura vai
ajudar a expandir os negócios?
Após a leitura do case, é hora de aplicar seus conhecimentos! Vamos
ligar esses pontos?
Questão 1
Como você viu, a empresa RNN Arquitetura S.A. atua em um ramo
muito específico que é o de projetar e ajustar a arquitetura de uma
rede RNN. Na sua visão e no contexto da estratégia acima, qual a
importância da estrutura de uma arquitetura para uma rede RNN?
A
Garante que os resultados produzidos pela rede
serão de excelente qualidade.
B
Permite que a rede RNN possa ser aplicada para
aplicações de visão computacional.
C Torna mais fácil de se resolver problemas.
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 27/86
Parabéns! A alternativa E está correta.
Aspectos da arquitetura de uma rede RNN são fundamentais para o
tipo de aplicação que ela poderá ser utilizada, portanto influenciam
o comportamento da rede, como bem foi observado pela RNN
Arquitetura.
Questão 2
Como você viu, a parametrização de uma rede RNN também tem
considerável impacto sobre o desempenho dela. Como você
visualiza ser possível fornecer bons valores para as redes RNN?
Parabéns! A alternativa B está correta.
A RNN Arquitetura nos mostrou no texto que o processo de
parametrização de uma rede RNN envolve muitos testes. Logo que
fizermos a execução deles, precisamos estudar o comportamento
da rede e adotar os valores dos que produziram o melhor resultado.
D
Permite que várias pessoas possam colaborar no
processo de construção.
E Influencia todo o comportamento da rede.
A Utilizando valores padrões fornecidos na literatura.
B Através de muitos testes.
C
Basta colocar todos os valores iniciais iguais a zero
que a rede vai se ajustar quando iniciar o
treinamento.
D O ideal é produzir valores aleatórios.
E
O mais importante é que os valores sempresejam
os mesmos para todas as rodadas da rede.
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 28/86
Questão 3
Considere o seguinte cenário: na empresa que você trabalha, existe um
movimento para utilizar as redes RNN, mas também existe uma
resistência quanto a isso, pois alguns argumentam que a arquitetura
dela é muito complexa. Neste cenário, como você argumentaria a favor
do uso das redes RNN?
Digite sua resposta aqui
Chave de resposta
De fato, a arquitetura de uma rede RNN não é simples. Como
vimos no caso da RNN Arquitetura S.A., existem muitos detalhes
que devem ser tratados explicitamente e não há uma referência
padrão que possa ser usada, é necessário realizar testes. Por
outro lado, as redes RNNs possuem excelentes casos de sucesso
para tratar problemas de dados sequenciais, como processamento
de linguagem natural e predição de valores. Portanto, vale a pena o
investimento para aprender como atuam e aplicá-las para resolver
problemas para as quais funcionam muito bem.
Visão geral da arquitetura
As RNN são redes neurais usadas para processar dados sequenciais.
Como vimos nas aplicações de redes recorrentes, existem muitos
exemplos em que os dados são sequenciais. Vejamos alguns:

Os vídeos são formados por uma sequência de quadros.

14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 29/86
A música é a combinação de uma sequência de elementos sonoros.

O texto é tipicamente sequencial, pois surge de uma combinação de
caracteres.
As RNN fazem a modelagem de dados sequenciais por meio da
persistência dos dados que foram aprendidos nas instâncias anteriores.
Exemplo
Em um diálogo entre personagens, os argumentos são construídos com
o que um personagem disse em dado momento, para que haja
coerência no fluxo da conversa. De modo semelhante, as RNN
aprendem e se lembram dos dados para formular uma decisão baseada
no aprendizado adquirido na instância anterior.
Uma característica das RNN que as diferencia de outras redes neurais é
que elas não limitam nem a entrada, nem a saída como um conjunto de
tamanho fixo, e nos permitem treinar o modelo como uma sequência de
dados. Portanto, para que possamos utilizar as RNN da melhor forma,
precisamos conhecer aspectos sobre sua arquitetura.
Vamos começar nossa abordagem com os tipos de RNN. Essas redes
neurais podem ser classificadas em quatro tipos básicos de estrutura.
São eles:
Um-para-um
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 30/86
Um-para-muitos
Muitos-para-um
Muitos-para-muitos
Vamos analisar essas categorias com mais detalhes.
Estrutura um-para-um
É uma estrutura de rede neural em que os comprimentos da entrada e
da saída são fixos e independentes da informação anterior. Na imagem
a seguir, apresentamos um exemplo de RNN com estrutura um-para-um:
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 31/86
Estrutura um-para-um.
Esse tipo de estrutura de RNN pode ser aplicado, por exemplo, para
classificação de imagens.
Estrutura um-para-muitos
É uma estrutura de RNN em que a entrada possui um tamanho fixo de
informação e que fornece uma sequência de dados como saída. Esse
tipo de estrutura é aplicado a problemas sequenciais em que os dados
de entrada têm uma etapa de tempo, e a saída contém um vetor de
valores múltiplos ou etapas de tempo múltiplas. Assim, há uma única
entrada e uma sequência de saídas. Na imagem a seguir, mostramos
um exemplo dessa estrutura de RNN:
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 32/86
Estrutura um-para-muitos.
Um exemplo de aplicação dessa estrutura ocorre na legendagem de
imagens, quando o modelo recebe uma imagem como entrada e produz
uma frase de palavras que faz uma descrição dela.
Estrutura muitos-para-um
Neste caso, a rede recebe uma sequência de informações como entrada
e produz uma saída de tamanho fixo. Na imagem a seguir, mostramos
esse tipo de estrutura:
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 33/86
Estrutura muitos-para-um.
Essa estrutura pode ser aplicada para fazer a análise de sentimentos e a
classificação de texto. No caso da análise de sentimentos, a entrada de
dados é uma frase, e a saída é uma classificação que expressa o
sentimento positivo ou negativo da frase.
Estrutura muitos-para-muitos
Esta estrutura recebe uma sequência de informações como entrada e
produz uma sequência de saídas recorrentes. Veja:
Estrutura muitos-para-muitos.
Um exemplo de aplicação dessa arquitetura é a tradução automática. As
RNN leem qualquer frase em um idioma de origem e, em seguida,
produzem a frase em um idioma de destino.
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 34/86
Existe, ainda, outra versão para a estrutura muitos-para-muitos, em que
o comprimento da entrada é igual ao da saída. Na imagem a seguir,
apresentamos um exemplo:
Outra versão de estrutura muitos-para-muitos.
Essa outra estrutura pode ser aplicada no problema de reconhecimento
de entidades nomeadas. Tal problema consiste em identificar elementos
no texto que sejam relevantes para a compreensão dentro de um
contexto. Um exemplo aplicado à segurança pública corresponde a
identificar acusados e vítimas dentro do texto do Boletim de Ocorrência.
Arquiteturas LSTM e GRU
As arquiteturas LSTM e GRU foram criadas como solução para tratar o
problema de desaparecimento de gradiente que ocorre nas redes
recorrentes tradicionais. Elas têm mecanismos internos, chamados
portas, que podem regular o fluxo de informações. Devido à importância
dessas arquiteturas, vamos analisá-las com mais detalhes.
GRU
Gate Recurrent Unit ou Unidade Recorrente Bloqueada.
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 35/86
LSTM
As RNN são apropriadas para trabalhar com dados baseados em
sequência, mas, à medida que as sequências aumentam, elas começam
a perder informações sobre a sequência de dados ao longo do tempo.
Como consequência, as saídas podem ser bem diferentes do que
esperávamos.
Para tratar o problema de perda de
informações, foi desenvolvida a arquitetura
de rede LSTM.
As LSTM têm a capacidade de lembrar de informações de dados
baseados em sequências bastante longas – esse é o motivo do nome
“memória longa” – e evitar problemas de dissipação do gradiente, que
pode ocorrer em redes neurais tradicionais treinadas pelo algoritmo
backpropagation. Normalmente, as LSTM são compostas por quatro
componentes:
Uma célula de memória
Guarda informações importantes por intervalos arbitrários de tempo.
Uma porta de entrada
Controla a entrada de informações em cada intervalo de tempo.
Uma porta de saída
Controla quanta informação é enviada para a próxima célula ou camada
superior.
Uma porta de esquecimento
Controla a quantidade de dados que serão perdidos em cada etapa de
tempo.
Cada porta está conectada a outra por meio de sua entrada e saída, e
várias conexões são recorrentes. Na imagem a seguir, apresentamos a
estrutura de uma LSTM:
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 36/86
Estrutura de uma LSTM.
Aqui, vemos muitos elementos estruturais que compõem a arquitetura
da LSTM. Vamos analisá-los com cuidado:

O símbolo representa blocos de memória,
chamados células, que compõem a LSTM.
Ct
Ct

O símbolo representa o estado oculto. Dois
estados são transferidos para a próxima célula: o
estado da célula e o estado oculto . O estado
da célula é a cadeia principal do fluxo de dados, o
que permite aos dados fluir parafrente sem ser
alterados.
ht
ht
Ct ht
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 37/86
Ainda há mais alguns passos.
 σ e tanh
Os símbolos σ e tanh representam,
respectivamente, as funções sigmoide e tangente
hiperbólica. Os dados podem ser adicionados ou
removidos do estado da célula por meio de portas
sigmoides. Uma porta é semelhante a uma camada
ou série de operações de matriz, que contêm pesos
individuais diferentes, representados pelo símbolo
W.

O símbolo representa a função de ativação da
porta de esquecimento. Sua fórmula é dada por:
ft
ft
ft = σ (Wf [ht−1, xt] + bf)

O símbolo representa o vetor candidato. Sua
fórmula é dada por:
~
Ct
~
Ct
~
Ct = tanh (WC [ht−1, xt] + bC)

O símbolo representa a função de ativação da
porta de entrada que será combinada com o vetor
candidato ( ). Sua fórmula é dada por:
it
it
~
Ct
it = σ (Wi [ht−1, xt] + bi)
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 38/86
Atenção!
As LSTM são projetadas para evitar o problema de dependência de
longo prazo, porque usam portas para controlar o processo de
memorização.
GRU
Uma arquitetura de RNN que pode ser vista como uma simplificação da
LSTM é a GRU. Ela combina as portas de esquecimento e de entrada em
uma única porta, que é chamada de porta de atualização (update gate).
Além disso, a GRU possui uma porta de redefinição (reset gate). Na
imagem a seguir, mostramos um diagrama simplificado da GRU:
Arquitetura básica da GRU.
Semelhante à LSTM, a GRU trata do problema da dissipação do
gradiente por meio de suas portas. Agora, vamos analisar um pouco
mais a função das portas da GRU:
 Precisamos calcular os valores da célula , de e
. O valor da célula é obtido pela fórmula:
Ct ot
ht Ct
Ct = ftCt−1 + it
~
Ct
 Por fim, os valores de e são obtidos pelas
fórmulas:
ot ht
ot = σ (Wo [ht−1, xt] + bo)
ht = ot tanh (Ct)
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 39/86
Esta porta é responsável pelas informações que serão passadas
adiante. A fórmula da porta de atualização para a etapa de
tempo (t) é dada por:
Isso significa que, quando x_t conecta-se à unidade de rede, ele
será multiplicado por seu próprio peso ( ). A mesma lógica se
aplica para , que contém as informações das unidades t-1
anteriores e é multiplicado por seu próprio peso ( ). Em
seguida, somamos os resultados das multiplicações e aplicamos
uma função de ativação sigmoide, que vai produzir um valor
entre 0 e 1.
O modelo usa esta porta para decidir quanto das informações
anteriores deve ser esquecido. A fórmula da porta de redefinição
é dada por:
Como podemos notar, essa fórmula é muito parecida com a da
porta de atualização. Basicamente, a diferença entre elas está
nos pesos. Como fizemos anteriormente, multiplicamos e
 por seus respectivos pesos, somamos os resultados e
aplicamos a função sigmoide.
Ainda precisamos tratar de mais dois passos: obter o conteúdo da
memória atual e a memória final na etapa de tempo atual. Então, vamos
analisar como esses passos são feitos:
Primeiro, começamos com o uso da porta de redefinição (reset
gate). Calculamos o novo conteúdo de memória da seguinte
forma:
Porta de atualização (update gate) 
zt = σ (Wzxt + Uzht−1)
Wz
ht−1
Uz
Porta de redefinição (reset gate) 
rt = σ (Wrxt + Urht−1)
ht−1
xt
Conteúdo da memória atual 
~
ht = tanh (Wxt + rt ⊙ Uht−1)
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 40/86
O símbolo é usado para representar o produto de Hadamard,
que, basicamente, multiplica os elementos correspondentes de
duas matrizes e obtém uma matriz de mesmas dimensões. Por
exemplo, vamos imaginar duas matrizes (A e B), ambas com
duas linhas e duas colunas. Agora, vamos aplicar o produto de
Hadamard:
A rede precisa calcular o vetor , que contém as informações da
unidade atual e as transmite para a rede. Para isso, ela utiliza a
porta de atualização por meio do conteúdo da memória atual e
das etapas anteriores. Isso é feito da seguinte maneira:
Todas essas etapas mostram como as GRU são capazes de armazenar
e filtrar as informações, usando suas portas de atualização e
redefinição. Dessa forma, a arquitetura GRU elimina o problema do
gradiente de desaparecimento, pois o modelo não está levando a nova
entrada todas as vezes, mas mantém as informações relevantes,
passando-as para as próximas etapas de tempo da rede.
RNN bidirecionais
Uma variação da arquitetura das RNN são as RNN bidirecionais. Elas
são formadas por uma composição de duas RNN que extraem
informações dos dados em dois sentidos distintos. Dessa forma, podem
extrair características das entradas anteriores para fazer predições
sobre o estado atual, semelhante às RNN convencionais, e extrair
informações sobre dados futuros para melhorar a precisão das
estimativas. Na imagem a seguir, apresentamos uma RNN bidirecional:
⊙
[ ] ⊙ [ ] = [ ]a11 a12
a21 a22
b11 b12
b21 b22
a11b11 a12b12
a21b21 a22b22
Conteúdo da memória final na etapa de tempo atual 
ht
ht = zt ⊙ ht−1 + (1 − zt) ⊙
~
ht
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 41/86
Estrutura geral de RNN bidirecionais.
As RNN bidirecionais são especialmente interessantes para PLN, pois é
mais fácil fazer uma predição sobre uma palavra no texto, quando
conhecemos o contexto. Para analisar um exemplo concreto, considere
a seguinte frase:
Eu quero _______ sobre redes neurais recorrentes bidirecionais.
Nosso objetivo é encontrar uma palavra que preencha a lacuna, de
modo que a frase faça sentido. Em que palavra você pensaria? Muito
provavelmente, você escolheria a palavra “aprender”.
Arquiteturas de redes
neurais recorrentes
Está na hora de nosso bate-papo sobre arquitetura das Redes Neurais
Recorrentes com especial destaque para as arquiteturas LSTM, GRU e
RNN bidirecionais. Vamos lá!

14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 42/86
Falta pouco para atingir seus objetivos.
Vamos praticar alguns conceitos?
Questão 1
Entre as aplicações das RNN estão o PLN e os processamentos de
séries temporais. Essas categorias de problemas estão presentes
em diversas situações do dia a dia. Assinale a alternativa que
justifique a adequação das RNN para PLN e séries temporais:
A
Quando o objetivo de uma aplicação é extrair
informações sobre a dependência dos dados, as
arquiteturas adequadas de RNN são um-para-muitos
e muitos-para-um, uma vez que usam o efeito
multiplicativo da informação.
B
Por possuírem arquiteturas do tipo um-para-um, as
RNN podem relacionar o dado de determinado
período com o dado do próximo e são ideais para
processamento de séries temporais.
C
As arquiteturas de múltiplas etapas têm a
capacidade de relacionar dados de diferentes
períodos e são ideais para classificação de
imagens.
D
As RNN extraem as características de dados
dependentes por meio do uso de informações
processadas em etapas anteriores.
E
As RNN obtêm a aderência aos dados sequenciais
por meio de uma arquitetura que combina dados de
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 43/86
Parabéns! A alternativa D está correta.
As diferentes arquiteturas de RNN são estruturadas para fazer a
persistência do aprendizado em etapas anteriores. Portanto, o
aprendizado é entendido como um processo contínuo. Isso faz com
que as RNN sejam adequadas para extrair informações de dados
sequenciais que são por natureza relacionados entre si, como são
os casos das séries temporais e da linguagem natural.
Questão 2
A LSTM é uma arquitetura das RNN que previne o problema da
dissipação do gradiente.Sua estrutura é constituída por portas com
objetivos específicos para o funcionamento da rede. Assinale a
alternativa correta sobre os itens que compõem a estrutura da
LSTM:
entrada e saída de forma isolada.
A
A complexidade dos dados de entrada é tratada
pelos componentes da LSTM por meio da função
ativação Softmax.
B
Para a LSTM, todas as informações são importantes
e consideradas em todas as etapas do
processamento por seus componentes.
C
O processamento dos dados é feito por meio da
execução de funções de ativação, que medem a
probabilidade de uma informação ser esquecida.
D
O principal objetivo dos elementos constituintes da
LSTM é garantir que as informações sejam enviadas
para a próxima etapa.
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 44/86
Parabéns! A alternativa E está correta.
A LSTM é formada por quatro componentes que são responsáveis
por memorizar e esquecer a informação, além de controlar a
entrada e saída das informações ao longo do tempo. Dessa forma,
a LSTM retém a informação que é, de fato, relevante para extrair as
características dos dados de treinamento e fazer generalizações.
3 - Aplicação em séries temporais
Ao �nal deste módulo, você será capaz de empregar RNN em
predição de séries temporais.
Ligando os pontos
Você sabia que as redes RNN são aplicadas com sucesso para
problemas de predição? Mas como isso pode ser feito no dia a dia? Para
respondermos a estas perguntas, vamos analisar algumas situações
práticas.
E
Um dos componentes da LSTM é responsável por
desconsiderar informações que não são úteis para
extrair informações do conjunto de treinamento.
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 45/86
A empresa Pague Certo S.A. atua no ramo de análise de precificação de
investimentos financeiros no setor de energia elétrica. Ela estuda as
séries históricas das diversas empresas de energia que negociam na
bolsa de valores e, a partir disso, faz uma predição dos preços dos
ativos negociados por essas empresas. Dessa forma, ele fornece
recomendações para seus clientes a respeito dos valores desses ativos.
Assim, alguns dessas negociações podem gerar uma oportunidade de
negócio, ou um grande problema, caso os ativos estejam precificados
acima do que, realmente, valem.
Para fazer essas estimativas de preços dos ativos, a Pague Certo
utilizava, até então, técnicas de estatística para análise de séries
temporais. No entanto, os gestores perceberam algumas limitações
dessas técnicas e passaram a procurar por novos métodos que fossem
mais flexíveis e auxiliassem os analistas financeiros a tomarem
decisões mais robustas. A solução que encontraram foi a utilização de
redes neurais recorrentes (RNNs). Essas redes têm uma estrutura
adequada para trabalhar com dados sequenciais, como é o caso de
séries temporais financeiras. Além disso, sua arquitetura permite extrair
características dos dados de forma similar à que um especialista faria.
Isso, por si só, já é uma vantagem, pois simula bem a forma como um
bom analista faria para analisar os preços dos ativos. Adiciona-se a
essa vantagem o fato de que utilizar as RNNs permite dar escalabilidade
ao processo de análise.
Como sempre, o início da incorporação das redes RNNs teve alguns
desafios que passam pela necessidade de aprender os conceitos,
arquiteturas e técnicas de treinamento e validação. No entanto, esses
desafios foram superados e, atualmente, a Pague Certo tem produzido
bons resultados para seus clientes.
E você, concorda com a decisão dos gestores da Pague Certo S.A. de
utilizar redes RNN para estimar os preços dos ativos do setor de
energia?
Após a leitura do case, é hora de aplicar seus conhecimentos! Vamos
ligar esses pontos?
Questão 1
Como você leu no texto, a Pague Certo S.A. utiliza redes RNN para
estimar preços de ativos do setor elétrico. Analisando a decisão
dos gestores, na sua visão, qual é o motivo da empresa ter
escolhido um segmento específico para aplicar as redes RNN?
A Devido à disponibilidade dos dados históricos.
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 46/86
Parabéns! A alternativa E está correta.
A Pague Certo S.A. fez a escolha por focar o aprendizado da rede
RNN no segmento de energia elétrica, com o objetivo de que a rede
pudesse se especializar em uma área e, assim, aumentar as suas
chances de acertar os preços dos ativos das empresas daquele
setor.
Questão 2
Como você leu no texto, a Pague Certo S.A. atua com estimativas
de precificação de ativos de empresas do setor elétrico negociados
na bolsa de valores. Na sua visão, qual o motivo que levou a Pague
Certo a escolher as redes RNN para esse objetivo?
B Na verdade, não há um motivo específico.
C
Devido à grande diversidade de dados disponíveis
no setor de energia elétrica.
D
Provavelmente, foi uma estratégia para dominar
uma área e expandir para outras.
E
Para aumentar as chances da rede aprender o
comportamento dos dados.
A
Porque as redes RNN não são muito sensíveis aos
aspectos estruturais de arquitetura.
B
Porque as redes RNN funcionam muito bem para
predição de séries temporais.
C
Porque há preferência dos gestores da Pague Certo
por esse tipo de modelo
D
Porque foi uma maneira de destacar a empresa em
relação aos concorrentes.
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 47/86
Parabéns! A alternativa B está correta.
A Pague Certo S.A. escolheu utilizar redes RNNs para estimar
valores de preços de ativos porque que elas funcionam muito bem
para esse tipo de aplicação.
Questão 3
Considere o seguinte cenário: você foi contratado pela Pague Certo S.A.
para auxiliar a expandir os negócios da empresa sem mudar o foco de
atuação. Com base em sua experiência, como você cumpriria essa
missão?
Digite sua resposta aqui
Chave de resposta
A Pague Certo S.A. atua com predição de preços de ativos de
empresas do setor elétrico negociados na bolsa de valores
utilizando redes RNNs. Portanto, é natural procurar outros
mercados, como o de petróleo e gás para aplicar o mesmo
processo com alguns ajustes. Dessa forma, não há uma grande
mudança na forma de trabalhar da empresa e, ainda assim, há
uma expansão dos negócios, possibilitando a aquisição de novos
clientes.
RNN para séries temporais
Podemos encontrar aplicações de séries temporais em muitas áreas,
tais como finanças e estimativas de procura e oferta. Basicamente, os
E
Porque todas as empresas que trabalham com
predição estão migrando para usar técnicas de
inteligência artificial.
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 48/86
problemas de séries temporais são formados por um vetor de valores
históricos:
Nosso objetivo é estimar os valores da série para períodos futuros, ou
seja, queremos encontrar valores aproximados para , ...,
com base nos dados históricos. Esse tipo de problema é bastante difícil
na prática, pois as séries temporais são compostas por informações
que os modelos não incorporam. Por exemplo, no caso das séries
temporais financeiras, fatores como a ação dos agentes tomadores de
decisão e a configuração do cenário econômico afetam o
comportamento dos valores da série. O uso dos modelos de predição é
um instrumento para apoiar outras linhas de estudos.
Para fazer as estimativas dos pontos de uma série temporal, temos à
disposição duas categorias de métodos de predição:
Métodos estatísticos
tradicionais
X = [x1, . . . , xT ]
xT+1, xT+2
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 49/86
Métodos baseados em
modelos de aprendizado de
máquina
Em nosso caso, vamos estudar como aplicar RNN para fazer essas
estimativas com a utilizaçãode:
Linguagem de programação muito utilizada para aplicações de
ciência de dados e aprendizado de máquina. Com ela, podemos
usar muitos recursos que facilitam o desenvolvimento de nossos
projetos.
É possível baixar e instalar uma versão da linguagem Python
para a máquina local. Se você fizer isso, sugerimos que utilize o
PyCharm ou uma plataforma on-line como o Google Colab, que
foi utilizada para desenvolver o exemplo que veremos um pouco
mais adiante. O Google Colab já disponibiliza um ambiente
configurado que facilita iniciar a implementação e os testes do
projeto.
Plataforma de código aberto que disponibiliza bibliotecas com
funções que facilitam a criação e o treinamento das redes
Linguagem Python 
Framework TensorFlow 
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 50/86
neurais e de outros modelos de aprendizado de máquina. Sem a
ajuda de um framework como o TensorFlow, teríamos de
implementar todos os detalhes das RNN. Podemos imaginar
como seria complicado implementarmos as portas de uma
LSTM, os algoritmos de otimização, além de diversos detalhes
que nos afastariam do que realmente queremos realizar: como
aplicar RNN para fazer a análise de uma série temporal.
Implementação para
processamento de séries
temporais
Agora, vamos estudar o passo a passo da implementação da arquitetura
de um modelo de RNN para fazermos uma análise de uma série
temporal. Para isso, vamos utilizar o Google Colab, a fim de desenvolver
nosso código em Python com o framework TensorFlow.
Comentário
Uma das vantagens do Google Colab é que podemos trabalhar com
trechos de código e, assim, visualizar com mais clareza os detalhes de
nossa implementação.
Para fins didáticos, o projeto está dividido nos seguintes passos:
1. Geração de dados;
2. Visualização dos dados;
3. Normalização dos dados;
4. Separação dos conjuntos de dados;
5. Preparação de dados para RNN;
6. Arquitetura do modelo RNN;
7. Visualização da arquitetura do modelo;
8. Compilação do modelo;
9. Treinamento do modelo;
10. Salvamento do modelo;
11. Avaliação do modelo;
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 51/86
12. Impressão do erro de treinamento;
13. Predição de dados.
Veremos cada um dos passos a seguir.
Passo 1: geração de dados
Geramos os dados aleatórios para a série temporal, de modo que
estejam distribuídos uniformemente. A distribuição uniforme recebe
como parâmetros:

A quantidade de pontos da série
que queremos estudar.

Os valores mínimo e máximo que
os dados podem assumir ao longo
do tempo.
O código para geração de dados é:
Python 
Usamos o pacote numpy para fazer a geração dos dados. Em especial, o
comando “np.random.seed” é um número usado como gerador de
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 52/86
valores pseudoaleatórios. Os dados da série temporal estão
armazenados na variável y. Usamos a variável x para armazenar o
período de cada ponto da série temporal.
Passo 2: visualização dos dados
Depois que geramos os dados, vamos visualizá-los por meio das
funções da biblioteca “matplotlib.pyplot”. O código que implementamos
para visualização dos dados é:
Python 
No início do código, importamos a biblioteca “matplotlib.pyplot”. Depois,
fazemos algumas parametrizações para exibir os dados. A saída do
programa é dada pelo gráfico a seguir:
Gráfico: Cinco registros da base de treinamento.
Elaborado por: Sérgio Monteiro / Plataforma on-line Google Colab.
No eixo horizontal, estão os valores da variável x, e, no eixo vertical,
estão os valores de y.
Passo 3: normalização dos dados
Os dados da série temporal estão entre 20 e 40 unidades de valor.
Podemos pensar nessas unidades como valores monetários. Então,
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 53/86
vamos fazer a normalização dos dados, para que fiquem no intervalo 0 a
1. O código para normalização dos dados é:
Python 
Assim, conseguimos visualizar os dados de uma forma mais clara,
como podemos observar no gráfico a seguir:
Gráfico: Dados normalizados da série temporal.
Elaborado por: Sérgio Monteiro / Plataforma on-line Google Colab.
Passo 4: separação dos conjuntos
de dados
Agora, precisamos organizar os dados para treinamento e validação do
modelo. Vamos usar os dados de treinamento, para que o modelo
extraia características da série temporal e seja capaz de fazer
generalizações. Já os dados de testes são utilizados para avaliarmos a
qualidade das predições do modelo. O código para separação dos
conjuntos de dados é:
Python 
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 54/86
Como podemos ver na primeira linha do código, separamos 80% dos
dados para treinamento. Nas últimas duas linhas do código, usamos a
função zip, que agrupa os dados como pares ordenados.
A fim de visualizar como os dados estão organizados, escrevemos o
código a seguir para imprimir os cinco primeiros registros no conjunto
de treinamento:
Python 
Passo 5: preparação de dados para
RNN
O próximo passo é organizar a forma como os dados da série serão
enviados para nosso modelo. Vamos usar apenas alguns dados do
histórico para explicar o dado de determinado instante de tempo. Por
exemplo, usaremos os dados dos períodos e para explicarmos ot1 t2
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 55/86
dado do período . O código para fazer essa organização dos dados da
série é:
Python 
Agora, precisamos chamar a função ‘preparar_dados’. Para isso,
implementamos o código a seguir:
Python 
Logo no início desse último trecho de código, aparece a variável
look_back. É essa variável que determina quantos dados históricos
utilizaremos para explicar o dado da série em determinado período. Para
entender melhor a saída, escrevemos o seguinte trecho de programa:
t3
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 56/86
Python 
Vamos interpretar esse resultado. Cada linha indica um registro do
conjunto de treinamento. No caso da primeira linha, significa que nosso
modelo vai usar os dados 0.18796634 e 0.62472579 para explicar o
dado 0.43770267010016545.
Passo 6: arquitetura do modelo
RNN
Agora, vamos construir o modelo de RNN. A arquitetura que
implementamos utiliza uma camada de entrada, duas camadas LSTM e
uma camada Dropout para prevenir o overfitting (superespecialização).
Nossa arquitetura é de modelo sequencial. Por isso, teremos de
importar o pacote “Sequential” do tensorflow.keras. O código que
implementamos é dado por:
Python 
Vamos observar alguns detalhes do modelo. A primeira camada LSTM
possui 100 unidades, e a camada Dropout recebe como parâmetro 0.2.
Isso significa que 20% das unidades da camada LSTM serão
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 57/86
“desativadas”, de modo a evitar que a rede fique superespecializada nos
dados de treinamento.
Passo 7: visualização da
arquitetura do modelo
O TensorFlow permite que possamos visualizar a arquitetura de nossa
implementação. Para isso, basta implementarmos o código dado por:
Python 
A saída do programa mostra a arquitetura do modelo, como podemos
ver na imagem a seguir:
Arquitetura de nossa implementação de RNN.
Passo 8: compilação do modelo
Antes de iniciar o treinamento do modelo, precisamos compilá-lo. Aqui,
ainda precisamos escolher o método para medida de erro e o algoritmo
para minimização do erro. No caso, escolhemos a função de erro “raiz
quadrada do erro médio” e o algoritmo de otimização ADAM. O código é
dado por:
Python 
14/02/2024, 19:45Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 58/86
Passo 9: treinamento do modelo
Finalmente, podemos iniciar a etapa de treinamento. Para isso, basta a
função “fit”. A seguir, apresentamos o código de treinamento do modelo:
Python 
Devemos notar a última linha do código, que separa 30% dos dados de
treinamento para fazer a validação do modelo. Aqui, cabe um
comentário: os dados de validação são usados para fazer ajustes nos
hiperparâmetros do modelo.
Outro ponto que devemos observar é que, no treinamento do modelo,
guardamos o histórico para analisá-lo posteriormente. A saída do
treinamento é dada por:
Python 
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 59/86
Perceba algumas informações muito importantes em cada iteração da
saída: época, valor da função de perda e valor da função de perda
aplicada para os dados de validação. Para facilitar a visualização das
informações de saída do treinamento, fazemos a conversão do histórico
de treinamento para um dataframe. O código é dado a seguir:
Python 
A saída da execução é dada pela seguinte tabela:
Tabela: Histórico do treinamento do modelo.
Elaborada por: Sérgio Monteiro / Plataforma on-line Google Colab.
Passo 10: salvamento do modelo
Nosso próximo passo é salvar o modelo para poder carregá-lo em outro
momento. O código é dado por:
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 60/86
Python 
Passo 11: avaliação do modelo
Agora que fizemos o treinamento do modelo, temos de testá-lo. Para
isso, chamamos a função “evaluate”, passando para ela os valores de
teste como parâmetros. O código que implementamos é dado por:
Python 
Após a execução do código, obtemos a seguinte saída:
1/1 [==============================] - 0s 19ms/step - loss:
0.0805
loss: 0.0804748684167862
Isso significa que o modelo tem um erro de “0.0804748684167862”.
Devemos lembrar que a qualidade do modelo será melhor quanto mais
próximo de zero for a função de erro.
Passo 12: impressão do erro de
treinamento
Agora, vamos visualizar como foi o comportamento da função de erro
ao longo do treinamento do modelo. O código é dado por:
Python 
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 61/86
O resultado do código é apresentado no gráfico a seguir:
Gráfico: Comportamento da função de erro ao longo do treinamento.
Elaborado por: Sérgio Monteiro / Plataforma on-line Google Colab.
Como podemos ver, a função de erro, realmente, reduz ao longo das
épocas.
Passo 13: predição de dados
Com o modelo treinado, vamos passar para a fase de predição dos
dados. Vamos usar os dados que separamos para fazer o teste. O
código que fizemos é o seguinte:
Python 
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 62/86
Finalmente, vamos analisar a saída da predição do modelo. Para isso,
precisamos implementar o código para visualizar o comportamento de
nosso modelo em relação aos dados de teste:
Python 
No gráfico a seguir, mostramos o resultado:
Gráfico: Imagem usada para teste.
Elaborado por: Sérgio Monteiro / Plataforma on-line Google Colab.
Analisando o gráfico, podemos ver que o modelo extraiu características
sobre o movimento da série. Mas ele precisa passar por ajustes para
melhorar a escala. É um excelente exercício fazer mudanças dos
parâmetros do modelo e estudar como ele se comporta. Essa é a parte
mais complicada, pois cada problema tem características particulares
que tornam a parametrização um desafio.

14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 63/86
Predição de séries
temporais com RNN
Está na hora de nosso bate-papo sobre os conceitos que relacionam
Redes Neurais Recorrentes e séries temporais, demonstrando uma
aplicação prática com emprego do framework TensorFlow. Vamos lá!
Falta pouco para atingir seus objetivos.
Vamos praticar alguns conceitos?
Questão 1
Uma das aplicações de RNN é na análise de séries temporais. Por
exemplo, podemos fazer o estudo de séries temporais na área de
finanças. Assinale a alterativa correta a respeito da aplicação de
RNN para séries temporais financeiras:
A
Como as RNN capturam informações sobre os
dados sequenciais, elas podem ser utilizadas para
tomar decisões de investimentos sem a
necessidade de interferência humana.
B
As RNN auxiliam no entendimento do
comportamento da série e, junto com outros
estudos, tornam-se um apoio na tomada de decisão.
C
As séries financeiras são muito difíceis de serem
estimadas. Por isso, as RNN não devem ser
aplicadas para tomada de decisão.
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 64/86
Parabéns! A alternativa B está correta.
Podemos encontrar aplicações de séries temporais em diversas
áreas, entre as quais está a de finanças. Séries financeiras são
especialmente difíceis de serem estimadas, pois são formadas por
elementos não considerados por RNN. Se fosse algo simples, quem
usasse as RNN para estimativas de séries financeiras sempre
acertaria na composição de seus investimentos. Ainda assim, as
RNN são importantes nesses estudos para capturar
comportamentos históricos e fornecer material aos especialistas
para que possam construir cenários e tomar as decisões mais
adequadas.
Questão 2
Aplicações de RNN podem ser implementadas usando recursos
computacionais. Um desses recursos é o TensorFlow, que facilita a
construção da arquitetura de um modelo. Em relação ao
desenvolvimento de modelos de RNN aplicados para análise de
séries temporais com a utilização do TensorFlow, assinale a
alternativa correta:
D
Ao aplicar RNN para fazer estudos de séries
financeiras, é possível ajustar o modelo para
produzir estimativas precisas.
E
Séries financeiras não são influenciadas pelo
comportamento histórico. Portanto, é inadequado
utilizar RNN para fazer o estudo delas.
A
O TensorFlow já vem instalado com a linguagem
Python. Desse modo, é mais fácil focar atenção aos
detalhes da arquitetura do modelo.
B
O TensorFlow auxilia na avaliação de um modelo,
mas é responsabilidade do desenvolvedor
implementar detalhes sobre as RNN, como a porta
de esquecimento, no caso da LSTM.
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 65/86
Parabéns! A alternativa C está correta.
O TensorFlow é o framework mais importante aplicado para
algoritmos de aprendizado de máquina. Ele facilita a
implementação de um projeto, pois permite que o programador
possa focar seu esforço na construção da arquitetura do modelo.
Ainda assim, o desenvolvedor precisa entender os conceitos de
RNN e do cenário de aplicação para fazer parametrizações e
ajustes nos dados e no modelo.
4 - Aplicação em Processamento de
Linguagem Natural
Ao �nal deste módulo, você será capaz de empregar RNN em
Processamento de Linguagem Natural.
C
Apesar de o TensorFlow auxiliar na implementação
do projeto, é responsabilidade do desenvolvedor
fazer a separação dos dados para treinamento e
testes.
D
Uma das preocupações do desenvolvedor ao usar
uma LSTM com o TensorFlow é estabelecer a razão
entre portas de esquecimento e de atualização.
E
Uma das vantagens de usar o TensorFlow para
implementar RNN é que o modelo se ajusta para
melhorar sua precisão.
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 66/86
Ligando os pontos
Você sabia que uma das aplicações das redes RNN é para o
processamento de linguagem natural? Mas o que isso significa em
termos reais? Para respondermos a estas perguntas, vamos analisar
algumas situações práticas.
A empresa Tradução S.A.trabalha com tradução de texto de linguagem
natural livre para textos com termos técnicos. Apesar de existirem
soluções semelhantes no mercado, ela se destaca por traduzir textos
que utilizam expressões coloquiais e gírias utilizadas em ambientes de
manutenção de equipamentos. Esse tipo de texto é bastante complexo,
pois tem significado técnico importante, que é compreendido apenas
pelas pessoas que atuam naquele contexto. Por exemplo, a expressão
“motor babando” significa que está ocorrendo um “vazamento de óleo
no motor”. Semelhante a esse exemplo, existem muitos outros que
possuem um significado importante e, quando traduzidos, geram a
oportunidade de produzir análises ricas que possibilitam descobrir
padrões de problemas recorrentes. Essa solução da Tradução S.A.
possui alto valor agregado, mas nem sempre foi, assim.
Até pouco tempo, a tradução dos textos era feita por especialistas. Na
prática, o processo era lento, subjetivo e caro. Era comum ocorrer
situações em que dois especialistas traduziam de forma diferente o
mesmo texto. Depois de perceber o problema, os gestores da Tradução
S.A. contrataram um professor universitário que trabalhava com
problemas semelhantes com finalidades acadêmicas. Esse professor
viu uma oportunidade muito interessante de usar seus conhecimentos
para resolver problemas reais. Tentou aplicar as técnicas que dominava,
mas não foi bem-sucedido de imediato. Ele chegou à conclusão de que
não era só uma questão de aplicar a melhor técnica, mas de
compreender o contexto da aplicação e fazer ajustes. Depois de mais
algumas tentativas e muito estudo, ele conseguiu desenvolver uma
solução robusta. O resultado de aplicar as RNNs para fazer a tradução
de textos coloquiais para termos técnicos superou a expectativa inicial
dos gestores da empresa e, assim, passaram a utilizar essas redes nas
suas soluções e o professor, agora, faz parte do quadro permanente da
empresa, ocupando um papel de destaque na área de pesquisa e
desenvolvimento aplicados.
E você, consegue visualizar outras aplicações para redes RNN
relacionadas ao processamento de linguagem natural?
Após a leitura do case, é hora de aplicar seus conhecimentos! Vamos
ligar esses pontos?
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 67/86
Questão 1
Como você leu no texto, o fundador da Tradução S.A. utilizava
outras soluções para realizar o tratamento de textos em linguagem
livre antes de utilizar as redes RNN. Na sua opinião, o que motivou
essa mudança?
Parabéns! A alternativa E está correta.
A solução que a Tradução S.A. utilizava antes das RNNs envolvia
especialistas no assunto. Isso tinha vários problemas, desde
encontrar esses especialistas, até mesmo na subjetividade das
opiniões deles que, em alguns momentos, eram conflitantes. A
utilização das redes RNN auxiliou na padronização e aumento de
escala do processo de tradução da empresa.
Questão 2
Em dado momento, os gestores da Tradução S.A. perceberam a
necessidade de modificar o processo de tratamento dos textos e
contrataram um professor universitário para auxiliá-los nesse
processo. Na sua análise, o que teria levado os gestores a tomar
essa decisão?
A
A utilização das redes RNNs foi uma decisão de
publicidade da empresa.
B
Devido a simplicidade de aplicar redes RNN para
tratar esse tipo de problema.
C
É muito simples encontrar profissionais que sabem
trabalhar com redes RNN.
D
O processo de aplicar redes RNNs não exigiu
nenhum tipo de esforço inicial.
E
A solução anterior era subjetiva e difícil de ser
obtida.
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 68/86
Parabéns! A alternativa B está correta.
Está claro que a motivação dos gestores da Tradução S.A. foi a
necessidade de melhorar a solução que tinham, pois, além de cara
era subjetiva. Eles contrataram um professor universitário porque
entenderam que não se tratava de uma mera questão de trocar uma
solução por outra e, mesmo não sendo especialista no tratamento
de texto em linguagem livre voltado para manutenção, o professor
possuía conhecimento e metodologia de estudo suficientes para
aprofundar no assunto e desenvolver uma nova solução, como o
que aconteceu na prática.
Questão 3
Considere o seguinte cenário: você tem uma entrevista de emprego na
Tradução S.A. e deseja causar uma boa impressão, pois está muito
interessado em aprender como utilizar redes RNNs para tratar textos em
linguagem natural na prática. Com base em sua experiência, como você
se prepararia para essa entrevista?
A
Porque, em termos de custo, faz mais sentido
contratar um profissional para desenvolver uma
solução com RNN do que adquirir uma solução
pronta do mercado.
B
Por entender o potencial de agregação de valor e a
complexidade das redes RNNs.
C Porque foi a oportunidade que surgiu no momento.
D
Pela vasta experiência do professor em utilizar as
redes RNNs para fazer tradução de texto em
linguagem livre aplicado para manutenção.
E
Devido às claras oportunidades e processo
determinístico de utilizar redes RNNs para
tratamento de texto em linguagem natural.
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 69/86
Digite sua resposta aqui
Chave de resposta
A primeira coisa a ser feita é aprender sobre a história da empresa,
sua filosofia de trabalho, área de atuação e perfis dos clientes.
Junto com isso, aprofundar o conhecimento nos conceitos de
redes RNNs e suas aplicações voltadas para tratamento de
linguagem natural, além de estudar bibliotecas computacionais
que disponibilizem funções para trabalhar especificamente com
redes RNNs. Feito esse dever de casa, preparar-se para a
entrevista e demonstrar interesse, de forma que seja viável para a
empresa fazer a sua contratação.
Aplicação de RNN para PLN
O Processamento de Linguagem Natural (PLN) consiste em um
conjunto de técnicas para tratamento automático de fala e texto. Alguns
exemplos de PLN são a análise de sentimentos, a tradução de texto e a
composição literária. Os problemas de PLN envolvem dados
sequenciais.
Como já estudamos até aqui, as RNN tratam exatamente esse tipo de
problema (SUSTSKEVER; VINYALS; LE, 2014). O primeiro passo para que
as RNN possam trabalhar com PLN é aplicarmos algumas técnicas de
transformações, pois essas redes neurais precisam de uma estrutura
matemática para trabalhar. Algumas dessas técnicas mais conhecidas
são:
Processo de separar um texto em palavras. Por exemplo,
considere o seguinte texto:
x ='o futebol é o esporte mais conhecido do país'
Tokenização 
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 70/86
Sua tokenização por espaços é:
x_t =['o','futebol','é','o','esporte','mais','conhecido','do','país' ]
Forma de obter o radical de palavra base por meio da remoção
de prefixos e sufixos. Alguns exemplos de Stemming são:
Stemming(rapidamente) = rapida
Stemming(previsto) = visto
Remove apenas as desinências flexionais das palavras. É muito
útil para fazermos buscas sem a necessidade de nos
preocuparmos com as diversas flexões que uma palavra pode
ter. Alguns exemplos de lematização são:
Lematização(sabia, soube, saberei) = saber
Lematização(carro, carrinho, carrão) = carro
Nesta abordagem, as palavras recebem valores +1 ou -1 para
indicar uma interpretação semântica oposta. Ela é bastante útil
na análise de sentimentos. A seguir, apresentamos um exemplo
dessa técnica:
Tabela: Mapeamento entre palavras e sentimentos.
Elaborada por: Sérgio Monteiro.
Stemming 
Lematização 
Geração de listas polarizadas 
14/02/2024, 19:45 Redes Neurais Recorrentes
https://stecine.azureedge.net/repositorio/00212ti/04165/index.html# 71/86
Hot code e vetores de
palavras
Agora, vamos abordar duas técnicas que merecem uma atenção
especial: hot code e vetores de palavras.

Continue navegando