Redes Neurais Feedforward
Redes Neurais Feedforward
Descrição
Propósito
Preparação
Objetivos
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 1/53
05/12/2023, 08:18 Redes neurais feedforward
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
Tensorflow/Keras
Aplicar redes neurais feedforward usando Tensorflow/Keras.
Introdução
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.
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 2/53
05/12/2023, 08:18 Redes neurais feedforward
1 - Conceitos básicos
Ao final deste módulo, você será capaz de identificar conceitos básicos de redes neurais
artificiais.
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 3/53
05/12/2023, 08:18 Redes neurais feedforward
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.
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 4/53
05/12/2023, 08:18 Redes neurais feedforward
Questão 1
Questão 2
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 5/53
05/12/2023, 08:18 Redes neurais feedforward
Questão 3
Chave de respostaexpand_more
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 6/53
05/12/2023, 08:18 Redes neurais feedforward
linear_scale
Redes neurais convolucionais
linear_scale
Redes Neurais recorrentes
linear_scale
Redes neurais feedforward
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 7/53
05/12/2023, 08:18 Redes neurais feedforward
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 8/53
05/12/2023, 08:18 Redes neurais feedforward
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).
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 9/53
05/12/2023, 08:18 Redes neurais feedforward
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 10/53
05/12/2023, 08:18 Redes neurais feedforward
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.
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.
Florestas aleatórias
Temos altura das árvores, quantidade de classificadores por floresta etc.
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 11/53
05/12/2023, 08:18 Redes neurais feedforward
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 é:
1
f (x) =
−x
1 + e
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 12/53
05/12/2023, 08:18 Redes neurais feedforward
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.
x −x
e − e
tanh(x) =
x −x
e + e
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 13/53
05/12/2023, 08:18 Redes neurais feedforward
f (x) = max(0, x)
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).
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 14/53
05/12/2023, 08:18 Redes neurais feedforward
Classificaçã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.
Exemplo
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 15/53
05/12/2023, 08:18 Redes neurais feedforward
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).
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:
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 16/53
05/12/2023, 08:18 Redes neurais feedforward
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.
video_library
Conceitos de redes neurais
feedforward
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 17/53
05/12/2023, 08:18 Redes neurais feedforward
Questão 1
D Embaralhar os dados.
E Reduzir Dimensionalidade.
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 18/53
05/12/2023, 08:18 Redes neurais feedforward
Questão 2
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 19/53
05/12/2023, 08:18 Redes neurais feedforward
2 - Algoritmo de backpropagation
Ao final 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.
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 20/53
05/12/2023, 08:18 Redes neurais feedforward
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.
Questão 1
C
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 21/53
05/12/2023, 08:18 Redes neurais feedforward
Questão 2
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 22/53
05/12/2023, 08:18 Redes neurais feedforward
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
Chave de respostaexpand_more
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.
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);
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 24/53
05/12/2023, 08:18 Redes neurais feedforward
Camada 1
(1) (1) (1)
N = w x + b
(1) (1)
A = f (N )
Camada 2
(2) (2) (1) (2)
N = w A + b
(2) (2)
A = f (N )
Camada 3
(3) (2)
í
Sa da = w A
Atenção!
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 25/53
05/12/2023, 08:18
w
(1)
=
⎢⎥
⎡
⎣
w1.1.1
w1.2.1
⋮
Redes neurais feedforward
⋯
w1.1.4
w1.2.4
x =
⎡
b = [
b1
b2
]
x1
x2
x3
x4
⎤
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html#
⎤
26/53
05/12/2023, 08:18 Redes neurais feedforward
C = í
custo(sa da, real) ∣ real ⊂ {y, classe
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.
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 27/53
05/12/2023, 08:18 Redes neurais feedforward
dC dC dC
= [ ,…, ]
dx dx1 dxn
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 28/53
05/12/2023, 08:18 Redes neurais feedforward
L
dC dC dN
j
= (regra da cadeia)
L L L
dw dN dw
jk j jk
L m L L−1 L
N = Σ w A + b
j k=1 jk k j
L
dN
j
L−1
= A (Derivando)
L k
dw
jk
dC dC
L−1
= A (Fim)
L L k
dw dN
jk j
L
dC dC dN
j
= (regra da cadeia)
L L L
db dN db
j j j
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 29/53
05/12/2023, 08:18 Redes neurais feedforward
L
dN
j
= 1(Derivando)
L
db
j
dC dC
= 1(Fim)
L L
db dN
j j
dC
L
δ =
j
L
dN
j
dC
w := w − ϵ
dw
dC
b := b − ϵ
db
Fim
Sendo que:
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 30/53
05/12/2023, 08:18 Redes neurais feedforward
replay
Épocas
Número de vezes em que a bolinha será jogada.
speed
Taxa de aprendizado
A velocidade da bolinha ou a distância entre um salto e outro.
swap_calls
Viés
Lufadas de vento imaginárias.
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 31/53
05/12/2023, 08:18 Redes neurais feedforward
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.
video_library
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 32/53
05/12/2023, 08:18 Redes neurais feedforward
Questão 1
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 33/53
05/12/2023, 08:18 Redes neurais feedforward
Questão 2
A Calcular a acurácia.
E Calcular o recall.
3 - Tensorflow/Keras
Ao final deste módulo, você será capaz de aplicar redes neurais feedforward usando
Tensorflow/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.
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 35/53
05/12/2023, 08:18 Redes neurais feedforward
Questão 1
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 36/53
05/12/2023, 08:18 Redes neurais feedforward
Questão 2
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 37/53
05/12/2023, 08:18 Redes neurais feedforward
Questão 3
Chave de respostaexpand_more
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
content_copy
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.
Python
content_copy
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 39/53
05/12/2023, 08:18 Redes neurais feedforward
Instalação de bibliotecas.
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.
Python
content_copy
Instalação do Keras.
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 40/53
05/12/2023, 08:18 Redes neurais feedforward
Python
content_copy
Importação de bibliotecas.
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.
classification 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).
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 41/53
05/12/2023, 08:18 Redes neurais feedforward
Pyplot
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.
Python
content_copy
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 42/53
05/12/2023, 08:18 Redes neurais feedforward
Acessando o MNIST.
Imagem Dados
Python
content_copy
Python
content_copy
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 43/53
05/12/2023, 08:18 Redes neurais feedforward
Python
content_copy
Adicionando camadas.
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 44/53
05/12/2023, 08:18 Redes neurais feedforward
Python
content_copy
Treinando o modelo.
Python
content_copy
Comparando valores.
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 45/53
05/12/2023, 08:18 Redes neurais feedforward
Relatório de classificação.
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 46/53
05/12/2023, 08:18 Redes neurais feedforward
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
content_copy
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 47/53
05/12/2023, 08:18 Redes neurais feedforward
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.
video_library
Demonstração de rede neural
feedforward com Tensorflow 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á!
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 48/53
05/12/2023, 08:18 Redes neurais feedforward
Questão 1
C embaralhar os dados.
D organizar os dados.
E pré-processar os dados.
Questão 2
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 49/53
05/12/2023, 08:18 Redes neurais feedforward
A Criar planilhas.
B Criar relatórios.
D Manter vetores.
E Multiplicar matrizes.
Considerações finais
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.
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 50/53
05/12/2023, 08:18 Redes neurais feedforward
headset
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.
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 51/53
05/12/2023, 08:18 Redes neurais feedforward
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.
Download material
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 52/53
05/12/2023, 08:18 Redes neurais feedforward
Relatar problema
https://stecine.azureedge.net/repositorio/00212ti/04163/index.html# 53/53