Baixe o app para aproveitar ainda mais
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.
Compartilhar