Buscar

Ecossistema Hadoop Tema 1 Redes neurais feedforward

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

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

Continue navegando