Prévia do material em texto
<p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 1/53</p><p>Redes neurais feedforward</p><p>Prof. Fernando Cardoso Durier da Silva, Prof. Sérgio Assunção Monteiro</p><p>Descrição</p><p>Conceitos de redes neurais feedforward e sua aplicação em processos</p><p>de descoberta de conhecimento em bases de dados.</p><p>Propósito</p><p>Conhecer redes neurais feedforward é fundamental para o profissional</p><p>da área de ciência de dados, uma vez que os resultados oriundos de sua</p><p>aplicação permitem descobrir padrões prévios, classificar novas</p><p>observações ou calcular resultados de regressões.</p><p>Preparação</p><p>Para a compreensão dos exemplos e sua reprodução, é importante que</p><p>você tenha instalado, em sua máquina de estudos, o Python na versão</p><p>3.8 ou acima, e as bibliotecas Pandas, Numpy, Sklearn e Plotly. Será</p><p>necessária também uma ferramenta para execução de notebooks, como</p><p>Jupyter, que pode ser instalado como uma biblioteca do Python, além do</p><p>notebook que será utilizado na parte prática do tema.</p><p>Objetivos</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/docs/notebook.zip</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 2/53</p><p>Módulo 1</p><p>Conceitos básicos</p><p>Identificar conceitos básicos de redes neurais artificiais.</p><p>Módulo 2</p><p>Algoritmo de backpropagation</p><p>Descrever o funcionamento do algoritmo de backpropagation e do</p><p>otimizador de gradiente descendente.</p><p>Módulo 3</p><p>Tensor�ow/Keras</p><p>Aplicar redes neurais feedforward usando Tensorflow/Keras.</p><p>Na área de inteligência artificial (IA), temos dois grandes grupos de</p><p>conhecimento, um chamado de inteligência artificial simbólica e</p><p>outro de inteligência artificial subsimbólica. Basicamente, o que os</p><p>difere é o processo de aprendizado e, ainda que ambos se</p><p>enquadrem em aprendizado supervisionado e não supervisionado,</p><p>o tipo de processamento varia.</p><p>Nos modelos simbólicos, temos o aprendizado baseado em regras,</p><p>propriedades e lógica; nos modelos subsimbólicos, temos o</p><p>aprendizado direto dos dados, ou a experiência, uma vez que esses</p><p>modelos não precisam de etapas de pré-processamento para</p><p>funcionar, pois isso já está "embutido" em seu funcionamento. As</p><p>redes neurais artificiais, por exemplo, pertencem ao grupo de IA</p><p>subsimbólica.</p><p>Introdução</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 3/53</p><p>Frank Rosenblatt (1928-1971)</p><p>Psicólogo americano conhecido no campo da inteligência artificial</p><p>como criador do perceptron. Por vezes, é chamado de pai do</p><p>aprendizado profundo, juntamente com outros pesquisadores de</p><p>renome.</p><p>1 - Conceitos básicos</p><p>Ao �nal deste módulo, você será capaz de identi�car conceitos básicos de redes neurais</p><p>arti�ciais.</p><p>Um dos primeiros modelos de IA subsimbólica foi o perceptron,</p><p>criado em 1958, por Frank Rosenblatt, no laboratório aeronáutico</p><p>da Universidade de Cornell. O perceptron simulava um neurônio</p><p>que, assim como a sua contraparte biológica, tinha entradas e</p><p>saídas por onde os estímulos passam, e uma função de ativação</p><p>que leva entradas a um domínio desejado, de camada em camada,</p><p>segundo o conjunto de dados. Individualmente, cada perceptron</p><p>pode ser encarado como um classificador linear. O conjunto desses</p><p>neurônios é uma rede neural artificial do tipo alimentação avante</p><p>(feedforward), em que a saída de uma camada é usada como</p><p>entrada para a próxima camada.</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 4/53</p><p>Ligando os pontos</p><p>Você sabe o que é uma rede neural artificial? Sabe que ela pode ser</p><p>muito útil em diversas situações práticas? Para respondermos a essas</p><p>perguntas, vamos analisar o caso abaixo.</p><p>A empresa Pesquisa Aplicada S.A. (empresa fictícia) atua no ramo de</p><p>manutenção preditiva de equipamentos de grande porte aplicados à</p><p>mineração. Seu portfólio de clientes é composto por empresas de</p><p>mineração que fazem a extração e o transporte de minério. Esses</p><p>clientes utilizam equipamentos que possuem sistemas embarcados que</p><p>armazenam os dados gerados por diversos sensores. Além disso, a</p><p>Pesquisa Aplicada S.A. tem um time diversificado de profissionais que</p><p>atua na área de tecnologia, relacionamento com o cliente e na pesquisa</p><p>aplicada.</p><p>Até recentemente, os dados dos equipamentos eram processados e</p><p>tratados por métodos estatísticos com foco nos modelos de séries</p><p>temporais. No entanto, os resultados produzidos por esses métodos</p><p>sempre demandavam muita atenção posteriormente de especialistas.</p><p>Um dos integrantes da Pesquisa Aplicada S.A. começou a pesquisar por</p><p>outras formas mais adequadas para tratar esses dados e, nessa busca,</p><p>conheceu os métodos de redes neurais artificias (RNA), que são</p><p>modelos computacionais que tem como principal característica simular</p><p>o comportamento do sistema neural biológico para generalizar</p><p>resultados a partir de um processo de treinamento.</p><p>Depois de estudar os conceitos e como os modelos de RNA funcionam,</p><p>o pesquisador passou a realizar testes nos dados dos equipamentos.</p><p>Ele apresentou os resultados para os demais integrantes da empresa e</p><p>todos ficaram surpresos com a qualidade do que havia sido produzido.</p><p>Um dos questionamentos feitos para o pesquisador foi se os resultados</p><p>foram gerados pelos especialistas nos equipamentos. O pesquisador</p><p>respondeu: “não, pois foi por isso mesmo que utilizei, modelos de redes</p><p>neurais artificiais”. Ao final, os dirigentes da Pesquisa Aplicada S.A.</p><p>ficaram satisfeitos com o que foi produzido e passaram a investir no</p><p>desenvolvimento de soluções com RNA para analisar os dados dos</p><p>equipamentos.</p><p>E você, concorda com a decisão dos dirigentes da Pesquisa Aplicada</p><p>S.A.?</p><p>Após a leitura do case, é hora de aplicar seus conhecimentos! Vamos</p><p>ligar esses pontos?</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 5/53</p><p>Questão 1</p><p>A Pesquisa Aplicada S.A. encontrou uma oportunidade de atuação</p><p>no mercado de mineração. Em especial, na manutenção preditiva de</p><p>equipamentos de grande porte. No seu ponto de vista, qual foi a</p><p>condição fundamental que viabilizou essa oportunidade de</p><p>atuação?</p><p>Parabéns! A alternativa A está correta.</p><p>A questão mais básica para poder atuar com métodos preditivos é</p><p>ter à disposição dados confiáveis para serem analisados. Sem</p><p>dados, não há como métodos de séries temporais ou de redes</p><p>neurais artificiais produzirem resultados úteis.</p><p>Questão 2</p><p>O cenário descrito no estudo de caso de Pesquisa Aplicada S.A.</p><p>destaca a possibilidade de pesquisar e produzir um resultado com a</p><p>utilização de métodos de redes neurais. Como você atribui essa</p><p>abertura para a utilização de um novo método?</p><p>A Os sistemas dos equipamentos gerarem dados.</p><p>B A utilização de métodos de séries temporais.</p><p>C</p><p>Contar com especialistas na manutenção preditiva</p><p>de equipamentos.</p><p>D</p><p>Atuar no segmento de mercado que investe em</p><p>manutenção preditiva.</p><p>E Contar com profissionais com diferentes formações.</p><p>A</p><p>É devido ao conhecimento comum de que métodos</p><p>de redes neurais artificiais são reconhecidamente</p><p>melhores do que os de séries temporais.</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 6/53</p><p>Parabéns! A alternativa C está correta.</p><p>Existem excelentes métodos para resolver problemas práticos que</p><p>são pouco utilizados no mercado. Em especial, pela falta de uma</p><p>cultura das empresas de investirem em pesquisa aplicada. No caso</p><p>da Pesquisa Aplicada S.A., fica evidente que esta cultura de investir</p><p>em pesquisa favoreceu o estudo e a aplicação dos métodos de</p><p>redes neurais para resolver problemas práticos.</p><p>Questão 3</p><p>Considere o seguinte cenário: você foi contratado pela Pesquisa</p><p>Aplicada S.A. para estudar e apresentar os principais modelos de redes</p><p>neurais artificiais e como eles podem ajudar a empresa a melhorar a</p><p>qualidade dos serviços dela. Se o resultado do seu trabalho for bem-</p><p>sucedido, você poderá liderar</p><p>um projeto de aplicação de redes neurais.</p><p>Que estratégia você adotaria para cumprir essa missão?</p><p>Digite sua resposta</p><p>Chave de resposta</p><p>B</p><p>É provável que o pesquisador que propôs a</p><p>utilização de métodos de redes neurais artificiais</p><p>exerça grande influência dentro da Pesquisa</p><p>Aplicada S.A.</p><p>C</p><p>Deve-se à cultura da empresa pela busca de</p><p>métodos eficientes para resolver problemas</p><p>práticos.</p><p>D</p><p>Os métodos de séries temporais são antigos e não</p><p>produzem bons resultados.</p><p>E</p><p>A empresa percebeu a necessidade de acompanhar</p><p>a tendência do mercado de utilizar métodos de</p><p>redes neurais artificiais.</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 7/53</p><p>A primeira ação a ser tomada é levantar quais são os serviços</p><p>prestados pela Pesquisa Aplicada S.A. e quais são as</p><p>necessidades de melhoria. Em seguida, fazer um levantamento</p><p>dos modelos de redes neurais artificiais e encontrar</p><p>correspondências de casos bem-sucedidos que possam ser</p><p>aplicados aos serviços da empresa. Por último, é fundamental</p><p>fazer um estudo de viabilidade para demonstrar para os</p><p>tomadores de decisão da empresa que a aplicação de redes</p><p>neurais para prestação de serviços é possível.</p><p>Tipos de redes neurais arti�ciais</p><p>Existem vários tipos de redes neurais, com arquiteturas e poderes</p><p>computacionais diferentes, como:</p><p></p><p>Redes neurais convolucionais</p><p></p><p>Redes Neurais recorrentes</p><p></p><p>Redes neurais feedforward</p><p>A área de redes neurais é muito vasta e sempre está caminhando para</p><p>novas evoluções e variações de modelos, dependendo apenas de quais</p><p>problemas vamos tentar solucionar com essas redes. A seguir,</p><p>conheceremos um pouco mais sobre as redes neurais mencionadas.</p><p>Redes neurais convolucionais</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 8/53</p><p>As redes neurais convolucionais (convolutional neural networks ou</p><p>CNN) são redes muito utilizadas em processamento de imagens. Sua</p><p>arquitetura é composta de camadas de entrada (input), saída (output) e</p><p>camadas escondidas (hidden ou camadas ocultas) diferenciadas dos</p><p>demais tipos, por contarem com filtros, normalmente matrizes que</p><p>“deslizam” sobre a entrada de dados. Essas redes mapeiam de forma</p><p>equivariante os pesos e os filtros para as camadas subsequentes, por</p><p>isso, são invariantes ao espaço e ao deslocamento. A imagem a seguir</p><p>ilustra o funcionamento dessas redes.</p><p>Rede Neural Convolucional.</p><p>A grande vantagem desse tipo de rede neural é sua maior autonomia.</p><p>Para processamentos de imagem, por exemplo, não é preciso ter filtros</p><p>preestabelecidos pelo cientista de dados, pois a rede consegue</p><p>apreender o melhor núcleo de filtragem (matriz de filtragem).</p><p>Redes neurais recorrentes</p><p>As redes neurais recorrentes (recurrent neural network ou RNN) são</p><p>usadas em problemas sequenciais ou temporais. Tendo a estrutura de</p><p>um grafo direcionado com ciclos, essa rede é capaz de recorrentemente</p><p>fazer laços sobre as entradas, permitindo a compreensão de</p><p>sequenciamento dos dados. A arquitetura mais conhecida de todas as</p><p>redes neurais dessa categoria é a LSTM (long short-term memory),</p><p>inventada por Hochreiter e Schmidhuber, em 1997. O que as diferencia</p><p>de seus concorrentes é o fato de terem portas (gates) de esquecimento,</p><p>superficialmente falando, fazendo com que a rede não exagere nos</p><p>pesos (nem para mais, nem para menos), pois em redes RNN comuns, o</p><p>gradiente (base do aprendizado desse tipo de modelo) pode acabar</p><p>sumindo à medida que se propaga para trás, ou aumentando</p><p>indiscriminadamente à medida que se propaga para frente.</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 9/53</p><p>Redes neurais recorrentes.</p><p>Hochreiter e Schmidhuber</p><p>Josef Hochreiter é um cientista de computação alemão reconhecido na</p><p>área de Machine Learning. Com seu professor e renomado pesquisador</p><p>alemão, Jürgen Schmidhuber, tem contribuído com numerosas</p><p>publicações na área de aprendizado profundo, com destaque para a</p><p>rede neural recorrente denominada long short-term memory (LSTM).</p><p>Para evitar o problema computacional de exageros nos gradientes, esse</p><p>tipo de rede conta com as suas unidades de memória de curto prazo,</p><p>que servem para se lembrar dos estados anteriores (evitando que o</p><p>gradiente suma), e podem ser reguladas com pequenos episódios de</p><p>perda de memória desejada (para não exacerbar os gradientes).</p><p>Redes neurais feedforward</p><p>Neste conteúdo, vamos focar nas redes neurais artificiais do tipo</p><p>alimentação avante (feedforward neural networks ou FNN). Essas redes</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 10/53</p><p>neurais se caracterizam pelo fato de serem grafos bipartidos completos</p><p>acíclicos, ou seja, todos os nós se conectam aos próximos da camada</p><p>subsequente de modo a não fazer ciclos, e isso é possível graças ao</p><p>fato de a propagação da informação ser feita apenas em uma direção. A</p><p>imagem a seguir ilustra uma rede neural feedforward.</p><p>Exemplo de Rede Neural Feedforward.</p><p>Na imagem é possível perceber três diferentes tipos de camada:</p><p>A camada de entrada é de tamanho (quantidade de nós)</p><p>proporcional à dimensão do conjunto de dados em questão, em</p><p>que cada característica se torna um nó da camada de entrada.</p><p>Entre a entrada e a saída, temos as camadas escondidas</p><p>(ocultas) de tamanhos variáveis, na quais acontece a construção</p><p>do conhecimento para descobrir padrões e, por isso, a</p><p>inteligência de um modelo neural não só é proporcional à</p><p>extensão da camada escondida, como também está ali a</p><p>encarnação desse conhecimento, assim como nosso sistema</p><p>nervoso natural.</p><p>A camada final é de tamanho proporcional às possibilidades de</p><p>classificação em um problema (na classificação binária, podem</p><p>Input layer ou camada de entrada </p><p>Hidden layer ou camada oculta </p><p>Output layer ou camada de saída </p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 11/53</p><p>ser 2 nós, na ternária 3, e assim sucessivamente), e pode ter</p><p>tamanho único, se estivermos falando de uma regressão.</p><p>Atenção!</p><p>Na rede neural feedforward, sendo a primeira a ser implementada e mais</p><p>simples em termos de complexidade computacional, a informação flui</p><p>da camada de entrada até a de saída, o que significa que não há loops</p><p>na rede, já que os dados sempre são alimentados para a frente, nunca</p><p>são enviados de volta.</p><p>Por causa da natureza empírica e subsimbólica da rede neural, quanto</p><p>maior e de melhor qualidade for o conjunto de dados, melhor será o</p><p>desempenho final da rede, uma vez que, ao replicar o comportamento</p><p>biológico, podemos até fazer uma associação com os anos que</p><p>passamos estudando e/ou vivendo experiências para nos tornarmos</p><p>bons profissionais em nossas áreas de atuação. Mas o principal motivo</p><p>é que, diferentemente dos modelos subsimbólicos, os modelos</p><p>simbólicos se equipam de regras de associação, ou formalismos pré-</p><p>configurados em seus algoritmos, para fazerem inferências com menos</p><p>dados do que uma rede neural, sem perder muito em acurácia ou</p><p>precisão.</p><p>Funções de ativação</p><p>As redes neurais artificiais, assim como os modelos de IA simbólica,</p><p>como a floresta aleatória, máquina de vetores de suporte etc., também</p><p>possuem hiperparâmetros, que são configurações em modelos de</p><p>aprendizado de máquina que regem seu bom funcionamento e servem</p><p>para ajustar e sintonizar os seus resultados. Por exemplo:</p><p>Árvore de decisão</p><p>Temos altura, número máximo de folhas etc.</p><p>Algoritmo KNN (K Nearest Neighbor)</p><p>Temos o número K.</p><p>Florestas aleatórias</p><p>Temos altura das árvores, quantidade de classificadores por floresta etc.</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 12/53</p><p>O primeiro hiperparâmetro das redes neurais de um modo</p><p>geral, independentemente de tipo, são as funções de</p><p>ativação.</p><p>Funções de ativação são os elementos de decisão nesse tipo</p><p>de modelo</p><p>de aprendizado de máquina. Cada neurônio pode aprender limiares de</p><p>decisão lineares e não lineares, baseados no tipo de função de ativação</p><p>que ele adotar. E ainda há o tipo de função de ativação para normalizar</p><p>os resultados, evitando que, por efeito cascata, os resultados de cada</p><p>neurônio cresçam ou diminuam indiscriminadamente. A seguir, veremos</p><p>algumas funções de ativação.</p><p>Sigmoide</p><p>A sigmoide mapeia um valor de entrada no eixo X para valores ente 0 e 1</p><p>no eixo Y. O nome sigmoide vem do formato em “S” da função, cuja</p><p>função matemática correspondente para todo x real é:</p><p>A imagem a seguir ilustra o gráfico da função sigmoide.</p><p>Gráfico Função sigmoide.</p><p>Extraído de MartinThoma / Wikimedia Commons / CC BY 3.0</p><p>f (x) =</p><p>1</p><p>1 + e− x</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 13/53</p><p>Tangente (tanh)</p><p>É parecida com a sigmoide, mas tem uma extensão maior do</p><p>contradomínio. Essa função mapeia valores de entrada no eixo X para</p><p>valores entre -1 e 1 no eixo Y. O “h” em tanh vem de hiperbólica, também</p><p>conhecida como tangente hiperbólica, obtida pela razão entre o seno e o</p><p>cosseno hiperbólico, assim como a contraparte trigonométrica</p><p>tradicional. Simplificadamente, é descrita com a equação seguir.</p><p>A função tangente hiperbólica também pode ser descrita em gráfico,</p><p>conforme ilustrado a seguir:</p><p>Gráfico: Função tangente hiperbólica (tanh).</p><p>Extraído de Geek3 / Wikimedia Commons / CC BY 3.0</p><p>ReLU (recti�ed linear unit)</p><p>Também chamada de função de unidade retificada linear, a ReLU</p><p>permite apenas a passagem de dados positivos, ou seja, mapeando</p><p>valores de entrada no eixo X para valores positivos maiores ou iguais a</p><p>zero no eixo Y. A função ReLU é denotada por:</p><p>tanh(x) =</p><p>ex − e− x</p><p>ex + e− x</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 14/53</p><p>O gráfico da função ReLU e da sua alternativa GELU (gaussian error</p><p>linear unit), que é uma aproximação do retificador com erro gaussiano,</p><p>está ilustrado a seguir:</p><p>Gráfico: Função ReLU em azul e GELU em verde.</p><p>Extraído de Ringdongdang / Wikimedia Commons / CC BY-SA 4.0</p><p>Atenção!</p><p>Existem muitas outras funções de ativação, além de ser possível a</p><p>customização com funções próprias do cientista de dados. Cada função</p><p>de ativação tem suas características, benefícios, desvantagens e</p><p>motivos para serem usadas. Então, a escolha deve ser feita com cautela,</p><p>pelo método de ajuste de hiperparâmetros (validação cruzada pelos</p><p>resultados das variações de escolhas).</p><p>Arquitetura de camadas</p><p>Outro hiperparâmetro de uma rede neural é sua arquitetura de camadas,</p><p>especificamente a das camadas escondidas, uma vez que as de entrada</p><p>e de saída são travadas pelas dimensões do conjunto de dados e pelas</p><p>especificações de resultados do problema em questão (classificação,</p><p>ou regressão).</p><p>f (x) = max(0, x)</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 15/53</p><p>Antes de discutirmos a camada oculta, precisamos entender uma</p><p>especificidade da camada de saída, de onde são extraídas as predições.</p><p>Cada tipo de problema a ser resolvido nos leva à escolha de uma função</p><p>de ativação para essa camada, como os seguintes exemplos:</p><p>Classi�cação binária</p><p>Usaremos uma sigmoide, já que nosso domínio de respostas é 0 ou 1.</p><p>Problemas multiclasse</p><p>Usaremos a função softmax, que é uma generalização da sigmoide para</p><p>mais de uma classe.</p><p>Regressão</p><p>Usaremos uma função de unidade linear.</p><p>Vejamos as camadas da arquitetura de uma rede neural feedforward:</p><p>Arquitetura de uma rede neural feedforward.</p><p>A camada oculta ou escondida (do inglês hidden) pode ser mais</p><p>profunda, ou seja, ter maior quantidade de subcamadas ocultas, e pode</p><p>ser mais densa, ou seja, maior número de nós por subcamada oculta.</p><p>Além disso, cada subcamada oculta por si só pode ter uma função de</p><p>ativação, ou pode ter uma função diferente por subcamada. Tudo</p><p>depende do tipo de problema em questão a ser resolvido.</p><p>Exemplo</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 16/53</p><p>Uma rede neural que detecte imagens de números, pode ter 3 camadas</p><p>(subcamadas) ocultas, sendo uma para detectar traços (com função de</p><p>ativação ReLU), uma para detectar círculos (com função sigmoide), e</p><p>uma camada que detecte a intersecção entre esses dois tipos de</p><p>formas (com função tanh).</p><p>Todas essas definições podem ser estabelecidas, inicialmente, de modo</p><p>subjetivo; entretanto, como qualquer hiperparâmetro, devem ser</p><p>ajustadas de modo a obter o melhor desempenho para resolução do</p><p>problema em questão.</p><p>Hiperparâmetros de aprendizado</p><p>Os próximos hiperparâmetros dos quais falaremos estão diretamente</p><p>ligados ao jeito como esse tipo de modelo aprende. São eles:</p><p>É o algoritmo de otimização dos pesos da rede neural, e os mais</p><p>clássicos são:</p><p>SGD (stochastic gradient descent)</p><p>LBFGS (limited memory BFGS: Broyden-Fletcher-Goldfarb-</p><p>Shanno algorithm)</p><p>Adam (adaptive moment estimation)</p><p>Cada um pode implementar um jeito diferente de resolver o</p><p>problema de otimização, e o escolhido será o que fizer a rede ter</p><p>melhor resultado para resolver o problema em questão.</p><p>É o que controla a velocidade de como a rede aprende, ou de</p><p>como ela acha o ótimo global. Basicamente, o processo de</p><p>aprendizado de uma rede neural, como veremos adiante, é</p><p>iterativo e empírico, ou seja, a rede vai "descobrindo" os pesos</p><p>Resolvedor de otimização de pesos </p><p>Taxa de aprendizado </p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 17/53</p><p>das funções de ativação entre neurônios. A taxa de aprendizado</p><p>determina o tamanho da passada entre uma tentativa e outra.</p><p>Existem outros hiperparâmetros que são mais operacionais, ou seja,</p><p>relacionados ao ritmo da rede, que é o número máximo de iterações e</p><p>de lotes de dados, como:</p><p>Determina o processo de treinamento da rede, sendo que ela</p><p>pode rodar um número determinado de passos até convergir</p><p>seus pesos em um ótimo global, ou parar antes de um</p><p>determinado limite. Cada iteração é chamada de época.</p><p>Os dados são divididos em lotes e apresentados à rede pelas</p><p>suas épocas, portanto, existe a possibilidade de você passar</p><p>mais ou menos conteúdo de uma vez. Por isso, a quantidade de</p><p>lotes é um hiperparâmetro de ritmo. Quanto maior o lote, mais</p><p>sobrecarregada poderá ficar a rede e ela acabar decorando;</p><p>quanto menor o lote, mais a rede demorará para aprender,</p><p>correndo o risco de não aprender nada.</p><p>Atenção!</p><p>Como a rede neural tem hiperparâmetros muito específicos e em maior</p><p>quantidade do que a maioria dos modelos clássicos, elas precisam de</p><p>atenção redobrada na fase de escolha e configuração de modelo de</p><p>descoberta de padrões: uma rede com mais camadas, ou com</p><p>determinadas combinações de taxa de aprendizado (learning rate), ou</p><p>com funções de ativação pode ter desempenhos drasticamente</p><p>diferentes.</p><p>Conceitos de redes neurais</p><p>feedforward</p><p>Número máximo de iterações </p><p>Quantidade de lotes </p><p></p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 18/53</p><p>Está na hora do nosso bate-papo sobre redes neurais feedforward e</p><p>seus hiperparâmetros. Vamos lá!</p><p>Falta pouco para atingir seus objetivos.</p><p>Vamos praticar alguns conceitos?</p><p>Questão 1</p><p>Qual o papel dos hiperparâmetros no treinamento de redes neurais?</p><p>Parabéns! A alternativa A está correta.</p><p>A opção A está correta porque o ajuste do resultado da rede neural</p><p>é o objetivo da configuração dos hiperparâmetros durante o</p><p>treinamento; a opção B é incorreta pois não ajudaria a rede; a opção</p><p>C não se aplica aos hiperparâmetros; a opção D é tarefa de</p><p>A Afinar o resultado final da rede.</p><p>B Piorar o gradiente descendente.</p><p>C Escolher as melhores métricas de monitoramento.</p><p>D Embaralhar os dados.</p><p>E Reduzir Dimensionalidade.</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html#</p><p>19/53</p><p>preparação dos dados; a opção E é uma técnica de pré-</p><p>processamento de dados.</p><p>Questão 2</p><p>Qual o motivo das redes neurais feedforward terem esse nome?</p><p>Parabéns! A alternativa C está correta.</p><p>A opção C é correta porque as redes neurais feedforward, como diz</p><p>o nome, são de alimentação avante, isto é, não possuem feedback e</p><p>são representadas por grafos sem ciclo; as opções A e B se referem</p><p>à polígonos e não têm relação com esse tipo de redes neurais; a</p><p>opção D não é verdade, pois as redes neurais são tudo menos</p><p>esparsas; e a opção E não está errada por definição, mas não</p><p>responde à pergunta em questão.</p><p>A São estruturas geodésicas.</p><p>B São polígonos convexos.</p><p>C São grafos acíclicos.</p><p>D São estruturas de dados esparsas.</p><p>E São modelos subsimbólicos.</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 20/53</p><p>2 - Algoritmo de backpropagation</p><p>Ao �nal deste módulo, você será capaz de descrever o funcionamento do algoritmo de</p><p>backpropagation e do otimizador de gradiente descendente.</p><p>Ligando os pontos</p><p>Você já ouviu falar sobre aprendizado de máquina? Sabia que existem</p><p>vários algoritmos que são utilizados para essa finalidade? Para</p><p>respondermos a essas perguntas, vamos analisar algumas situações</p><p>práticas.</p><p>A empresa Decisões Eficientes S.A. (empresa fictícia) atua no</p><p>desenvolvimento de soluções de software que produzem</p><p>recomendações que auxiliam gestores de segurança pública a</p><p>direcionarem seus esforços para tratar problemas de forma focada. A</p><p>empresa utiliza dados históricos e os relaciona a ações que foram</p><p>executadas com êxito. Dessa forma, as soluções dela informam quais</p><p>os melhores locais para alocar profissionais de segurança, com que</p><p>periodicidade esses profissionais devem permanecer em determinado</p><p>lugar e quais são os locais com maior chance de ocorrer situações que</p><p>demandam por intervenção. Ao oferecer todos esses serviços, a</p><p>Decisões Eficientes S.A. presta um precioso serviço para a sociedade.</p><p>Há pouco tempo, a empresa recebeu uma nova solicitação: desenvolver</p><p>uma solução para reconhecer suspeitos gravados por câmeras de</p><p>segurança. O líder de pesquisa da Decisões Eficientes S.A. alertou para</p><p>a dificuldade desse tipo de problema, mas, após analisar os pré-</p><p>requisitos, concordou em aceitar o desafio de desenvolver a solução. O</p><p>acordo foi de produzir uma aplicação utilizando um processo de</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 21/53</p><p>desenvolvimento ágil baseado em algoritmo de aprendizado das redes</p><p>neurais, de modo que fossem feitas entregas parciais que passariam</p><p>por testes os quais poderiam implicar mudança de metodologia de</p><p>trabalho, ou mesmo compreensão das limitações dos resultados que a</p><p>solução poderia gerar. O processo de construção, de forma muito</p><p>resumida, funcionava, assim:</p><p>Foram fornecidos dados de gravações com suspeitos já</p><p>identificados para o modelo computacional.</p><p>O modelo, por sua vez, passava por um processo de treinamento</p><p>que tinha por objetivo aprender a relacionar as imagens dos vídeos</p><p>com os suspeitos, sendo aplicado o algoritmo de backpropagation</p><p>que repetidamente ajusta os pesos das conexões da rede de</p><p>forma a minimizar a diferença entre valor de saída calculado e o</p><p>valor real.</p><p>Ao final, os resultados eram analisados por especialistas com o</p><p>objetivo de medir a qualidade do processo de aprendizado.</p><p>Quando o projeto foi concluído, ficou claro que havia algumas limitações</p><p>que ainda precisavam ser superadas, mas, ainda assim, os resultados</p><p>produzidos foram muito úteis na identificação de suspeitos e na</p><p>melhoria do processo como um todo.</p><p>E você, o que acha de utilizar métodos de aprendizado de máquina para</p><p>melhorar serviços de segurança pública?</p><p>Após a leitura do case, é hora de aplicar seus conhecimentos! Vamos</p><p>ligar esses pontos?</p><p>Questão 1</p><p>Como você viu, a Decisões Eficientes S.A. desenvolve soluções para</p><p>suporte à tomada de decisão na área de segurança. Pensando em</p><p>generalização de aplicações, selecione quais outras áreas a</p><p>empresa poderia atuar mantendo uma estrutura de solução</p><p>semelhante.</p><p>A</p><p>Armazenamento de dados com garantia de</p><p>consistência.</p><p>B</p><p>Detecção de doenças através de análise de exames</p><p>de imagens.</p><p>C</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 22/53</p><p>Parabéns! A alternativa B está correta.</p><p>Problemas de detecção de doenças através de exame de imagens</p><p>são semelhantes em termos de estrutura aos de reconhecimento de</p><p>suspeitos em vídeos de câmeras de segurança. Em ambos os</p><p>casos, é necessário fornecer uma base de dados pré-classificada</p><p>para que os modelos possam ser treinados e generalizar os</p><p>resultados.</p><p>Questão 2</p><p>Como você viu, os responsáveis pelo desenvolvimento de soluções</p><p>da Decisões Eficientes S.A. desenvolveram uma estratégia para o</p><p>andamento do projeto. Na sua opinião, que estratégia foi essa?</p><p>Parabéns! A alternativa E está correta.</p><p>Oferta de serviços na nuvem.</p><p>D Produção de relatórios dinâmicos.</p><p>E Produção de artigos técnicos.</p><p>A</p><p>Utilizar os algoritmos mais sofisticados de</p><p>aprendizado de máquina.</p><p>B</p><p>Envolver apenas os profissionais especializados em</p><p>aprendizado de máquina.</p><p>C</p><p>Aplicar métodos de processamento de imagens</p><p>para identificar suspeitos.</p><p>D</p><p>Segregar o problema em outros menores para</p><p>otimizar o trabalho de desenvolvimento.</p><p>E</p><p>Apresentar resultados parciais para facilitar</p><p>detecção e ajustes de problemas.</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 23/53</p><p>Para utilizar um algoritmo de aprendizado a fim de resolver</p><p>problemas reais, é necessário envolver os diversos profissionais do</p><p>projeto, pois os ajustes do modelo são mais eficientes quando</p><p>existe uma compreensão clara das limitações dos resultados dele.</p><p>No caso da Decisões Eficientes S.A., eles adotaram um processo de</p><p>entregas parciais para receber respostas mais rápidas dos</p><p>envolvidos e, assim, realizarem ajustes.</p><p>Questão 3</p><p>Considere o seguinte cenário: você foi contratado para integrar o time de</p><p>desenvolvimento de soluções da Decisões Eficientes S.A. e recebeu a</p><p>seguinte incumbência: medir a qualidade de uma aplicação para realizar</p><p>a identificação de pessoas desaparecidas que foram gravadas por</p><p>câmeras de segurança. Há muitas expectativas sobre o que você</p><p>produzir, pois, dependendo do resultado, a empresa pode ampliar a sua</p><p>área de atuação e, assim, oferecer um novo serviço. Neste cenário, qual</p><p>seria a estratégia que você adotaria?</p><p>Digite sua resposta</p><p>Chave de resposta</p><p>Modelos de aprendizado de máquina, como os utilizados pela</p><p>Decisões Eficientes S.A., são caracterizados por aprenderem a</p><p>partir de um conjunto de dados pré-classificados conhecidos</p><p>como dados de treinamento. E, depois de treinados, os modelos</p><p>são submetidos a testes com outros conjuntos de dados também</p><p>pré-classificados para verificar qual a qualidade dos seus acertos.</p><p>No caso da aplicação para identificar pessoas desaparecidas, é</p><p>necessário realizar um processo semelhante para treinar e validar</p><p>o modelo. Portanto, é essencial dispor de uma base de</p><p>treinamento e outra de testes.</p><p>Conceitos gerais sobre</p><p>backpropagation</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 24/53</p><p>O algoritmo de aprendizado de máquina de uma rede neural, assim</p><p>como apresentado antes, é baseado no gradiente descendente</p><p>estocástico. O algoritmo que faz essa otimização do gradiente se</p><p>chama backpropagation, ou backprop, ou BP.</p><p>O algoritmo consiste em computar o gradiente da função de perda (loss</p><p>function) em relação aos pesos da rede neural para um exemplo de</p><p>entrada e saída, e o faz de forma mais eficiente do que computar</p><p>individualmente cada gradiente de cada peso. Seguindo a regra da</p><p>cadeia, o algoritmo calcula cada camada por vez, iterando para trás</p><p>desde a última camada.</p><p>Suponhamos uma rede com a seguinte estrutura:</p><p>Regra da cadeia</p><p>No cálculo matemático, a regra da cadeia é uma fórmula para a derivada</p><p>de uma função composta de duas funções. Ela foi desenvolvida por</p><p>Gottfried Leibniz, cientista polímata alemão do século XVII, reconhecido</p><p>por suas contribuições na Matemática, entre outras áreas do</p><p>conhecimento.</p><p>Estrutura de rede neural.</p><p>Em que:</p><p>x1, x2, x3, e x4 são as entradas da rede, preenchidas pelo valor das</p><p>características dos dados (valores numéricos apenas);</p><p>wi.j.l (i = camada, j = neurônio, l = ligação) representa um peso;</p><p>N é o valor do neurônio dado por N=Wijl*x+bi;</p><p>A é a função de ativação dada por f(N);</p><p>b1 e b2 são os vieses de suas respectivas camadas escondidas;</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 25/53</p><p>Saída como resultado final do processamento (classe ou</p><p>regressão).</p><p>As equações das camadas escondidas 1 e 2 podem ser entendidas</p><p>como:</p><p>Camada 1</p><p>Camada 2</p><p>Camada 3</p><p>Atenção!</p><p>O número entre parênteses acima das variáveis indica a camada de</p><p>origem, para todos os similares naquela camada, assim evitando</p><p>repetições, considerando que estejam no formato matricial.</p><p>Cada neurônio tem o valor próprio em N, que é dado pela multiplicação</p><p>de seu peso equivalente acrescido do viés da camada, sendo o</p><p>resultado disso passado para a função de ativação A, que pode ser uma</p><p>ReLU, sigmoide etc. Os resultados do processamento da entrada nos</p><p>neurônios da primeira camada escondida são passados para a segunda</p><p>como entrada, que fará um processamento parecido subsequentemente,</p><p>até que se chegue ao fim da rede neural.</p><p>Podemos enxergar como uma matriz de pesos da camada 1 com</p><p>dimensões n, m: n é o número de neurônios de saída e m é o número de</p><p>neurônio de entradas, assim para nós sendo (n, m) = (2, 4):</p><p>N (1) = w(1)x + b(1)</p><p>A(1) = f ( N (1))</p><p>N (2) = w(2)A(1) + b(2)</p><p>A(2) = f ( N (2))</p><p>Sa ída = w(3)A(2)</p><p>w(1)</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 26/53</p><p>A entrada da nossa rede também é uma matriz, porém, de dimensão 1,</p><p>m, em que temos 4 entradas de dados. Desse modo:</p><p>E isso também vale para os vieses (biases):</p><p>Então, teríamos a soma das multiplicações dos pesos mais o viés:</p><p>w(1) =</p><p>⎡⎢⎣ w1.1.1 ⋯ w1.1.4</p><p>⋮ ⋱ ⋮</p><p>w1.2.1 ⋯ w1.2.4</p><p>⎤⎥⎦x =</p><p>⎡⎢⎣ x1</p><p>x2</p><p>x3</p><p>x4</p><p>⎤⎥⎦b = [ ]</p><p>b1</p><p>b2</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 27/53</p><p>Agora, você deve estar se perguntando: Como calcular o gradiente</p><p>nesse emaranhado de multiplicações de matrizes? Isso é feito do</p><p>seguinte modo: primeiro, pegamos o valor predito na saída, e</p><p>comparamos contra o valor real no nosso conjunto de treinamento. A</p><p>comparação entre esses dois valores é a função de custo, que pode ser</p><p>desde um simples erro médio quadrático, até uma entropia cruzada.</p><p>Para simplificar, vamos enxergá-la dessa forma:</p><p>Com base no valor de C, o modelo se regulariza por meio do ajuste de</p><p>seus parâmetros, de modo que chegue cada vez mais perto do valor</p><p>real, e esse ajuste acontece com a backpropagation.</p><p>Algoritmo de backpropagation</p><p>A backpropagation funciona de acordo com a seguinte lógica:</p><p>Repetidamente ajuste os pesos das conexões da rede de forma a</p><p>minimizar a diferença entre valor de saída calculado e o valor real.</p><p>N (2) = [</p><p>(w1.1.1) ∗ x1 + ⋯ + (w1.1.4) ∗</p><p>(w2.1.1) ∗ x1 + ⋯ + (w2.1.4) ∗</p><p>C = custo(saída, real) ∣ real ⊂ {y, classe,</p><p>⊂ {M SE , Cross − Ent ropy, out</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 28/53</p><p>O objetivo da backpropagation é uma minimização da</p><p>função custo, em função dos pesos da rede e dos vieses</p><p>das camadas.</p><p>Vale mencionar que os vieses das camadas são os únicos valores</p><p>modificáveis pela rede neste tipo de problema.</p><p>O ajuste é determinado pelo gradiente da função de custos. Mas por que</p><p>o gradiente? Se lembrarmos bem, um gradiente de uma função de n</p><p>variáveis em um ponto x é o vetor de derivadas parciais de C em x.</p><p>Matematicamente falando:</p><p>Isso é importante, pois a derivada mede a sensibilidade da função para</p><p>um argumento (lembre-se do gráfico no plano cartesiano, em que a</p><p>derivada mede a inclinação da direção da função em dado momento, se</p><p>está caindo ou subindo). Assim, medindo a sensibilidade, podemos</p><p>entender o quanto xn tem de aumentar ou diminuir para que o custo do</p><p>predito ao real se torne o menor possível.</p><p>Complicado? Para simplificar, faremos uma analogia com mira de arco e</p><p>flecha:</p><p>O arqueiro ajusta a posição do braço como a backpropagation ajusta a função custo.</p><p>dC</p><p>dx</p><p>= [</p><p>dC</p><p>dx1</p><p>, … ,</p><p>dC</p><p>dxn</p><p>]</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 29/53</p><p>A cada tentativa, o arqueiro move os braços mais para dentro do corpo,</p><p>para diminuir a distância das flechadas ao meio do alvo; é mais ou</p><p>menos isso que a backpropagation faz com a função custo; no caso do</p><p>arqueiro, ele usa os olhos, no caso da backpropagation, ela usa o</p><p>gradiente.</p><p>A computação dos gradientes é feita pela regra da cadeia, uma técnica</p><p>de cálculo, que matematicamente para um único peso :</p><p>(de�nição do valor processado pelo neurônio, em que m é o</p><p>número de neurônios da camada, e L-1 é a camada em</p><p>questão).</p><p>Isso também vale para o viés:</p><p>wL</p><p>j k</p><p>dC</p><p>dwL</p><p>j k</p><p>=</p><p>dC</p><p>dN L</p><p>j</p><p>dN L</p><p>j</p><p>dwL</p><p>j k</p><p>(regra da cadeia)</p><p>N L</p><p>j = Σ m</p><p>k= 1wL</p><p>j kAL− 1</p><p>k + bL</p><p>j</p><p>dN L</p><p>j</p><p>dwL</p><p>j k</p><p>= AL− 1</p><p>k (Derivando)</p><p>dC</p><p>dwL</p><p>j k</p><p>=</p><p>dC</p><p>dN L</p><p>j</p><p>AL− 1</p><p>k (Fim)</p><p>dC</p><p>dbL</p><p>j</p><p>=</p><p>dC</p><p>dN L</p><p>j</p><p>dN L</p><p>j</p><p>dbL</p><p>j</p><p>(regra da cadeia)</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 30/53</p><p>O que há em comum entre as duas equações é o gradiente local, que</p><p>pode ser dito como:</p><p>Assim, o algoritmo tem o seguinte laço em pseudocódigo:</p><p>Enquanto (condição de parada ainda não obtida):</p><p>Fim</p><p>Sendo que:</p><p>dN L</p><p>j</p><p>dbL</p><p>j</p><p>= 1(Derivando)</p><p>dC</p><p>dbL</p><p>j</p><p>=</p><p>dC</p><p>dN L</p><p>j</p><p>1(Fim)</p><p>δL</p><p>j =</p><p>dC</p><p>dN L</p><p>j</p><p>w := w − ϵ</p><p>dC</p><p>dw</p><p>b := b − ϵ</p><p>dC</p><p>db</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 31/53</p><p>1. Valores iniciais de w e b são criados aleatoriamente (ou seja, nas</p><p>primeiras épocas é bem ruim a acurácia do modelo).</p><p>2. Épsilon é a taxa de aprendizado dos hiperparâmetros que define</p><p>a influência do gradiente.</p><p>3. w e b são representações matriciais dos pesos e vieses. Logo, a</p><p>derivada de C em w e b é feita em nível matricial (fazendo</p><p>derivadas parciais nos elementos da matriz).</p><p>4. A condição de término é a minimização do custo (na prática, a rede</p><p>tem m épocas para treinar, logo, a condição de parada é a</p><p>minimização do custo ou o fim do número de épocas). Não há uma</p><p>regra, mas 200 épocas é um número comum para redes</p><p>convergirem, devendo essa escolha ser feita de acordo com o</p><p>problema e conjunto de dados.</p><p>Esse tipo de raciocínio tende a ser matemático demais para a maioria</p><p>das pessoas que estão começando a aprender sobre redes neurais; mas</p><p>podemos fazer associações para suavizar esse “matematiquês”.</p><p>Por exemplo, imagine um espaço 3D, em que o plano composto pelos</p><p>eixos X, Y, Z é a função custo (podemos imaginar também que a função</p><p>está aplicada ao conjunto de dados reduzido a 3 dimensões). Suponha,</p><p>agora, o otimizador do gradiente descendente como uma bolinha, do</p><p>tipo pula-pula. Vamos considerar a seguinte relação:</p><p></p><p>Épocas</p><p>Número de vezes em que a bolinha será jogada.</p><p></p><p>Taxa de aprendizado</p><p>A velocidade da bolinha ou a distância entre um salto e outro.</p><p></p><p>Viés</p><p>Lufadas de vento imaginárias.</p><p>(ϵ)</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 32/53</p><p>Feito isso, o que acontece é o seguinte: a bolinha é solta de um ponto no</p><p>plano (ou seja, a função de custo ainda está distante da realidade), e</p><p>desliza em uma velocidade proporcional à taxa de aprendizado,</p><p>procurando um vale.</p><p>A bolinha quicando representa as iterações da rede neural.</p><p>A bolinha</p><p>quicando dentro do plano, procurando um vale, representa a</p><p>rede neural iterando pelas épocas. O objetivo da bolinha é achar o vale</p><p>mais profundo, o máximo global, ou ótimo. Só que, assim como na</p><p>realidade, essa busca por um máximo global pode ser limitada pelo</p><p>número de tentativas (épocas), pela velocidade ou distância de pulo da</p><p>bolinha (taxa de aprendizado); por isso, precisamos configurar bem os</p><p>hiperparâmetros. Mas, por que os hiperparâmetros são tão importantes?</p><p>Os hiperparâmetros impactam no processo de</p><p>aprendizado.</p><p>Resumindo</p><p>Entendemos o cálculo por trás do gradiente descendente e a</p><p>importância das derivadas e da regra da cadeia no algoritmo de</p><p>backpropagation, visto que essas técnicas são formas de medir o</p><p>impacto da mudança de pesos, durante a autorregularização desse</p><p>modelo de aprendizado de máquina. Para isso, podemos fazer uma</p><p>associação com uma bolinha pula-pula jogada em um terreno</p><p>acidentado, imaginando que esse terreno seja o espaço geoespacial, em</p><p>que medimos o custo pelos eixos x, y, e z. A bolinha pulando entre</p><p>crateras é como se fosse o otimizador do gradiente, “explorando” os</p><p>valores mínimos existentes (locais), e procurando o mínimo mais fundo</p><p>(global), e as distâncias de pulos pode ser associada à taxa de</p><p>aprendizado.</p><p></p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 33/53</p><p>Explicação sobre o algoritmo de</p><p>aprendizado das redes neurais</p><p>feedforward</p><p>Está na hora de nosso bate-papo sobre o algoritmo de backpropagation.</p><p>Vamos lá!</p><p>Falta pouco para atingir seus objetivos.</p><p>Vamos praticar alguns conceitos?</p><p>Questão 1</p><p>Qual o objetivo das derivadas parciais na análise do gradiente</p><p>descendente?</p><p>A</p><p>Medir a sensibilidade da alteração dos valores dos</p><p>pesos.</p><p>B Medir a distância da realidade.</p><p>C Medir o conhecimento acumulado.</p><p>D Medir a complexidade algorítmica da rede.</p><p>E Medir a conectividade do modelo.</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 34/53</p><p>Parabéns! A alternativa A está correta.</p><p>A opção A está correta, pois as derivadas parciais medem a</p><p>inclinação direcional nos pontos de função, ou seja, podemos saber</p><p>se as alterações nos pesos estão melhorando ou piorando a função</p><p>custo; a opção B é incorreta, pois o mais próximo a essa afirmação</p><p>seria a função de custo C; a opção C não é verdade, pois o</p><p>conhecimento ou o poder cognitivo de uma rede neural está nas</p><p>camadas ocultas e as derivadas parciais são um dos requisitos</p><p>para analisar e otimizar; a opção D é incorreta, pois não estamos</p><p>falando de notação Big O (a real notação de complexidade</p><p>algorítmica), que nem se aplica nesse contexto; a opção E é</p><p>incorreta, pois o que mede o poder cognitivo de modelo são</p><p>métricas como acurácia, precisão etc.</p><p>Questão 2</p><p>Qual o papel de uma função de ativação no algoritmo de</p><p>backpropagation?</p><p>Parabéns! A alternativa D está correta.</p><p>A opção D está correta porque a função de ativação dentro do</p><p>neurônio recebe como entrada o valor da observação, e o resultado</p><p>pós-cálculo é o estímulo percebido no neurônio; a opção A é</p><p>incorreta, pois é uma métrica de monitoramento; a opção B é</p><p>incorreta, pois o viés não é calculado pela função de ativação, mas</p><p>A Calcular a acurácia.</p><p>B Calcular o viés da rede.</p><p>C Calcular o peso da rede.</p><p>D Calcular o valor/estímulo no neurônio da rede.</p><p>E Calcular o recall.</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 35/53</p><p>pelo otimizador do gradiente descendente; a opção C é incorreta,</p><p>pois os pesos não são calculados somente pela função de ativação,</p><p>mas pelo otimizador do gradiente descendente seguindo o</p><p>algoritmo de backpropagation; a opção E é incorreta, pois se trata</p><p>de outra métrica de monitoramento de modelos.</p><p>3 - Tensor�ow/Keras</p><p>Ao �nal deste módulo, você será capaz de aplicar redes neurais feedforward usando</p><p>Tensor�ow/Keras.</p><p>Ligando os pontos</p><p>Você sabia que existem bibliotecas e frameworks que facilitam a</p><p>utilização das redes neurais artificiais na prática? Sabe como essas</p><p>bibliotecas podem ser muito úteis na prática? Para entendermos sobre</p><p>os conceitos na prática, vamos analisar uma situação.</p><p>Um grupo de profissionais, que são autodenominados de “fabricantes de</p><p>máquinas inteligentes”, atua no desenvolvimento de aplicações que</p><p>utilizam modelos de aprendizado de máquina, em especial, modelos de</p><p>redes neurais artificiais feedforward. Com o objetivo de divulgar os</p><p>projetos do grupo, decidiram criar canais nas redes sociais onde</p><p>apresentam algumas de suas soluções. Apesar de terem obtido uma</p><p>boa receptividade do público, eles perceberam a necessidade de ensinar</p><p>as pessoas como desenvolver alguns projetos sem, é claro, a</p><p>complexidade das soluções deles. Para isso, decidiram usar um</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 36/53</p><p>framework específico cujo nome é Tensorflow e a linguagem de</p><p>programação Python.</p><p>Uma das principais motivações por essa escolha é que o Tensorflow é</p><p>muito bem documentado e possui diversos exemplos disponíveis, além</p><p>de que a linguagem de programação Python é, atualmente, a mais</p><p>importante para desenvolver projetos nessa área. Dessa forma, os</p><p>fabricantes de máquina inteligentes construíram alguns exemplos e</p><p>mostraram nas suas redes sociais como eles foram desenvolvidos e</p><p>qual o potencial dos benefícios da aplicação deles para resolver</p><p>problemas práticos. Para a surpresa deles, a procura por seus vídeos e</p><p>demais materiais cresceu muito mais do que podiam prever. Com isso,</p><p>tiveram que formalizar um curso para formação de desenvolvedores de</p><p>soluções de aprendizado de máquina com o Tensorflow. Além do curso</p><p>atender ao grande público, de um modo geral, eles também criaram</p><p>cursos específicos para atender demandas de treinamento de empresas</p><p>que atuam em diversos setores com suporte de tomada de decisão.</p><p>E você, também gostaria de se tornar um fabricante de máquinas</p><p>inteligentes usando o Tensorflow e o Python?</p><p>Após a leitura do case, é hora de aplicar seus conhecimentos! Vamos</p><p>ligar esses pontos?</p><p>Questão 1</p><p>Como você leu no texto, os fabricantes de máquinas inteligentes</p><p>foram surpreendidos pelo grande interesse do público em aprender</p><p>a desenvolver soluções de aprendizado de máquina com o</p><p>Tensorflow. A que você atribui esse interesse?</p><p>A</p><p>Aos algoritmos complexos que o Tensorflow já</p><p>disponibiliza.</p><p>B Pelo fato de ser um framework muito conhecido.</p><p>C</p><p>Devido ao fato de ser o framework que disponibiliza</p><p>os melhores algoritmos já implementados.</p><p>D</p><p>A facilidade de desenvolver aplicações práticas com</p><p>o Tensorflow.</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 37/53</p><p>Parabéns! A alternativa D está correta.</p><p>A área de aprendizado de máquina tem ganhado muita notoriedade</p><p>nos últimos anos. Parte disso se deve aos recursos e ferramentas</p><p>computacionais que facilitam o desenvolvimento de soluções</p><p>concretas. No caso dos fabricantes de máquinas inteligentes</p><p>ocorreu um grande interesse do público pelo fato de estarem</p><p>usando um framework onde podiam implementar com facilidade</p><p>algumas das soluções que eram apresentadas nas redes sociais.</p><p>Questão 2</p><p>Como você leu no texto, existem dois grandes segmentos que</p><p>demandam por soluções de aprendizado de máquina: empresas</p><p>que precisam de aplicações para suportar a tomada de decisão e</p><p>profissionais que precisam de treinamento. Pensando em termos</p><p>da demanda do mercado real, você acha correto esquecer de todas</p><p>as outras áreas da tecnologia da informação e investir apenas na</p><p>compreensão de como funcionam os algoritmos de aprendizado de</p><p>máquina usando o Tensorflow?</p><p>E</p><p>Por haver uma demanda muito maior de</p><p>profissionais de aprendizado de máquina do que de</p><p>outras áreas tradicionais.</p><p>A</p><p>Não está correto, pois as tecnologias e os</p><p>conhecimentos se complementam para gerar</p><p>soluções práticas.</p><p>B</p><p>É correto,</p><p>pois a demanda do mercado por esse tipo</p><p>de conhecimento é cada vez maior.</p><p>C</p><p>É correto, pois o domínio do Tensorflow é a melhor</p><p>forma de aprender como aplicar os modelos de</p><p>aprendizado de máquina.</p><p>D</p><p>É correto, uma vez que o Tensorflow é a mais</p><p>popular das tecnologias voltadas para desenvolver</p><p>soluções de aprendizado de máquina.</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 38/53</p><p>Parabéns! A alternativa A está correta.</p><p>As demandas do mercado raramente são voltadas para apenas</p><p>uma área de conhecimento, ou mesmo o uso de uma única</p><p>tecnologia. Apesar da importância dos modelos de aprendizado de</p><p>máquina atualmente e do framework Tensorflow, é necessário</p><p>investir em outras tecnologias e áreas de conhecimento. Para</p><p>resolver um problema real prático, é necessário ter uma visão</p><p>holística do negócio.</p><p>Questão 3</p><p>Considere o seguinte cenário: você ingressou no grupo dos fabricantes</p><p>de máquinas inteligentes. Sua primeira tarefa é montar um treinamento</p><p>básico de como desenvolver um modelo de rede neural com o</p><p>Tensorflow. Com base em sua experiência, como você organizaria esse</p><p>curso?</p><p>Digite sua resposta</p><p>Chave de resposta</p><p>É muito importante garantir que os alunos do curso saibam</p><p>implementar soluções com o Tensorflow, portanto a primeira</p><p>escolha a ser feita é sobre a linguagem de programação que será</p><p>utilizada para realizar essas implementações. Atualmente, a</p><p>melhor linguagem de programação com essa finalidade é o</p><p>Python. Em seguida, é muito importante ensinar os conceitos</p><p>básicos de um modelo de aprendizado de máquina e escolher um</p><p>exemplo para mostrar como ele pode ser implementado com o</p><p>uso do Python e do Tensorflow.</p><p>Instalação da biblioteca Tensor�ow</p><p>E</p><p>Não é correto, pois existem outras tecnologias mais</p><p>avançadas do que o Tensorflow.</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 39/53</p><p>Vamos praticar o desenvolvimento de redes neurais, utilizando Python</p><p>como nossa linguagem de programação e o Jupyter notebook como</p><p>ambiente de desenvolvimento. Para praticarmos os conhecimentos de</p><p>redes neurais especificamente, instalaremos o TensorFlow com o</p><p>comando:</p><p>TensorFlow</p><p>É uma biblioteca de código aberto para aprendizado de máquina e de</p><p>cálculos em dados descentralizados. Essa descentralização acontece</p><p>porque o TensorFlow pode ser rodado em apenas um processador, ou</p><p>em múltiplos, do tipo CPU (central processing unit ou unidade central de</p><p>processamento) normal, ou GPU (graphics processing unit ou unidade</p><p>de processamento gráfico), com capacidades computacionais incríveis.</p><p>Isso é possível porque esse tipo de processador gráfico foi criado e</p><p>aprimorado ao longo dos anos para lidar com multiplicações de</p><p>matrizes e subproblemas derivados. Devido ao fato de cada vez mais</p><p>evoluirmos nossa tecnologia e poder computacional, desde 2017, a</p><p>Google disponibilizou uma versão light do TensorFlow, para rodar em</p><p>dispositivos mobile chamada de TensorFlow Lite.</p><p>Python </p><p>Instalação do TensorFlow.</p><p>Atenção!</p><p>Lembre-se de que o TensorFlow pode apresentar restrições por sistema</p><p>operacional, por isso é necessário prestar atenção nos logs do terminal,</p><p>pois eles podem indicar instruções alternativas de instalação. Ou, então,</p><p>basta criar um notebook compartilhado no Google Drive e fazer a</p><p>experimentação pelo Google Colab.</p><p>Depois, instalaremos as bibliotecas de ciência de dados que darão</p><p>suporte a métricas e gráficos, como Scikit-Learn, Numpy e Matplotlib.</p><p>Python </p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 40/53</p><p>Instalação de bibliotecas.</p><p>Instalação da biblioteca Keras</p><p>Para finalizar a configuração do ambiente, iremos instalar o Keras. O</p><p>interessante do Keras são seus recursos, com métodos de construção</p><p>de camadas, métodos de funções de ativação das mais variadas,</p><p>funções de perda/custo diferentes, otimizadores de gradiente etc.</p><p>Por ser uma biblioteca de código aberto, basta procurar a</p><p>documentação dela no Google, entrar em seu repositório do Github e</p><p>acompanhar as trilhas de discussão, em caso de dúvidas, e fazer</p><p>contato com os desenvolvedores.</p><p>Keras</p><p>É uma biblioteca para desenvolvimento de redes neurais projetada para</p><p>permitir experimentação rápida. Ele oferece um conjunto de abstrações</p><p>que serve de interface para outros frameworks de aprendizado de</p><p>máquina, e pode rodar junto ao TensorFlow, Microsoft Cognitive Toolkit,</p><p>Theano, PlaidML etc.</p><p>Dica</p><p>O mundo da computação, em geral, e do aprendizado de máquina, em</p><p>particular, é colaborativo. Por isso, é comum quando encontramos erros</p><p>no TensorFlow, Keras, Scikit etc., copiarmos o log de erro e procurarmos</p><p>soluções em qualquer motor de busca. Encontraremos a resposta em</p><p>algum fórum de discussão, como StackOverflow, Github, Reddit etc.</p><p>Além de ser uma prática comum na comunidade de desenvolvimento de</p><p>software e computação, isso nos possibilita aprender mais e mais.</p><p>Para iniciarmos a instalação do Keras executaremos o seguinte código:</p><p>Python </p><p>Instalação do Keras.</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 41/53</p><p>Agora que estamos preparados, importaremos as bibliotecas:</p><p>Python </p><p>Importação de bibliotecas.</p><p>No código, realizamos a importação dos seguintes métodos essenciais:</p><p>Label Binarizer</p><p>Método usado para regularizar as classes do nosso modelo.</p><p>Sequential</p><p>Base da construção de camadas.</p><p>Dense</p><p>Método de construção de camadas totalmente conectadas.</p><p>SGD</p><p>Otimizador de gradiente descendente tradicional.</p><p>Além dos métodos essenciais, importamos também:</p><p>classi�cation report</p><p>Método que nos mostrará o resultado de nossa demonstração em</p><p>detalhes (super recomendado para o uso no dia a dia com problemas de</p><p>classificação de um modo geral).</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 42/53</p><p>Pyplot</p><p>Será usado para visualizarmos a evolução do aprendizado no nosso</p><p>modelo.</p><p>MNIST</p><p>Nosso conjunto de dados do qual falaremos adiante.</p><p>Numpy</p><p>Será usado para regularizar o dimensionamento dos nossos dados.</p><p>Conjunto de dados MNIST</p><p>Vamos, então, baixar nosso conjunto de dados para experimentação.</p><p>Utilizaremos um dos conjuntos mais conhecidos e usados na área de</p><p>redes neurais, o conjunto de dígitos escritos à mão do MNIST (Modified</p><p>National Institute of Standards and Technology).</p><p>Exemplo de conjunto de dígitos do MNIST.</p><p>Basicamente, nossa rede neural vai aprender a reconhecer o padrão de</p><p>escrita de números. Para conseguirmos esse conjunto, utilizaremos o</p><p>seguinte bloco de código:</p><p>Python </p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 43/53</p><p>Acessando o MNIST.</p><p>Agora baixado, o conjunto já vem no formato de treinamento e teste,</p><p>como podemos ver na declaração do bloco de código anterior, mas será</p><p>preciso rearrumar o conjunto da seguinte forma:</p><p>Imagem</p><p>Cada imagem do MNIST</p><p>tem dimensões</p><p>28x28x1; entretanto,</p><p>para a rede neural,</p><p>precisaremos chapar a</p><p>imagem em 28x28=784</p><p>pixels.</p><p>Dados</p><p>E em seguida,</p><p>normalizaremos os</p><p>dados para que fiquem</p><p>entre 0 e 1, dividindo o</p><p>conjunto por 255 (valor</p><p>máximo de um pixel).</p><p>Para realizar essas modificações, utilizaremos o código a seguir:</p><p>Python </p><p>Modificando o conjunto de dados.</p><p>Agora, para adequar a última camada, a de saída, vamos binarizar a</p><p>classe da seguinte forma:</p><p>Python </p><p>Binarizando o conjunto de dados.</p><p></p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 44/53</p><p>O Label Binarizer faz com o que o resultado da classe se torne binário,</p><p>ou seja, em vez de lidarmos com a classe de valor 5, passaremos a lidar</p><p>com 0000100000.</p><p>A conversão para a forma binária é importante, pois a</p><p>camada �nal tem que ter tamanho proporcional às</p><p>possibilidades de resultados esperados.</p><p>Em outro exemplo, se a rede classificasse</p><p>animais em gato, cão ou</p><p>peixe, teríamos 001,010,100 respectivamente. Essa prática é muito</p><p>comum em problemas de classificação multiclasse, mas existe uma</p><p>categoria que é a de multirrótulos, em que os resultados podem ser de</p><p>mais de uma classe ao mesmo tempo. Por exemplo, categorias de</p><p>autores de livros, como: terror, ficção científica, romance; se um livro</p><p>fosse um terror de ficção científica, teria a binarização 110. Para cada</p><p>caso desse tipo de problema, há uma função de custo diferente</p><p>também.</p><p>Treinamento do modelo de rede</p><p>neural</p><p>Definiremos a arquitetura da nossa rede neural. Com a ajuda do Keras</p><p>isso pode ser feito de maneira simples, adicionando uma camada atrás</p><p>da outra em sequência. Assim:</p><p>Python </p><p>Adicionando camadas.</p><p>Como podemos ver, a arquitetura segue o seguinte formato: uma</p><p>camada de entrada de 784 nós, um para cada pixel da imagem em</p><p>questão, que se conectará a uma camada oculta densa de 256 nós, pela</p><p>função de ativação da sigmoide. Depois, a primeira camada oculta se</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 45/53</p><p>conectará à segunda de 128 nós, também por sigmoide. Esta se</p><p>conectará à última camada de predição, com 10 nós conectados a partir</p><p>da Softmax. São 10 porque temos 10 possíveis dígitos.</p><p>Para treinar o modelo, usaremos como otimizador do gradiente, o SGD,</p><p>aquele baseado no gradiente descendente, com taxa de aprendizado</p><p>0.01. Utilizaremos a métrica de acurácia para acompanhar o modelo e,</p><p>para calcular a perda, função de custo, usaremos a entropia cruzada</p><p>categórica (categorical_crossentropy), que é a mais empregada em</p><p>problemas de classificação. Para as épocas da nossa rede,</p><p>escolheremos 100 épocas, ou seja, a rede tem 100 iterações para</p><p>convergir e apreender, e apresentaremos lotes de 128 imagens cada por</p><p>iteração. Para isso, utilizaremos o seguinte código:</p><p>Python </p><p>Treinando o modelo.</p><p>Agora, veremos como nossa rede se saiu. Para isso, utilizaremos a</p><p>classification_report, uma função do Sklearn que compara os valores</p><p>preditos contra os reais passados como argumentos. Aplicaremos o</p><p>seguinte bloco de código:</p><p>Python </p><p>Comparando valores.</p><p>O resultado será um relatório de classificação e, como esse problema é</p><p>multiclasse, isso é muito útil, pois além de mostrar a acurácia geral da</p><p>classificação, mostrará também o resultado de cada classe possível. Eis</p><p>o resultado:</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 46/53</p><p>Relatório de classificação.</p><p>Para interpretarmos esse relatório, podemos observar que cada linha da</p><p>matriz principal é uma possível classe; cada coluna, uma métrica de</p><p>acompanhamento: precisão, recall, medida F1, e suporte (ou cobertura,</p><p>isto é, quantos casos foram cobertos pelas métricas escolhidas). Nas</p><p>linhas de baixo, temos a acurácia geral (accuracy), a média macro de</p><p>acurácias e a média ponderada. A média macro e a ponderada nos</p><p>trazem informações distintas:</p><p>Média macro (macro</p><p>avg)</p><p>Comparação em nível</p><p>macro de acurácia para</p><p>cada classe, ou seja,</p><p>feita sem considerar a</p><p>distribuição da classe</p><p>em relação às demais.</p><p>Média ponderada</p><p>(weighted avg)</p><p>Leva em consideração a</p><p>distribuição das</p><p>observações por classe</p><p>em relação às demais.</p><p>Lembramos que as métricas macro e ponderada são muito importantes</p><p>para conjuntos desbalanceados, visto que se tomarmos a métrica de um</p><p>modo generalista, poderá dissuadir nossa avaliação de modelo, pois</p><p>pode ser que o modelo tenha acertado tudo de algumas classes e</p><p>pouco de outras, e essas métricas diferenciadas nos ajudam a encontrar</p><p>esses detalhes.</p><p>Podemos ver que o modelo tem mais facilidade em encontrar 1s do que</p><p>outros dígitos e mais dificuldades de identificar 8s e 5s. Mas, de modo</p><p>geral, a acurácia de 92% não é ruim, significando que em cerca de 9 a</p><p>cada 10 tentativas, a rede acerta. Se analisarmos as métricas</p><p>diferenciadas, podemos ver que os acertos entre classes estão bem</p><p>equilibrados.</p><p></p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 47/53</p><p>Acompanhamento de métricas do</p><p>modelo de rede neural</p><p>Para finalizar, podemos ver como a rede evoluiu até chegar nestas</p><p>métricas. Ou seja, como a função de custo foi sendo otimizada, e a</p><p>acurácia foi subindo. Para isso, utilizaremos o seguinte bloco de código:</p><p>Python </p><p>Plotagem das métricas.</p><p>A execução desse código resultará no gráfico a seguir: o resultado da</p><p>função de custo (no caso, "training loss") diminui à medida que as</p><p>épocas passam e a acurácia aumenta, o que é bastante intuitivo, pois a</p><p>rede está aprendendo com o passar das épocas (iterações).</p><p>Gráfico: acurácia e função de custo.</p><p>Elaborado por Fernando Cardoso Durier da Silva</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 48/53</p><p>Retomando os conhecimentos teóricos sobre redes neurais, a cada</p><p>época, a rede tenta um palpite nos seus pesos, de modo a tentar</p><p>diminuir a função de custo (na maioria de bibliotecas e literatura na área,</p><p>a função loss), para diminuir a distância entre a realidade e o predito,</p><p>assim reduzindo a função loss e aumentando um pouco a acurácia.</p><p>Depois, na rodada seguinte, o processo se repete, o otimizado do</p><p>gradiente descendente gera um novo palpite, de modo a reduzir a</p><p>função de custo, até que ele seja mínimo ou que o número de épocas</p><p>acabe. Ao fim, teremos nosso modelo treinado e pronto para uso.</p><p>Recomendação</p><p>No dia a dia, o que é interessante fazer para verificar se o modelo está</p><p>sobreajustado (overfitting) ou subajustado (underfitting), é apresentar</p><p>um novo conjunto de dados ao modelo treinado e deixá-lo iterar sobre o</p><p>conjunto. No final, pelo relatório de classificação se mede o quanto ele</p><p>acertou. Se o modelo tiver errado muito, saberemos que houve</p><p>overfitting ou underfitting; para tirar a dúvida de qual dos dois ocorreu, é</p><p>necessário fazer uma rodada com os dados antigos. Se ele não errar</p><p>nenhum ou quase nenhum, teremos um forte indício de overfitting. No</p><p>entanto, se ele começar a gerar valores aleatórios e errar muito (mais da</p><p>metade), então, terá ocorrido underfitting.</p><p>De modo geral, redes neurais sofrem mais de overfitting do que de</p><p>underfitting, uma vez que a condição de parada principal delas é a</p><p>minimização da função custo. Para que você tenha os mesmos</p><p>resultados em casa, utilize o notebook Jupyter, disponível para</p><p>download na seção Preparação, para fins de prática e aprendizado.</p><p>Demonstração de rede neural</p><p>feedforward com Tensor�ow e Keras</p><p>em Python</p><p>Está na hora de nosso bate-papo sobre o modelo de rede neural</p><p>feedforward com exemplos de linguagem Python. Vamos lá!</p><p></p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 49/53</p><p>Falta pouco para atingir seus objetivos.</p><p>Vamos praticar alguns conceitos?</p><p>Questão 1</p><p>A biblioteca Keras serve para</p><p>Parabéns! A alternativa A está correta.</p><p>Keras é uma biblioteca de experimentação rápida de redes neurais</p><p>que permite desenvolver redes neurais abstraindo de suas</p><p>camadas; a opção B é incorreta, pois trata-se de tarefa do</p><p>classification report; as opções C, D, e E são incorretas, pois são</p><p>atividades de preparação dos dados.</p><p>Questão 2</p><p>A abstrair a construção de camadas de redes neurais.</p><p>B construir o relatório de métricas.</p><p>C embaralhar os dados.</p><p>D organizar os dados.</p><p>E pré-processar os dados.</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 50/53</p><p>Qual a finalidade do Tensorflow?</p><p>Parabéns! A alternativa C está correta.</p><p>A opção C está correta, pois o tensorflow foi primeiramente criado</p><p>para cálculos matemáticos feitos de forma distribuída sobre grafos;</p><p>a opção A é incorreta, pois o TensorFlow é um framework de</p><p>cálculos distribuídos; a opção B é tarefa de outras bibliotecas que</p><p>não o TensorFlow; a opção D é incorreta, pois o TensorFlow pode</p><p>calcular</p><p>tensores, mas não é tarefa dele mantê-los como em um</p><p>banco de dados; a opção E está incorreta, pois ele faz multiplicação</p><p>de matrizes eventualmente, mas não é sua finalidade.</p><p>Considerações �nais</p><p>Neste conteúdo, entendemos a diferença entre modelos simbólicos e</p><p>subsimbólicos, bem como o porquê de as redes neurais se encaixarem</p><p>na categoria de modelos subsimbólicos. Vimos rapidamente os vários</p><p>tipos de redes neurais existentes e como podem ser aplicadas, além de</p><p>seus diferenciais.</p><p>Estudamos as definições conceituais dos componentes principais das</p><p>redes neurais, como as camadas de entrada, ocultas e de saída, e</p><p>A Criar planilhas.</p><p>B Criar relatórios.</p><p>C Executar cálculos distribuídos.</p><p>D Manter vetores.</p><p>E Multiplicar matrizes.</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 51/53</p><p>entendemos quais são os hiperparâmetros e funções de ativação.</p><p>Vimos como ocorre a relação entre a função de custo, muitas vezes</p><p>medido pela perda (loss), e o aprendizado da rede, já que quanto menor</p><p>o custo ou a distância da predição para a realidade, melhor se sairá o</p><p>modelo.</p><p>No final, conseguimos experimentar as redes neurais em uma grande</p><p>caixa de ferramentas do cientista de dados moderno, com as bibliotecas</p><p>TensorFlow e Keras na linguagem Python, no exemplo mais clássico, o</p><p>MNIST, que serve até como benchmark de modelos de redes neurais de</p><p>um modo geral. Ao demonstrarmos a implementação do modelo de</p><p>redes neurais, entendemos não apenas os diferentes métodos do Keras,</p><p>que permitem abstrair as camadas da rede, mas também vimos na</p><p>prática, com os resultados, o processo de aprendizado, que começa</p><p>com um custo alto, e vai decaindo à medida que a rede vai “entendendo”</p><p>a realidade. Além disso, foi possível utilizar o relatório de classificação</p><p>para que observássemos as métricas de interesse, e as métricas</p><p>diferenciadas por valor possível de classe, um conceito importante no</p><p>tratamento de problemas de classificação e multiclassificação.</p><p>Podcast</p><p>Para encerrar, vamos ouvir um resumo sobre redes neurais.</p><p></p><p>Explore +</p><p>Dentro da área de redes neurais, busque por LBGFS, o ADAM, e outros</p><p>otimizadores de gradiente descendente.</p><p>Para um aprofundamento matemático do tema, recomendamos revisar</p><p>os conceitos de Cálculo, principalmente, otimização de duas variáveis,</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 52/53</p><p>regra de cadeia e cálculo do gradiente.</p><p>Assista ao vídeo Mas o que *é* uma Rede Neural? Deep Learning,</p><p>capítulo 1, no canal 3Blue1Brown Series no YouTube. Há a opção de</p><p>legenda em português.</p><p>Referências</p><p>AMARAL, F. Introdução à Ciência de Dados: mineração de dados e big</p><p>data. Rio de Janeiro: Alta Books, 2016.</p><p>BENGIO, Y. Practical recommendations for gradient-based training of</p><p>deep architectures. In: Neural networks: Tricks of the trade. Berlin:</p><p>Springer, 2012. p. 437-478.</p><p>ESCOVEDO, T.; KOSHIYAMA, A. Introdução a Data Science — Algoritmos</p><p>de Machine Learning e métodos de análise. São Paulo: Casa do Código,</p><p>2020.</p><p>GOODFELLOW, I.; BENGIO, Y.; COURVILLE, A. Deep learning. Cambridge:</p><p>MIT Press, 2016.</p><p>GOODFELLOW, I. J.; VINYALS, O.; SAXE, A. M. Qualitatively</p><p>characterizing neural network optimization problems. Ithaca: Cornell</p><p>University, 2014.</p><p>Material para download</p><p>Clique no botão abaixo para fazer o download do</p><p>conteúdo completo em formato PDF.</p><p>Download material</p><p>O que você achou do conteúdo?</p><p>javascript:CriaPDF()</p><p>13/03/24, 19:36 Redes neurais feedforward</p><p>https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 53/53</p><p>Relatar problema</p>