Olá! Eu me chamo Ana Clara, sou cientista de dados e irei acompanhar você nesta jornada de introdução às redes neurais com o PyTorch.
Audiodescrição: Eu sou uma mulher branca, de olhos castanhos e cabelos castanhos longos, com pontas loiras. Estou usando maquiagem e batom vermelho, vestindo uma blusa azul-marinho com a palavra Alura, e ao fundo há duas cores: lilás e azul-claro.
Provavelmente já percebemos que o assunto predominante é inteligência artificial. Ela deixou de ser ficção científica e tornou-se uma tecnologia que está mudando o mercado, automatizando tarefas, aumentando nossa produtividade e resolvendo problemas complexos que antes eram considerados impossíveis, alterando as regras do jogo em uma velocidade acelerada.
Mas já paramos para pensar no que existe por baixo dos panos da IA? A base dessa tecnologia são as redes neurais. Para deixarmos de ser apenas pessoas usuárias dessas ferramentas e passarmos a construir nossas próprias soluções, é fundamental saber utilizar as tecnologias certas. Uma delas é o PyTorch, um dos frameworks (estruturas) mais poderosos e amplamente adotados tanto na pesquisa acadêmica quanto em grandes empresas.
Para começar, receberemos um desafio de negócio complexo e interessante para explorarmos com redes neurais: detecção de fraude. Além disso, entenderemos o funcionamento interno das redes neurais, a matemática envolvida e todo o fluxo de dados, da entrada à saída.
Abordaremos os componentes fundamentais do PyTorch e a anatomia dos tensores, elemento essencial para construir redes neurais. Em seguida, estudaremos o Perceptron, a primeira e mais simples forma de rede neural. Também entenderemos o processo de aprendizado dessa rede neural.
Vamos entender as funções de ativação, os gradientes e como calculamos a função de erro, a taxa de erro e a função de custo — termos que recebem diferentes nomes, os quais vamos apresentar. Ao final dessa avaliação do erro, nós vamos otimizar a rede.
O próximo passo é avançarmos para arquiteturas mais complexas. Vimos um Perceptron, a camada mais simples de uma rede neural. A próxima etapa é construir redes neurais profundas. Vamos compreender as diferenças entre essas duas arquiteturas, o que envolve essa construção, quais problemas podem ser resolvidos e quais benefícios estão associados. Veremos funções importantes do PyTorch que auxiliam na construção dessas redes neurais.
Também vamos analisar o impacto de dados desbalanceados. Sabemos que fraude não é um evento balanceado; esperamos que a taxa de fraude seja a menor possível. Trata-se de um caso raro, uma anomalia, e vamos observar esse impacto dentro das redes neurais.
Veremos como implementar um loop de treinamento e trabalhar com o backpropagation (retropropagação), um termo muito conhecido no estudo de redes neurais.
Por fim, nós vamos treinar e avaliar nosso modelo — nossa rede profunda — e verificar a consistência dos resultados. Exploraremos diferentes ferramentas de otimização do PyTorch e diversas formas de avaliar o modelo. Entenderemos as etapas envolvidas nesse loop de avaliação.
Com a rede construída, vamos ver na prática como treiná-la com nossos dados históricos e aprender a avaliar seu desempenho em condições próximas às do mundo real.
Além disso, vamos entender mais sobre épocas e como funciona a redução da perda com novos dados.
Trabalharemos com técnicas de otimização e regularização. Investigaremos os próximos passos para melhorar ainda mais o modelo: qual é o impacto da taxa de aprendizado — learning rate (taxa de aprendizado) —, da divisão por lotes e do dropout (desativação aleatória de unidades), evitando o overfitting (sobreajuste). Realizaremos uma avaliação final do modelo otimizado e uma pré-entrega do projeto.
Por fim, discutiremos os próximos passos para colocarmos esse modelo em produção.
Então, vejo vocês na primeira aula!
Imagine que você ingressou como pessoa cientista de dados em uma grande fintech (empresa de tecnologia financeira), a AluraCash. Nós sabemos que, dentro do aplicativo, ocorrem milhões e milhões de transações todos os dias. Destas transações, a maior parte é legítima e correta. Porém, uma pequena fração é fraude.
Até hoje, antes da nossa chegada, a empresa operava com sistemas de regras rígidas, fixas e brutas. O que isso quer dizer? Por exemplo, se uma pessoa realiza uma compra de madrugada, nós bloqueamos essa transação. Qual é o problema desse tipo de sistema? Boas pessoas compradoras estavam sendo bloqueadas, gerando atrito para o cliente. E pessoas fraudadoras habilidosas passam despercebidas.
Como podemos contornar essa situação? Considerando todo o comportamento da pessoa usuária — dados mais detalhados de comportamento de compra e informações sociodemográficas — e utilizando Deep Learning (aprendizado profundo). Esse é um subcampo de estudo da inteligência artificial, baseado em redes neurais artificiais, ou seja, inspirado na nossa biologia, na forma como o nosso cérebro funciona.
Pensemos assim: quando ensinamos uma criança a reconhecer um cachorro, nós não entregamos um conjunto de regras, como o tamanho da cauda, o formato da orelha ou a espessura da pelagem. Simplesmente apontamos e mostramos diferentes exemplos. Com o passar do tempo, o cérebro identifica padrões por conta própria.
Quando falamos de redes neurais artificiais, o processo é muito similar. No nosso caso de fraude, fornecemos milhares de exemplos de transações ao computador, cada uma com diferentes características. Por meio de várias camadas de neurônios artificiais, essa informação é processada. É por isso que chamamos de “profundo”: há uma série de camadas de neurônios artificiais processando a informação. A rede aprende a reconhecer os padrões por trás das fraudes sem precisarmos de uma regra rígida explicitamente programada.
Para construirmos essa rede neural profunda, com várias camadas, do zero, precisamos de uma ferramenta robusta. Este é um dos motivos pelos quais vamos usar a biblioteca PyTorch.
Historicamente, quando falávamos de desenvolver inteligência artificial, vivíamos dois grandes dilemas: usabilidade e desempenho. Se escolhêssemos a usabilidade, uma linguagem de programação fácil de usar e programar poderia ser lenta.
Se uma linguagem fosse rápida o suficiente para processar milhões de dados, ela poderia ser difícil de aprender, complexa e rígida. Em 2019, um grupo de pesquisadores do time de AI do Facebook, atualmente Meta, publicou um artigo apresentando o PyTorch, uma biblioteca com estilo imperativo que não abre mão da usabilidade e da alta performance.
Quando falamos de estilo imperativo, referimo-nos à execução imediata. O próprio artigo denomina esse comportamento como Eager Execution (Execução Imediata): no Python, o código é executado no instante em que é chamado.
Vamos considerar um exemplo prático. Estamos na cozinha preparando um jantar. Primeiro, pegamos a cebola e a cortamos. Ao vê-la picada na tábua, colocamos imediatamente na panela. Em seguida, experimentamos o molho, percebemos que está sem sal e adicionamos o sal na hora. Se algo der errado, interrompemos o processo e corrigimos antes de comprometer a receita toda. Assim funciona o estilo imperativo: cada ação gera uma reação imediata, permitindo ajustes rápidos durante a execução.
Quanto à usabilidade, o PyTorch é baseado no Python nativo. Sabemos que Python é uma linguagem de programação simples, com uma grande comunidade open source (código aberto), ampla documentação e alta acessibilidade. Além disso, segue uma estrutura muito semelhante a bibliotecas que já conhecemos, como Pandas e NumPy. Essa familiaridade é uma grande vantagem de usabilidade do PyTorch.
Por fim, a alta performance. Há uma genialidade por trás do PyTorch que envolve um mecanismo robusto e otimizado em C e C++. Quando escrevemos nossas redes neurais e estruturamos nosso código, podemos delegar o processamento pesado às GPUs. O que são as GPUs? São as unidades de processamento gráfico, ou Graphics Processing Unit (unidade de processamento gráfico), equivalentes às placas de vídeo: chips especializados em realizar cálculos matemáticos em alta velocidade e de forma paralela (paralelização). Isso é o que garante a alta performance, fundamental para redes neurais, especialmente em arquiteturas com muitas camadas.
Agora, vamos iniciar a prática. Antes de entrarmos com profundidade nas estruturas por trás do PyTorch — os conhecidos tensores —, vamos entender melhor as redes neurais e os cálculos por trás desses neurônios artificiais. Vamos prosseguir.
Para entendermos melhor as redes neurais artificiais, precisamos olhar para o passado. Em 1943, os pesquisadores McCulloch e Pitts propuseram o primeiro modelo matemático simplificado de neurônio. Esse modelo consiste, resumidamente, em entradas e saídas binárias, e as conexões entre neurônios são baseadas na lógica booleana: AND (E), OR (OU) e NOT (NÃO). Logo após essa primeira proposta matemática, no final dos anos 1950, Frank Rosenblatt apresentou o primeiro neurônio artificial conhecido como Perceptron (Perceptron), que é, basicamente, um precursor das redes neurais que usamos hoje.
A inspiração para essas propostas de neurônios e redes neurais é o nosso cérebro. O cérebro humano é composto por uma rede neural formada por diferentes neurônios. Temos um neurônio conectado a milhões de outros neurônios, e essa rede é formada por bilhões de células que se comunicam entre si a partir de estímulos.
À esquerda, observamos uma imagem de um neurônio do nosso cérebro. Ele é formado pelo corpo celular, onde a informação — isto é, o sinal recebido — é processada. No corpo celular, há ramificações chamadas dendritos, que funcionam como antenas e recebem sinais químicos de outros neurônios, nosso canal de comunicação. Depois de processada, a informação percorre um grande ramo, o axônio, até suas terminações. O axônio é uma estrutura transmissora responsável por levar o impulso adiante. Quando o corpo celular decide que a informação é relevante, dispara um impulso para que outro neurônio a receba. De forma simplificada, esse sinal é transmitido para o espaço entre um neurônio e outro, a sinapse. É por meio do fortalecimento ou enfraquecimento das sinapses que o nosso cérebro aprende. A partir dessa mecânica e dessa fisiologia impressionantes do nosso cérebro, surgiram as redes neurais artificiais.
Vamos fazer uma analogia: uma rede neural de várias camadas é, basicamente, uma abstração matemática do nosso cérebro. Cada um desses nós equivale a um neurônio. É nesse ponto que ocorre o processamento: o nó matemático realiza o cálculo somatório do que é recebido. Nós vamos entrar em mais detalhes no próximo slide. As ramificações representam as conexões entre neurônios, isto é, a passagem da informação de um nó para outro. O sinal que percorre o neurônio biológico humano é equivalente, nessa analogia, às operações matemáticas que conduzem o fluxo de informação até chegar ao nó de saída, com o qual nós obtemos uma resposta.
Como todo esse fluxo — o impulso, o sinal transmitido, o dado que é processado e gera uma resposta — é representado por operações matemáticas, temos dois elementos fundamentais na rede neural: os pesos e os vieses.
Para exemplificar o funcionamento de um neurônio, consideramos primeiro um neurônio isolado e, em seguida, uma rede neural completa, com vários neurônios conectados. Vamos observar os primeiros nós da rede: eles representam as entradas. Suponhamos que estamos analisando fraudes. Cada fraude tem um conjunto de características: horário em que ocorreu, tipo de transação (débito ou crédito), valor, local da ocorrência, se ocorreu em outro país ou fora do local onde a pessoa mora, e o tipo de estabelecimento. Cada uma dessas informações é uma variável X, um nó de entrada da rede.
A partir disso, precisamos atribuir um nível de importância para cada uma dessas entradas. O que seria mais crítico? O que teria maior peso para caracterizar a fraude? Vamos supor que seja a distância entre o local onde a pessoa mora e o local da ocorrência, além do horário. Atribuímos pesos para mensurar esse nível de importância de cada variável, dado o nosso problema. Em seguida, pegamos cada valor de entrada e multiplicamos pelo seu respectivo peso.
Onde entra o viés? Depois de multiplicarmos cada uma das entradas pelo seu peso (seu grau de importância), somamos um viés. Esse viés é um ajuste no nosso valor base. Matematicamente, o viés desloca o resultado da nossa função, o que permite que a rede seja mais flexível aos nossos dados.
Basicamente, a fórmula aplicada a essa primeira entrada seria W vezes x (peso vezes a entrada), mais o viés. Em seguida, o neurônio faz um somatório dessa informação, e esse somatório passa pela função de ativação. A função de ativação é um limiar que decide se esse impulso, isto é, essa informação, deve ativar o neurônio ou não.
Como podemos ver, a combinação inicial de entrada, pesos e viés é uma função linear. A função de ativação adiciona a não linearidade, porque sabemos que nossos dados e problemas do mundo real, em sua maior parte, não são lineares. Ao final dessa aplicação, obtemos a saída. Por exemplo, ao entrarmos com dados de fraude, multiplicarmos pelo peso de importância, realizarmos o somatório e aplicarmos a função de ativação, obtemos a probabilidade de a transação ser ou não uma fraude.
Esse é um exemplo de um neurônio artificial simples, um Perceptron (perceptron), que veremos com mais detalhes nas próximas aulas e que também desenvolveremos em código com o PyTorch (PyTorch).
Agora que entendemos um neurônio de forma isolada, precisamos compreender como ele funciona em conjunto, como na rede com vários neurônios conectados. O primeiro ponto é entender a arquitetura dessa rede neural. Vamos considerar o exemplo de uma rede neural com três camadas. Portanto, trata-se de uma rede neural profunda, com múltiplas camadas.
A primeira etapa dessa arquitetura é a camada de entrada, que corresponde aos nossos x. Essa camada de entrada é onde os dados brutos entram. Podemos estar trabalhando com transações; poderíamos estar entrando com imagens e seus pixels (pontos da imagem); ou com texto previamente tratado em formato numérico. É aqui que os dados entram.
A próxima é a camada oculta, onde o processamento principal acontece. Elas são chamadas de ocultas porque não visualizamos diretamente sua saída; seu output (saída) não é explícito. Agora, nós iremos mostrar em detalhes que o PyTorch (PyTorch) permite visualizar essas informações e acompanhar o processamento interno.
O ponto crucial é que, em cada neurônio, multiplicamos o valor pelo peso, somamos o viés e repassamos o resultado ao próximo neurônio. Es assim que cada neurônio gera seu resultado e o encaminha adiante.
Por fim, temos a camada de saída, onde a decisão final do modelo acontece: se é fraude ou não é; se a imagem é de um cachorro ou de um gato; qual é a probabilidade de ocorrer churn (evasão) ou não; ou, em recomendação de produtos, qual produto tem maior probabilidade de compra. É aqui que a decisão atua e obtemos o resultado final da rede neural.
Aqui entra a grande ideia do Deep (profundo) dentro do aprendizado profundo: utilizamos cada vez mais camadas ocultas, e cada camada recebe uma representação diferente da anterior, extraindo o dado de maneira progressivamente mais refinada. Recebemos na primeira camada entradas mais brutas, fazemos um primeiro refinamento e assim por diante, até chegarmos a uma informação bem mais simples — por exemplo, 0/1: a probabilidade de ser fraude ou não; a imagem de cachorro ou gato. Assim, conseguimos identificar um processo muito mais complexo, com padrões mais complexos, quase um aprendizado hierárquico.
Agora que entendemos os componentes principais das redes neurais, vamos praticar: examinar nossos dados de transações, verificar quais informações de fraude temos e conhecer o núcleo do PyTorch (PyTorch), os tensores, que são onde a informação será armazenada e que sustentarão a rede neural que criaremos. Vamos lá!
O curso PyTorch: detecção de fraudes com redes neurais profundas possui 211 minutos de vídeos, em um total de 49 atividades. Gostou? Conheça nossos outros cursos de Machine Learning & Deep Learning em Dados, ou leia nossos artigos de Dados.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
O Plano Plus evoluiu: agora com Luri para impulsionar sua carreira com os melhores cursos e acesso à maior comunidade tech.
2 anos de Alura
Matricule-se no plano PLUS 24 e garanta:
Jornada de estudos progressiva que te guia desde os fundamentos até a atuação prática. Você acompanha sua evolução, entende os próximos passos e se aprofunda nos conteúdos com quem é referência no mercado.
Back-end, Dados, Front-end, DevOps, Mobile, Gestão & Negócios, UX & Design, Cibersegurança, Cloud, Inteligência Artificial
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
Acesso à inteligência artificial da Alura.
No Discord, você participa de eventos exclusivos, pode tirar dúvidas em estudos colaborativos e ainda conta com mentorias em grupo com especialistas de diversas áreas.
Catálogo de tecnologia para quem é da área de Marketing
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
20% de desconto na Pós Tech
Luri Vision chegou no Plano Pro: a IA da Alura que enxerga suas dúvidas, acelera seu aprendizado e conta também com o Alura Língua que prepara você para competir no mercado internacional.
2 anos de Alura
Todos os benefícios do PLUS 24 e mais vantagens exclusivas:
Acesso ao catálogo da Casa do Código e leitura dentro da plataforma
Modo entrevista - Pratique situações reais e evolua com feedback personalizado
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Para quem quer atingir seus objetivos mais rápido: Luri Vision ilimitado, vagas de emprego exclusivas e mentorias para acelerar cada etapa da jornada.
2 anos de Alura
Todos os benefícios do PRO 24 e mais vantagens exclusivas:
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais de forma ilimitada.
Lives CareerUp: eventos exclusivos com foco em empregabilidade e carreira
Mentorias de carreira: 2 encontros individuais com mentores do Talent Lab
Conecte-se ao mercado com mentoria individual personalizada, vagas exclusivas e networking estratégico que impulsionam sua carreira tech para o próximo nível.