Unidade I — Fundamentos
Deep Learning: Inteligência Artificial no Cotidiano

Ciência de Dados
Nesta unidade, vamos explorar como a Inteligência Artificial permeia nosso dia a dia e construir, passo a passo, os fundamentos que sustentam o Deep Learning — da configuração do ambiente de desenvolvimento até a simulação do primeiro neurônio artificial.
Profª Maristela Nunes de Oliveira
Encontro 1
Visão Geral
Onde encontramos Inteligência Artificial no dia a dia?
Antes de mergulharmos em fórmulas e código, vale a pena perceber que a IA já faz parte da rotina de quase todas as pessoas — muitas vezes de forma invisível. Cada vez que você abre um aplicativo de streaming, pede uma rota no GPS ou desbloqueia o celular com o rosto, algoritmos inteligentes estão trabalhando nos bastidores. O objetivo deste primeiro momento é justamente despertar a consciência sobre a presença da IA ao nosso redor.
Netflix e Spotify
Sistemas de recomendação analisam milhões de interações de usuários para sugerir filmes, séries e músicas com precisão surpreendente. Modelos de filtragem colaborativa e deep learning são treinados continuamente com seus cliques, pausas e avaliações.
Google Maps
Algoritmos de previsão de tráfego combinam dados históricos, GPS em tempo real e redes neurais para estimar tempos de viagem e sugerir rotas alternativas — tudo atualizado a cada segundo.
Assistentes Virtuais
Alexa, Siri e Google Assistant utilizam processamento de linguagem natural (NLP) e modelos de deep learning para entender comandos de voz, responder perguntas e controlar dispositivos domésticos.
Reconhecimento Facial
Do desbloqueio do celular à segurança em aeroportos, redes neurais convolucionais (CNNs) identificam rostos com altíssima precisão, comparando milhares de pontos faciais em milissegundos.
💬 Pergunta para a turma: Quem já usou IA hoje sem perceber? Pense no caminho até aqui — autocorretor, filtro de spam, sugestão de rotas, feed de redes sociais...
Encontro 1
Atividade
Atividade — IA ao Nosso Redor
Agora é a vez de vocês investigarem! Esta atividade prática tem como objetivo desenvolver o pensamento crítico sobre como a Inteligência Artificial funciona por trás das tecnologias que usamos todos os dias. Ao refletir sobre problemas, dados e aprendizado, vocês começam a construir a mentalidade de um cientista de dados.
Instruções
1
Formem grupos de 3 alunos
Escolham colegas com repertórios diferentes — isso enriquece a discussão e traz perspectivas variadas sobre o uso de tecnologia.
2
Escolham 3 tecnologias com IA
Podem ser apps, dispositivos ou serviços. Exemplos: TikTok, Uber, tradutores automáticos, filtros do Instagram, chatbots de atendimento.
3
Respondam as 3 perguntas para cada tecnologia
Anotem as respostas para compartilhar com a turma ao final da atividade.
Perguntas Norteadoras
1️⃣ Qual problema ela resolve?
Identifiquem a dor ou necessidade do usuário que a IA atende. Toda boa solução começa com um problema bem definido.
2️⃣ Que dados ela usa?
Pensem nos tipos de dados: texto, imagem, áudio, localização, histórico de navegação, cliques...
3️⃣ Como ela pode aprender?
A máquina aprende sozinha? Precisa de exemplos rotulados? Melhora com o tempo? Reflitam sobre o tipo de aprendizado envolvido.

Tempo: 15 minutos para discussão em grupo + 10 minutos para compartilhamento com a turma.
Encontro 1
Conceito Central
O que é Inteligência Artificial?
Inteligência Artificial (IA) é um campo da Ciência da Computação dedicado à criação de sistemas capazes de realizar tarefas que, historicamente, exigiam inteligência humana. Isso inclui aprender com experiências passadas, raciocinar sobre informações incompletas, reconhecer padrões em grandes volumes de dados e tomar decisões autônomas. A IA não é uma tecnologia única, mas sim um guarda-chuva que abriga diversas subáreas e técnicas.
Aprender
Sistemas de IA melhoram seu desempenho com base em dados e experiências, ajustando parâmetros internos sem programação explícita para cada cenário.
Raciocinar
Capacidade de inferir conclusões lógicas a partir de premissas, resolver problemas e planejar sequências de ações para atingir objetivos.
Reconhecer Padrões
Identificar regularidades em dados complexos — desde rostos em fotografias até anomalias em transações financeiras.
Tomar Decisões
Escolher a melhor ação entre múltiplas alternativas com base em critérios aprendidos, otimizando resultados esperados.
Principais Áreas de Aplicação
Visão Computacional
Permite que máquinas "vejam" e interpretem imagens e vídeos — desde diagnósticos médicos em radiografias até carros autônomos que detectam pedestres.
Processamento de Linguagem Natural (NLP)
Habilita computadores a entender, gerar e traduzir linguagem humana. É a base de chatbots, tradutores automáticos e assistentes de voz.
Robótica Inteligente
Robôs equipados com IA executam tarefas em ambientes dinâmicos — de linhas de montagem industriais a cirurgias assistidas por computador.
Encontro 1
Hierarquia
IA vs Machine Learning vs Deep Learning
Uma das confusões mais comuns para iniciantes é tratar IA, Machine Learning e Deep Learning como sinônimos. Na verdade, eles formam uma hierarquia de conceitos, onde cada nível é um subconjunto mais especializado do anterior. Entender essa distinção é fundamental para saber quando e por que usar cada abordagem.
1
2
3
1
Deep Learning
Redes neurais profundas
2
Machine Learning
Aprendizado com dados
3
Inteligência Artificial
Área ampla da computação
🧠 Inteligência Artificial
É o campo mais amplo. Inclui qualquer técnica que permita a uma máquina simular comportamento inteligente — desde sistemas baseados em regras (if/then) até os modelos mais sofisticados de aprendizado. Surgiu formalmente em 1956 na conferência de Dartmouth.
📊 Machine Learning
Subárea da IA em que sistemas aprendem padrões a partir de dados, sem serem explicitamente programados para cada tarefa. Inclui algoritmos como árvores de decisão, SVM, regressão logística e random forests. O engenheiro humano ainda precisa selecionar e transformar os atributos (features).
🔬 Deep Learning
Subárea do ML que usa redes neurais com múltiplas camadas (profundas) para aprender representações hierárquicas dos dados automaticamente. Elimina a necessidade de engenharia manual de atributos e domina tarefas como visão computacional, NLP e geração de conteúdo.
Encontro 1
Exemplo Prático
Reconhecimento de Imagens: ML Tradicional vs Deep Learning
Para entender na prática a diferença entre Machine Learning tradicional e Deep Learning, vamos analisar uma tarefa clássica: classificar imagens de gatos e cachorros. Essa comparação ilustra por que o Deep Learning revolucionou a visão computacional.
🔧 Machine Learning Tradicional
No ML clássico, o cientista de dados precisa fazer engenharia manual de atributos (feature engineering). Isso significa definir explicitamente o que a máquina deve observar: bordas, texturas, cores, formas. É um processo trabalhoso, limitado pela criatividade humana e que não escala bem para problemas complexos.
  • Extração manual de features (HOG, SIFT, LBP)
  • Dependência forte do conhecimento do especialista
  • Desempenho limitado em imagens variadas
  • Dificuldade com rotação, iluminação e oclusão
🧠 Deep Learning (CNNs)
Redes Neurais Convolucionais (CNNs) aprendem automaticamente quais atributos são relevantes diretamente dos pixels. As primeiras camadas detectam bordas simples; camadas intermediárias combinam bordas em texturas e formas; camadas profundas reconhecem partes do objeto (orelhas, olhos, focinho).
  • Aprendizado automático de representações
  • Escala para milhões de imagens sem intervenção
  • Robustez a variações de ângulo e iluminação
  • Acurácia superior em benchmarks (ImageNet)
A imagem acima ilustra como uma CNN processa uma imagem em camadas: dos pixels brutos até a classificação final. Essa capacidade de aprender hierarquias de representações é o que torna o Deep Learning tão poderoso para tarefas perceptivas.
Encontro 1
Quiz
Quiz Rápido
Antes de encerrarmos o primeiro encontro, vamos verificar a compreensão dos conceitos apresentados. Reflita sobre a pergunta abaixo antes de conferir a resposta.
Pergunta
Qual dessas tecnologias mais utiliza Deep Learning?
1
Filtro de spam
Geralmente usa ML tradicional (Naive Bayes, SVM) com engenharia de features sobre o texto do e-mail.
2
Reconhecimento facial
Utiliza redes neurais convolucionais profundas para mapear e comparar milhares de pontos faciais.
3
Sistema de notas de alunos
Baseado em regras simples e cálculos aritméticos — não requer aprendizado de máquina.
4
Planilha Excel
Ferramenta de produtividade com fórmulas determinísticas — sem componente de aprendizado.
Resposta
B) Reconhecimento facial
O reconhecimento facial é uma das aplicações mais emblemáticas do Deep Learning. Redes como FaceNet (Google) e DeepFace (Meta) utilizam arquiteturas profundas com dezenas de camadas convolucionais para:
  • Detectar rostos em imagens com múltiplas pessoas
  • Alinhar o rosto independentemente do ângulo
  • Extrair embeddings — vetores numéricos que representam a identidade facial
  • Comparar embeddings para verificar se dois rostos pertencem à mesma pessoa
Essas redes alcançam acurácias superiores a 99,6% em benchmarks como o LFW (Labeled Faces in the Wild), superando a capacidade humana de reconhecimento em condições controladas.
Encontro 1
Fechamento
Por que o Deep Learning evoluiu tanto nos últimos anos?
O conceito de redes neurais existe desde a década de 1940, mas somente na última década o Deep Learning explodiu em resultados práticos. Isso se deve a uma convergência de três fatores que, juntos, criaram o cenário perfeito para a revolução da IA que vivemos hoje.
Big Data
A era digital gerou volumes massivos de dados — imagens, textos, vídeos e interações online. Redes profundas precisam de milhões de exemplos para aprender representações robustas. Sem Big Data, o DL não teria combustível.
GPUs e Hardware
Placas gráficas (GPUs) realizam milhares de operações matemáticas em paralelo, acelerando o treinamento de redes neurais em até 100x comparado a CPUs. Depois vieram TPUs e chips especializados para IA.
Avanços Algorítmicos
Técnicas como dropout, batch normalization, ReLU, transfer learning e arquiteturas inovadoras (ResNet, Transformers) resolveram problemas históricos como vanishing gradients e overfitting severo.

📌 Para refletir: Esses três pilares continuam evoluindo. Dados sintéticos, chips neuromórficos e arquiteturas como Transformers prometem levar o DL ainda mais longe. O que virá a seguir?
Encontro 3
Revisão de Machine Learning
Pipeline de ML — Da coleta de dados à avaliação do modelo
Antes de avançarmos para Deep Learning, é fundamental consolidar os conceitos de Machine Learning tradicional. Neste encontro, vamos revisar o pipeline completo de ML com um exemplo prático usando o dataset Iris — um clássico da área.
Encontro 3
Pipeline
Etapas do Pipeline de Machine Learning
Todo projeto de Machine Learning segue um conjunto de etapas bem definidas. Dominar esse pipeline é o que diferencia um praticante iniciante de um cientista de dados eficiente. Cada etapa tem seus desafios próprios e influencia diretamente a qualidade do modelo final.
1
Coleta de Dados
Identificar e obter os dados relevantes para o problema. Podem vir de APIs, bancos de dados, arquivos CSV, web scraping ou sensores IoT.
2
Limpeza
Tratar valores ausentes, remover duplicatas, corrigir inconsistências e lidar com outliers que podem distorcer o aprendizado.
3
Exploração (EDA)
Análise exploratória com estatísticas descritivas e visualizações para entender distribuições, correlações e padrões nos dados.
4
Treinamento
Selecionar o algoritmo, definir hiperparâmetros e ajustar o modelo aos dados de treino. O modelo aprende os padrões subjacentes.
5
Avaliação
Medir o desempenho com dados de teste usando métricas como acurácia, precisão, recall e F1-score. Validação cruzada aumenta a confiabilidade.
Encontro 3
Dataset
Dataset Iris — Um Clássico do Machine Learning
O Iris dataset, criado por Ronald Fisher em 1936, é provavelmente o dataset mais famoso da história do Machine Learning. Apesar de simples, ele é perfeito para aprender conceitos fundamentais de classificação. O objetivo é classificar espécies de flores com base em medidas de suas pétalas e sépalas.
Variáveis do Dataset
São 150 amostras divididas igualmente entre 3 espécies: Iris setosa, Iris versicolor e Iris virginica. A setosa é linearmente separável das outras duas, enquanto versicolor e virginica se sobrepõem parcialmente — o que torna o problema interessante.
Encontro 3
Código
Treinando e Avaliando o Modelo
Vamos implementar um classificador completo usando o Scikit-learn. O fluxo segue exatamente as etapas do pipeline que estudamos: carregar dados, dividir em treino/teste, treinar o modelo e avaliar os resultados.
📥 Carregar e Dividir Dados
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

iris = load_iris()
X = iris.data
y = iris.target

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.3, random_state=42
)

print(f"Treino: {X_train.shape[0]} amostras")
print(f"Teste: {X_test.shape[0]} amostras")
A função train_test_split separa aleatoriamente 70% dos dados para treino e 30% para teste. O parâmetro random_state garante reprodutibilidade.
🧠 Treinar e Avaliar
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score

model = DecisionTreeClassifier()
model.fit(X_train, y_train)

pred = model.predict(X_test)
acc = accuracy_score(y_test, pred)
print(f"Acurácia: {acc:.2%}")
A Árvore de Decisão aprende regras de divisão sobre os atributos para separar as classes. É um modelo interpretável e excelente ponto de partida.

Pergunta para reflexão: A acurácia é suficiente para avaliar um modelo? E se as classes forem desbalanceadas? Pense em cenários onde acurácia alta pode ser enganosa — como detecção de fraude, onde 99% das transações são legítimas.
Encontro 3
Atividade
Atividade — Experimentando com o Modelo
Agora é sua vez de explorar! O objetivo desta atividade é desenvolver a intuição experimental — entender como diferentes escolhas afetam o desempenho do modelo. Modifique os parâmetros abaixo e observe como a acurácia se comporta.
1
Trocar o Algoritmo
Substitua DecisionTreeClassifier por outros algoritmos: RandomForestClassifier, KNeighborsClassifier ou SVC. Cada um tem uma abordagem diferente para aprender padrões. Qual alcança a melhor acurácia?
2
Alterar o Tamanho do Teste
Experimente test_size=0.1, 0.2, 0.4 e 0.5. Como o tamanho do conjunto de teste afeta a estabilidade da acurácia? Menos dados de treino prejudicam o modelo?
3
Ajustar Hiperparâmetros
Para a Árvore de Decisão, teste max_depth=2, 3, 5, None. Para KNN, varie n_neighbors. Hiperparâmetros controlam a complexidade do modelo e o equilíbrio entre underfitting e overfitting.

Tempo: 30 minutos. Anote os resultados em uma tabela para compartilhar com a turma. Compare os resultados entre os colegas — vocês obtiveram os mesmos valores com os mesmos parâmetros?
Encontro 3
Discussão
Limitações do Machine Learning Tradicional
Embora o ML clássico funcione muito bem para o Iris dataset e muitos outros problemas estruturados, ele apresenta limitações significativas quando aplicado a dados complexos e não estruturados. É justamente aqui que o Deep Learning entra em cena.
🔧 Engenharia Manual de Atributos
No ML tradicional, o cientista de dados precisa selecionar e criar manualmente as features relevantes. Isso exige conhecimento especializado do domínio e é extremamente trabalhoso para dados como imagens, áudio ou texto. Em visão computacional, por exemplo, seriam necessários atributos como histogramas de gradientes (HOG), descritores SIFT, etc.
📊 Dificuldade com Dados Complexos
Imagens possuem milhares de pixels, áudios são sequências temporais ricas e textos têm semântica contextual. Algoritmos tradicionais como SVM e Random Forest não escalam bem para esses tipos de dados de alta dimensionalidade sem uma etapa pesada de feature engineering.
📈 Plateau de Desempenho
A partir de certo volume de dados, modelos tradicionais param de melhorar — não conseguem capturar padrões mais sutis. Redes neurais profundas, por outro lado, continuam melhorando com mais dados, graças à sua capacidade de aprender representações hierárquicas cada vez mais abstratas.
Essas limitações motivaram a ascensão do Deep Learning, que automatiza a extração de features e alcança desempenho superior em tarefas perceptivas — como veremos nos próximos encontros.
Encontro 4
Redes Neurais
Computação Inspirada no Cérebro
Neste encontro, faremos a ponte entre biologia e computação. Vamos entender como o cérebro humano inspirou a criação dos neurônios artificiais e redes neurais — a base de todo o Deep Learning.
Encontro 4
Arquiteturas
Redes Neurais: Variedade de Arquiteturas
Assim como o cérebro tem regiões especializadas, existem diferentes tipos de Redes Neurais, cada uma otimizada para um tipo específico de dado e problema. Vamos introduzir duas das mais importantes.
Redes Neurais Convolucionais (CNNs)
Especializadas em dados com estrutura espacial, como imagens e vídeos. Capturam padrões hierárquicos e características visuais.
Redes Neurais Recorrentes (RNNs)
Projetadas para processar dados sequenciais e séries temporais, como texto, áudio e dados financeiros. Possuem "memória" para contextualizar informações.
RNNs: A Memória da Sequência
Ao contrário das redes tradicionais (feed-forward), as RNNs têm conexões que formam ciclos, permitindo que a informação de entradas anteriores influencie a saída atual. Isso as torna ideais para tarefas como tradução automática, previsão de palavras, reconhecimento de fala e análise de séries temporais.
Encontro 4
Biologia
O Cérebro Humano — A Inspiração Original
O cérebro humano é a máquina de processamento mais sofisticada que conhecemos. Com aproximadamente 86 bilhões de neurônios e cerca de 100 trilhões de conexões sinápticas, ele realiza tarefas que ainda desafiam os computadores mais poderosos — como reconhecer rostos instantaneamente ou entender linguagem ambígua.
Estrutura do Neurônio Biológico
Dendritos
Extensões ramificadas que recebem sinais de outros neurônios. Funcionam como as "antenas" do neurônio, captando impulsos elétricos de milhares de fontes simultaneamente.
Corpo Celular (Soma)
Processa e integra todos os sinais recebidos. Se a soma dos estímulos ultrapassa um limiar (threshold), o neurônio "dispara" — gerando um impulso elétrico.
Axônio
Fibra longa que transmite o sinal processado para outros neurônios. Pode ter até 1 metro de comprimento e transmitir impulsos a até 120 m/s.
Sinapses
Junções especializadas onde o sinal é transmitido entre neurônios por meio de neurotransmissores químicos. A força da sinapse pode ser fortalecida ou enfraquecida — este é o mecanismo biológico de aprendizado.
A analogia é poderosa: assim como sinapses biológicas se fortalecem com o uso repetido (aprendizado hebbiano), os pesos em redes neurais artificiais são ajustados durante o treinamento para melhorar a performance do modelo.
Encontro 4
Modelo Artificial
Do Neurônio Biológico ao Neurônio Artificial
O neurônio artificial é uma simplificação matemática do neurônio biológico. Proposto por McCulloch e Pitts em 1943, ele captura a essência do processamento neural: receber entradas, ponderar sua importância, somar e decidir se "dispara" ou não.
Componentes do Neurônio Artificial
Entradas (x)
Os dados que alimentam o neurônio. Em uma imagem, cada pixel é uma entrada. Em dados tabulares, cada atributo é uma entrada. Analogia: os dendritos biológicos.
Pesos (w)
Valores numéricos que determinam a importância de cada entrada. Pesos maiores indicam conexões mais fortes. Analogia: a força sináptica. São ajustados durante o treinamento.
Bias (b)
Um valor constante que permite ao neurônio deslocar sua função de ativação. Funciona como um ajuste fino que dá flexibilidade ao modelo.
Função de Ativação (f)
Introduz não-linearidade no modelo, permitindo que a rede aprenda padrões complexos. Exemplos: sigmoid, ReLU, tanh. Analogia: o limiar de disparo do neurônio biológico.
Fórmula Matemática
y = f\left(\sum_{i=1}^{n} w_i \cdot x_i + b\right)
Onde:
  • x_i → entrada i
  • w_i → peso associado à entrada i
  • b → bias (viés)
  • f → função de ativação
  • y → saída do neurônio
O neurônio calcula a soma ponderada das entradas, adiciona o bias e aplica a função de ativação. O resultado é a saída que será passada para o próximo neurônio ou usada como previsão final.
Encontro 4
Reflexão Final
O que Acontece Quando Alteramos os Pesos?
Esta é talvez a pergunta mais importante deste encontro — porque a resposta revela o mecanismo fundamental de aprendizado em redes neurais.
A Essência do Aprendizado
Quando alteramos os pesos de um neurônio, estamos essencialmente dizendo ao modelo quais entradas são mais importantes para a decisão. Um peso maior amplifica a influência de uma entrada; um peso próximo de zero a ignora; um peso negativo inverte seu efeito.
Treinar uma rede neural é, fundamentalmente, encontrar o conjunto ótimo de pesos e bias que minimiza o erro nas previsões. O algoritmo de backpropagation, que estudaremos em breve, faz exatamente isso: calcula como cada peso contribui para o erro total e ajusta-o na direção que reduz esse erro.
Imagine uma rede com milhões de pesos (como redes modernas). O espaço de todas as combinações possíveis de pesos é imenso — e encontrar a configuração ideal é como procurar o ponto mais baixo em uma paisagem montanhosa multidimensional.
Conectando os Conceitos
Neurônio Biológico
Sinapses se fortalecem com uso repetido → aprendizado por reforço natural
Neurônio Artificial
Pesos são ajustados por backpropagation → aprendizado por otimização matemática
Rede Neural Profunda
Milhões de pesos organizados em camadas → representações hierárquicas dos dados

📌 Nos próximos encontros, vamos entender como o backpropagation ajusta automaticamente esses pesos, como funções de perda guiam o aprendizado e como arquiteturas profundas (CNNs, RNNs, Transformers) revolucionaram a IA.
Arquitetura
Diagrama de uma Rede Neural
Quando conectamos múltiplos neurônios em camadas, formamos uma rede neural artificial. A arquitetura mais básica é a rede feedforward (sem ciclos), onde a informação flui em uma única direção: da entrada para a saída, passando por camadas ocultas.
Camada de Entrada
Recebe os dados brutos. Cada neurônio representa um atributo (feature). No Iris dataset, seriam 4 neurônios — um para cada medida da flor. Não há processamento nesta camada, apenas passagem de dados.
Camada(s) Oculta(s)
Onde a "mágica" acontece. Neurônios aplicam transformações não-lineares para aprender representações dos dados. Quanto mais camadas ocultas, mais "profunda" a rede — e mais padrões complexos ela pode capturar.
Camada de Saída
Produz a previsão final. Para classificação, cada neurônio representa uma classe. A função softmax converte as saídas em probabilidades. O neurônio com maior probabilidade indica a classe prevista.
Cálculo
Fluxo do Neurônio Artificial: Entendendo o Cálculo
Imagine que nosso neurônio artificial é como um mini-decisor muito esperto. Ele recebe várias informações, pensa um pouco e dá uma resposta. Vamos ver como ele faz isso, passo a passo!
1. As Pistas (Entradas - x)
São as informações que o neurônio recebe, como se fossem pistas para resolver um mistério. Podem ser cores, formas, números, etc.
2. A Importância (Pesos - w)
Cada pista tem uma importância diferente. O neurônio usa os pesos para saber quais pistas são mais importantes e quais ele deve prestar mais atenção.
3. A Conta (Soma Ponderada)
Ele multiplica cada pista pela sua importância e soma tudo. É como se ele estivesse misturando todos os ingredientes de uma receita, adicionando um "temperinho extra" (bias) para ajustar o sabor.
4. A Decisão (Função de Ativação)
Depois de fazer a conta, ele decide se vai "disparar" ou não. É como um interruptor: se o resultado da conta for forte o suficiente, ele liga e manda a informação adiante; se não for, ele desliga.
5. A Resposta (Saída - y)
Essa é a resposta do neurônio, o que ele "decidiu". Essa resposta pode ser a previsão final, ou pode ir para outros neurônios continuarem o trabalho.
Analogia
🧠 Analogia 1: Reconhecimento Facial
Para entender como um neurônio artificial contribui para o aprendizado profundo, imagine o processo de reconhecimento facial, uma aplicação clássica do Deep Learning.
Características e Pesos
Quando seu cérebro vê um rosto, ele analisa diversas características simultaneamente para identificar a pessoa. Em uma rede neural, cada característica é uma entrada.
Algumas dessas características são mais cruciais para a identificação do que outras. Essa "importância" é representada pelos pesos de cada entrada no neurônio.
Ajustar esses pesos permite que a rede neural priorize as informações mais relevantes para sua "decisão".
Processamento em Camadas
Uma rede neural profunda aprende a reconhecer um rosto de forma hierárquica, construindo conhecimentos de padrões simples para complexos, camada por camada:
Essa capacidade de aprender representações complexas a partir de padrões simples em camadas sucessivas é a essência do Deep Learning.
Analogia
🧠 Analogia 2: Professor Corrigindo Provas
Para uma compreensão ainda mais intuitiva do fluxo de um neurônio artificial, imagine um professor em sala de aula que precisa decidir se um aluno será aprovado ou reprovado.
1
1. As "Entradas" do Aluno
O professor avalia vários fatores:
  • Nota da prova: Reflete o conhecimento adquirido.
  • Frequência: Indica o comparecimento às aulas.
  • Participação: Mostra o engajamento em sala.
Cada um desses fatores é uma entrada (input) para o neurônio.
2
2. A "Importância" de Cada Fator (Pesos)
O professor sabe que nem todos os fatores têm o mesmo peso:
Essas "importâncias" são os pesos (weights) que o neurônio atribui a cada entrada.
3
3. A "Média Ponderada" (Soma Ponderada)
Mentalmente, o professor calcula algo como:
resultado = (nota * peso_nota) +
            (frequência * peso_freq) +
            (participação * peso_part)
Isso é a soma ponderada, o cálculo central do neurônio.
4
4. O "Empurrãozinho" (Bias)
Agora, imagine que o professor tem uma regra extra: "Se o aluno demonstra esforço constante, eu dou uma 'ajudinha' extra para passar, mesmo que a nota esteja no limite."
Esse "empurrãozinho" adicional é o bias: um valor que desloca o resultado final, facilitando ou dificultando que o neurônio "ative".
5
5. A "Decisão Final" (Função de Ativação)
Após somar tudo (entradas ponderadas + bias), o professor aplica uma regra de decisão:
  • Se resultado > limite mínimo → Aluno Aprovado
  • Se resultado ≤ limite mínimo → Aluno Reprovado
Essa regra é a função de ativação, que decide se o neurônio "dispara" ou não.
Em essência, um neurônio artificial segue este fluxo: Entradas → Pesos → Soma Ponderada (+ Bias) → Função de Ativação → Decisão (Saída). Essa simplicidade é a base da complexidade do Deep Learning.
Encontro 4
Analogia
🧠 Analogia 3: Sistema de Recomendação (Netflix/Spotify)
Para ilustrar como uma rede neural "aprende" e toma decisões complexas, vamos usar o exemplo de um sistema de recomendação de filmes ou músicas.
No início, o sistema comete muitos erros, fazendo recomendações irrelevantes. No entanto, ao analisar o comportamento de milhões de usuários ao longo do tempo (quais filmes assistiram, por quanto tempo, o que gostaram ou não), a rede neural aprende a identificar padrões cada vez mais sofisticados, refinando suas previsões. Esse processo de ajuste contínuo com base nos dados é o treinamento da rede neural.

🎯 Resumo para Entender o Conceito
Em sua essência, as redes neurais agem como sistemas de decisão inteligentes. Elas recebem dados, atribuem "importâncias" (pesos) a cada um, combinam essas informações e, finalmente, utilizam uma função para chegar a uma decisão ou previsão.
💡 "Uma rede neural é um conjunto de neurônios artificiais que aprendem padrões nos dados ajustando seus pesos para reduzir erros."
Encontro 4
Prática
Atividade Prática — Simulando um Neurônio em Python
Vamos implementar um neurônio artificial do zero utilizando apenas NumPy, uma abordagem essencial para solidificar a base matemática antes de avançarmos para abstrações mais complexas. Ao construir a estrutura manualmente, você ganhará uma intuição profunda sobre como a soma ponderada, o papel do bias e as funções de ativação interagem para transformar dados em predições. Embora frameworks como TensorFlow e Keras automatizem esses cálculos com eficiência, dominar esses conceitos fundamentais garante que você não veja o aprendizado profundo como uma "caixa-preta", permitindo um controle muito mais refinado sobre seus futuros modelos.
🧪 Código: Neurônio Simples
import numpy as np

# Entradas (ex: 2 features)
x = np.array([0.5, 0.3])

# Pesos (força das conexões)
w = np.array([0.8, 0.2])

# Bias
b = 0.1

# Soma ponderada + bias
z = np.dot(x, w) + b

# Função de ativação (sigmoid)
def sigmoid(z):
    return 1 / (1 + np.exp(-z))

saida = sigmoid(z)
print(f"Soma ponderada: {z:.4f}")
print(f"Saída (sigmoid): {saida:.4f}")
🔬 Entendendo o Código
np.dot(x, w) calcula a soma ponderada: 0.5 \times 0.8 + 0.3 \times 0.2 = 0.46.
Adicionando o bias: 0.46 + 0.1 = 0.56.
A função sigmoid transforma esse valor para o intervalo (0, 1), produzindo algo como uma "probabilidade".

🎯 Experimentos para Fazer
Altere os pesos
Teste w = [0.2, 0.8] — qual entrada agora tem mais importância? Como muda a saída?
Mude o bias
Teste b = -1.0 e b = 2.0 — observe como o bias desloca a ativação.
Troque a ativação
Implemente ReLU: max(0, z). Compare o comportamento com sigmoid.
detalhe
🧠 O que é a Função Sigmoid?
A função Sigmoid é uma das funções de ativação mais comuns em redes neurais, transformando valores em uma escala probabilística.
Matematicamente, ela é definida como:
\sigma(z) = \frac{1}{1 + e^{-z}}
Onde z é o valor de entrada (a soma ponderada + bias) e e é o número de Euler (aproximadamente 2.71828).
📈 Formato e Saída da Função
O gráfico da função Sigmoid tem um formato característico de "S" (curva sigmoide), que mapeia qualquer número real para um valor entre 0 e 1.
Isso significa que, independentemente da magnitude do valor de entrada (z), a saída sempre estará nesse intervalo, ideal para representar probabilidades ou para a classificação binária.
Mecânica Interna
Entendendo o Cálculo
Cada neurônio artificial realiza uma série de operações matemáticas para transformar suas entradas em uma única saída. Vamos detalhar o processo, acompanhando os números do nosso exemplo em Python.
Cada neurônio artificial encapsula um pipeline matemático completo, realizando etapas cruciais como o cálculo da soma ponderada, o ajuste via bias e a aplicação de uma função de ativação não linear. Seguir esses números passo a passo, como fizemos em nosso exemplo em Python, é a melhor forma de desmistificar o que ocorre "sob o capô" das redes neurais, revelando a lógica matemática que sustenta o aprendizado. Compreender esse mecanismo fundamental é essencial para o Deep Learning, pois são essas mesmas operações elementares, repetidas em escalas massivas através de milhões de conexões e camadas, que dão origem a comportamentos inteligentes complexos e fascinantes.
01
Entradas (x)
Os dados que alimentam o neurônio. No exemplo: x = [0.5, 0.3].
02
Pesos (w)
Determinamos a importância de cada entrada. No exemplo: w = [0.8, 0.2].
03
Bias (b)
Um valor constante para ajustar o limite de ativação. No exemplo: b = 0.1.
04
Soma Ponderada (z)
Cálculo da influência combinada das entradas, pesos e bias: z = (0.5 \times 0.8) + (0.3 \times 0.2) + 0.1 = 0.4 + 0.06 + 0.1 = 0.56.
05
Função de Ativação (f)
Transforma z em uma saída final, geralmente entre 0 e 1 (sigmoid). No exemplo: f(0.56) \approx 0.6365.
06
Saída (y)
O valor final do neurônio, indicando seu grau de ativação ou previsão. No exemplo: 0.6365.

A saída de 0.6365 indica uma ativação moderada. Se considerarmos um limiar de 0.5, o neurônio "ativaria" nesse cenário.
Resumindo:
O neurônio recebe entradas, multiplica cada uma pelo seu peso, soma tudo, adiciona um bias e passa esse valor por uma função de ativação. O resultado final é a saída do neurônio. Uma rede neural nada mais é do que muitos neurônios fazendo isso ao mesmo tempo
Encontro 4
Exercício Prático
Exercício Prático: O Neurônio Decisor
Vamos treinar um neurônio artificial para simular um processo de decisão simples, entendendo como ele "aprende" a classificar um estudante como "aprovado" ou "reprovado".
Problema: Aprovar ou Reprovar?
Nosso neurônio decidirá se um estudante será aprovado ou reprovado com base em dois fatores principais: a nota da prova e a frequência às aulas.
Objetivo Pedagógico
Com este exercício, vocês entenderão na prática a função das entradas, pesos, bias, soma ponderada e função de ativação. Será a primeira experiência com o treinamento básico de um neurônio, ajustando seus pesos para obter o resultado desejado.
Conjunto de Dados de Exemplo
Utilizaremos um pequeno conjunto de dados para simular o comportamento do neurônio:
Onde 1 representa "aprovado" e 0 representa "reprovado".
Encontro 4
Prática
Implementando o Treinamento do Neurônio
Agora, vamos dar vida ao nosso neurônio decisor. Este código em Python simula um processo de "treinamento" simplificado, onde o neurônio ajusta seus pesos e bias para aprender a classificar estudantes como "aprovado" ou "reprovado" com base em notas e frequência.
💻 Código Completo: Neurônio Decisor
import numpy as np

# ---------------------------
# Dados de entrada
# ---------------------------

X = np.array([
    [0.9, 0.8], # Boa nota, boa frequência -> Aprovado
    [0.7, 0.6], # Nota ok, frequência ok -> Aprovado
    [0.2, 0.3], # Nota ruim, frequência ruim -> Reprovado
    [0.1, 0.4]  # Nota muito ruim, frequência ruim -> Reprovado
])

# Resultados esperados (1 = Aprovado, 0 = Reprovado)
y = np.array([1,1,0,0])

# ---------------------------
# Inicializando pesos
# ---------------------------

np.random.seed(1) # Para resultados reproduzíveis

w = np.random.rand(2) # Pesos para nota e frequência
b = np.random.rand()  # Bias inicial

# Taxa de aprendizado: controla o tamanho dos ajustes
lr = 0.1

# ---------------------------
# Função sigmoid
# ---------------------------

def sigmoid(z):
    return 1/(1+np.exp(-z))

# ---------------------------
# Treinamento
# ---------------------------

for epoch in range(20): # Número de "rodadas" de aprendizado

    print(f"\nEpoch {epoch}")

    for i in range(len(X)): # Itera sobre cada estudante

        x = X[i] # Entradas do estudante atual

        # Soma ponderada (influência das entradas + bias)
        z = np.dot(x,w) + b

        # Saída do neurônio (predição)
        pred = sigmoid(z)

        # Erro: quanto erramos na previsão?
        error = y[i] - pred

        # Ajuste dos pesos e bias (o "aprendizado")
        w += lr * error * x
        b += lr * error

        print("Entrada:",x)
        print("Predição:",round(pred,3))
        print("Erro:",round(error,3))

print("\n---------------------------")
print("Pesos finais:",np.round(w, 3))
print("Bias final:",round(b, 3))
print("---------------------------")
🔬 Entendendo o Processo
Este código ilustra o ciclo fundamental de treinamento de um neurônio artificial, um processo iterativo onde ele aprende com seus erros:
  • Inicialização: Pesos (`w`) e bias (`b`) são definidos aleatoriamente. A taxa de aprendizado (`lr`) determina o quão agressivamente o neurônio ajusta seus parâmetros.
  • Epochs e Iterações: O neurônio passa por várias "epochs", e em cada uma, revisa cada exemplo do dataset (`X`).
  • Predição: Para cada estudante (`x`), o neurônio calcula a soma ponderada e aplica a função sigmoid para fazer uma predição.
  • Cálculo do Erro: O erro é a diferença entre o resultado esperado (`y`) e a predição (`pred`).
  • Ajuste de Pesos: A parte crucial! Os pesos e o bias são atualizados na direção que minimiza o erro, multiplicando o erro pela taxa de aprendizado e pelas entradas. É assim que o neurônio "aprende" a dar mais importância a certas características.

🎯 Experimentos para Fazer
Observe o Aprendizado
Execute o código. Veja como o erro diminui ao longo das epochs, e como as predições se aproximam dos resultados esperados.
Altere a Taxa de Aprendizado (lr)
Experimente lr = 0.01 (lento) e lr = 1.0 (rápido). Como isso afeta a velocidade de convergência e os pesos finais?
Mude o Número de Epochs
Aumente para range(100) ou diminua para range(5). Mais epochs garantem um aprendizado mais robusto?
Terminologia Essencial: Epochs, Batches e Iterações
Para aprofundar no treinamento de redes neurais, é fundamental entender alguns termos que descrevem como os dados são processados durante o aprendizado.
Glossário de Termos
Exemplo Prático com Batches
Imagine que você tem um grande dataset e precisa treiná-lo de forma eficiente. Dividir o dataset em batches permite um treinamento mais estável e gerenciável.
Se você tem um Dataset com 1000 imagens e define um Batch Size de 100 imagens:
Isso acontece porque:
Número de Batches por Epoch = Tamanho do Dataset / Tamanho do Batch
10 Batches = 1000 imagens / 100 imagens por Batch
Portanto, são necessárias 10 iterações (processamento de 10 batches) para completar uma única epoch, ou seja, para o modelo ver todas as 1000 imagens do dataset uma vez.
O Fluxo do Treinamento
Este diagrama ilustra como um grande Dataset é segmentado em múltiplos Batches, e o processamento sequencial de todos esses batches constitui uma Epoch de treinamento.
Epoch = uma passagem completa do dataset pelo modelo.
Encontro 4
Prática
Segunda Atividade Prática — O Neurônio Como Classificador Simples
Nesta atividade, exploraremos como um único neurônio artificial, apesar de sua simplicidade, é capaz de realizar classificações binárias, operando sob uma lógica de sim ou não. Utilizaremos a função de ativação do tipo "degrau" para visualizar de forma intuitiva o seu limiar de decisão: o ponto exato em que a soma ponderada das entradas, ajustada pelo bias, supera uma barreira e faz o neurônio "disparar" uma saída ativa. Compreender esse mecanismo básico de limiar é fundamental, pois ele constitui o bloco de construção sobre o qual redes neurais complexas estruturam suas decisões camada por camada.
🧪 Código: Classificador de Neurônio
import numpy as np

# Definindo os parâmetros do neurônio
pesos = np.array([2.0, 1.0])  # Importância de cada entrada
bias = -2.5

# Função de Ativação (Step Function)
# Produz 1 se a soma ponderada + bias for >= 0, senão 0
def funcao_ativacao_degrau(z):
    return 1 if z >= 0 else 0

# Diferentes conjuntos de entradas para teste
conjuntos_de_entrada = [
    np.array([0.5, 0.5]),  # Exemplo 1: ambas baixas
    np.array([1.0, 0.5]),  # Exemplo 2: uma média, outra baixa
    np.array([0.0, 1.0]),  # Exemplo 3: uma zero, outra média
    np.array([1.5, 1.5])   # Exemplo 4: ambas altas
]

print("--- Simulação de Decisão do Neurônio ---")
for i, x in enumerate(conjuntos_de_entrada):
    # 1. Soma Ponderada + Bias
    valor_liquido = np.dot(x, pesos) + bias
    
    # 2. Aplicar Função de Ativação
    saida_do_neuronio = funcao_ativacao_degrau(valor_liquido)
    
    print(f"Entrada {i+1} ({x}):")
    print(f"  Soma Ponderada + Bias: {valor_liquido:.2f}")
    print(f"  Saída do Neurônio: {saida_do_neuronio}")
    print("--------------------------------------")
🔬 Entendendo a "Decisão"
Este neurônio está configurado para "ativar" (produzir 1) apenas quando a combinação de suas entradas, ponderadas pelos pesos e ajustada pelo bias, ultrapassa um certo limiar (zero na função degrau). Observe como as entradas x interagem com os pesos e o bias para influenciar a saída.

🎯 Experimentos para Fazer
Ajuste os Pesos
Mude pesos = np.array([0.5, 0.5]) e veja como isso altera as saídas. Agora, as entradas têm menos influência na decisão.
Modifique o Bias
Tente bias = -0.5 ou bias = -4.0. O bias funciona como um "gatilho" para a ativação — um bias mais alto torna o neurônio mais fácil de ativar, e vice-versa.
Novas Entradas
Adicione novos conjuntos de entrada à lista conjuntos_de_entrada e preveja a saída antes de executar o código. Isso ajuda a internalizar o processo de decisão do neurônio.
Atividade Prática
Atividade: Reconhecimento de Dígitos
Prepare-se para aplicar seus conhecimentos em um dos desafios clássicos do Deep Learning: o reconhecimento de dígitos manuscritos! Nesta atividade, você trabalhará com um projeto real no GitHub Classroom, aprendendo na prática como um modelo de rede neural classifica imagens.
Ambiente de Desenvolvimento
Acesse o repositório do GitHub Classroom para esta atividade, que já vem com um ambiente configurado para você.
Explore o Código
Analise a estrutura de um modelo de Deep Learning para classificação de imagens (MNIST) e entenda suas camadas.
Treine e Teste
Execute o treinamento, observe o processo de aprendizado e avalie o desempenho do modelo na identificação dos dígitos.
Personalize e Otimize
Experimente diferentes parâmetros (epochs, learning rate) para melhorar a precisão do seu classificador.
Esta é uma excelente oportunidade para solidificar seu entendimento sobre as redes neurais e o Deep Learning em um contexto real e interativo. Prepare-se para ver a IA em ação!
Repositório:

GitHub

GitHub - MARISTELAOLIVEIRA/ia-digitos

Contribute to MARISTELAOLIVEIRA/ia-digitos development by creating an account on GitHub.

Prática
Revisando o código

maristelaoliveira.github.io

Aula CNN

Imagem → Conv2D → Pooling → Conv2D → Pooling → Flatten → Dense → Resultado

Encontro 4
Fundamentos
O que é uma CNN?
As Redes Neurais Convolucionais (CNNs) são uma classe especializada de redes neurais, projetadas especificamente para processar e analisar dados visuais. Elas se destacam em tarefas como reconhecimento de imagens, detecção de objetos e processamento de vídeo, mimetizando a forma como o cérebro humano processa informações visuais.
Ao contrário das redes neurais tradicionais que recebem entradas vetoriais planas, as CNNs operam diretamente em imagens (dados 2D ou 3D), preservando a estrutura espacial dos pixels.
Camada Convolucional (Conv2D)
Detecta características essenciais como bordas, texturas e padrões nas imagens através de filtros.
Camada de Pooling
Reduz a dimensionalidade dos dados (número de parâmetros), simplificando a representação e evitando o overfitting.
Camada Flatten
Transforma a saída das camadas convolucionais e de pooling em um vetor unidimensional, preparando os dados para as camadas densas.
Camada Densa (Fully Connected)
Realiza a classificação final ou regressão com base nas características de alto nível extraídas pelas camadas anteriores.
Essa arquitetura permite que as CNNs aprendam a reconhecer hierarquias de características, de detalhes simples a objetos complexos, tornando-as extremamente poderosas para uma vasta gama de aplicações visuais.
O diagrama acima ilustra o fluxo de dados através de uma CNN, desde a imagem de entrada até a saída classificada, passando pelas principais camadas que compõem sua arquitetura.
Unidade I — Síntese
Recapitulação — Fundamentos de Deep Learning
Ao longo destes quatro encontros, construímos uma base sólida que vai sustentar todo o restante da disciplina. Vamos revisitar os principais marcos de aprendizado de cada encontro.
1
Encontro 1
IA no Cotidiano. Identificamos a presença da IA em tecnologias do dia a dia, diferenciamos IA, ML e DL, e entendemos por que Deep Learning evoluiu tanto: Big Data + GPUs + avanços algorítmicos.
2
Encontro 2
Ambiente de Desenvolvimento. Configuramos Python, VS Code, ambientes virtuais e instalamos as bibliotecas essenciais (NumPy, Pandas, Scikit-learn, TensorFlow, Keras).
3
Encontro 3
Revisão de ML. Percorremos o pipeline completo — da coleta à avaliação — usando o Iris dataset. Treinamos uma Árvore de Decisão e discutimos as limitações do ML tradicional.
4
Encontro 4
Redes Neurais. Do cérebro humano ao neurônio artificial: entendemos pesos, bias, funções de ativação e simulamos um neurônio em Python. A base para o Deep Learning.
🚀 Próximos passos: Com os fundamentos consolidados, estamos prontos para mergulhar em redes neurais multicamadas, backpropagation, funções de perda e as arquiteturas que definem o estado da arte em Deep Learning. A jornada está apenas começando!