Abílio Azevedo.

Inteligencia Artificial

Cover Image for Inteligencia Artificial
Abílio Azevedo
Abílio Azevedo

Fundamentos da IA

Fundamentos da IA

Sub Áreas da IA

3 Types of

Model Centric vs Data Centric AI

Aplicações de IA

Desafios da IA

  1. Dados escassos
  2. Falta de qualidade nos dados
  3. Interpretabilidade
  4. Explicabilidade
  5. Riscos sociais e éticos

Estatística Básica

01. O que é Estatística?

Probabilidade

02. População e Amostra

População População

03. Tipos de Variáveis

Screenshot 2023-12-22 at 07.45.46

04. Teorema do Limite Central

É um dos principais teoremas da estatística que diz que, quando você pega várias amostras aleatórias de uma população e calcula a média de cada uma, independentemente da forma da distribuição original, essas médias se aproximam de uma distribuição normal (formato de sino) à medida que o tamanho das amostras aumenta.

O teorema do limite central é importante porque nos permite fazer inferências sobre a população com base em uma amostra. Por exemplo, se você sabe que a distribuição da média amostral é normal, você pode usar uma tabela de distribuição normal para calcular a probabilidade de que a média amostral seja maior ou menor que um determinado valor.

Teorema do Limite Central

05. Medidas de Posição

Medidas de Posição

Об. Medidas de Dispersão

Medidas de Dispersão

07. Medidas de Forma

Medidas de Forma Medidas de Forma 2 Medidas de Forma 3

08. Correlação

A correlação na estatística mede a relação entre duas variáveis, indicando se elas têm uma associação linear positiva (aumentam juntas), negativa (uma aumenta enquanto a outra diminui) ou nenhuma correlação. A importância para algoritmos de Machine Learning reside na capacidade de identificar padrões e relações entre variáveis.

A correlação ajuda a selecionar características relevantes para os modelos, melhorando a precisão e interpretabilidade. Também permite ajustar modelos para prever com maior acurácia com base nas relações observadas nos dados.

Correlação Correlação 2

09. Representações Gráficas

Histograma Grafico de Barras Dispersão BoxPlot Grafico de Linhas

EAD - Exploratory Data Analysis

O objetivo da Análise Exploratória de Dados (EDA - Exploratory Data Analysis) é dar uma boa espiada nos dados antes de começar a fazer coisas mais complicadas. É como o investigador curioso que olha primeiro para entender do que se trata. A análise ajuda a descobrir segredos escondidos nos números, padrões estranhos e até erros, para que possamos tomar decisões mais inteligentes e contar histórias mais interessantes com nossos dados. É como a primeira pista em um quebra-cabeça gigante de informações.

EDA

O que é a biblioteca Pandas?

O Pandas é uma biblioteca de Python amplamente usada para análise de dados. Sua principal vantagem é sua capacidade de manipular, limpar e analisar dados de forma eficiente. Ele fornece estruturas de dados flexíveis, como Series e DataFrames, que permitem organizar dados em tabelas, realizar operações complexas, como filtros e agregações, e facilitar a visualização dos resultados. O Pandas também é compatível com várias fontes de dados, como arquivos CSV, Excel e bancos de dados, tornando-o essencial para cientistas de dados e analistas que desejam explorar e extrair insights de dados de maneira eficaz e intuitiva.

Tipos de dados ausentes

Dados ausentes

Formulando hipóteses

Formulando hipóteses

Análise Univariada

A análise univariada é uma abordagem estatística que se concentra na análise de uma única variável em um conjunto de dados. Ela visa compreender as características individuais dessa variável, examinando sua distribuição, medidas resumo (como média e mediana), variabilidade e a presença de valores atípicos (outliers). Isso ajuda a obter uma visão detalhada das características de uma variável específica, antes de explorar relações com outras variáveis (análise bivariada ou multivariada) durante a análise de dados.

Análise Bivariada

A análise bivariada é uma técnica estatística que se concentra na relação entre duas variáveis em um conjunto de dados. Ela busca entender como uma variável está relacionada à outra, frequentemente usando gráficos, tabelas cruzadas e cálculos de correlação. Isso ajuda a identificar padrões, associações e dependências entre as duas variáveis, fornecendo insights sobre como elas interagem, o que é crucial na análise de dados e na tomada de decisões informadas.

Outliers (Valores atípicos)

Um outlier é um dado que é muito diferente dos outros dados em um conjunto de dados. É como um ponto fora da curva.

Por exemplo, imagine que você tem um conjunto de dados que registra a altura de 100 pessoas. A média das alturas é de 1,70 metros. Um outlier seria uma pessoa que tem 2,50 metros de altura. Essa pessoa é muito mais alta do que as outras, então ela é considerada um outlier.

Outliers podem ser causados por vários fatores, como erros de medição, dados incompletos ou eventos aleatórios. Eles podem afetar os resultados de uma análise de dados, então é importante identificá-los e lidar com eles de forma adequada.

Lidando com Outliers

Lidando com Outliers

Automatizando EDA

A automatização da análise exploratória de dados (EDA) oferece uma série de vantagens, incluindo: - Aumento da velocidade e da eficiência: A EDA automatizada pode ser executada muito mais rapidamente do que a EDA manual. Isso pode ser importante para conjuntos de dados grandes ou complexos. - Redução da subjetividade: A EDA automatizada é menos propensa a erros ou vieses humanos. Isso pode levar a análises mais precisas e confiáveis. - Melhor compreensão dos dados: A EDA automatizada pode identificar padrões e tendências que podem não ser óbvios para os analistas humanos. Isso pode ajudar a obter uma melhor compreensão dos dados e a tomar melhores decisões.

Aprendizado de Maquinas

O aprendizado de máquina (machine learning, em inglês) é um campo da Inteligência Artificial que trata do modo como os sistemas utilizam algoritmos e dados para simular a maneira de aprender dos seres humanos, com melhora gradual e contínua por meio da experiência.

Os algoritmos que são construídos aprendem com os erros de forma automatizada, com o mínimo de intervenção humana e após treinados (ou "ensaiados") conseguem identificar padrões, fazer previsões, tomar decisões, tudo isso, com base nos dados coletados.

Tipos de Aprendizado de Maquinas

Tipos de Algoritmos

Algoritmos

Tipos de Algoritmos 2

Aprendizado Supervisionado

Aprendizado Supervisionado

Aprendizado por Reforço

Aprendizado por Reforço

Dimensionalidade

A Maldição da Dimensionalidade foi denominada pelo matemático R. Bellman em seu livro "Programação Dinâmica" em 1957. A maldição da dimensionalidade diz que a quantidade de dados de que você precisa, para alcançar o conhecimento desejado, impacta exponencialmente o número de atributos necessários.

Em resumo refere-se a uma série de problemas que surgem ao trabalhar com dados de alta dimensão. A dimensão de um conjunto de dados corresponde ao número de características existentes em um conjunto de dados.

A maldição da dimensionalidade

Engenharia e Seleção de Features

A engenharia de features é uma etapa fundamental no processo de desenvolvimento de modelos de machine learning. Refere-se ao processo de selecionar, extrair, transformar ou criar novas variáveis (features) a partir dos dados brutos para melhorar o desempenho dos modelos. Uma boa engenharia de features pode tornar um modelo mais preciso, eficiente e interpretável.

A engenharia de features é um processo iterativo. Os especialistas em IA/ML geralmente começam com um conjunto inicial de features e então testam diferentes combinações de features para determinar a melhor configuração para o modelo.

Engenharia e Seleção de Features

Overfitting e Underfitting

  • Underfitting ocorre quando um modelo de aprendizado de máquina é muito simples para aprender a relação entre as variáveis nos dados de treinamento. Isso pode resultar em um modelo que não é capaz de fazer previsões precisas para dados novos.

  • Overfitting ocorre quando um modelo de aprendizado de máquina aprende a relação entre as variáveis nos dados de treinamento com muito detalhe, incluindo o ruído nos dados. Isso pode resultar em um modelo que é capaz de fazer previsões precisas para os dados de treinamento, mas não é capaz de generalizar para dados novos.

Overfitting e Underfitting

Trade-off entre Viés e Variância

O Trade-off entre viés e variância descreve a relação entre a capacidade de um modelo de aprender a partir de dados e sua capacidade de generalizar para dados novos. Viés é o erro sistemático que um modelo comete ao aprender a partir de dados. Ele ocorre quando o modelo não é capaz de aprender a relação real entre as variáveis. Variância é a variabilidade dos resultados de um modelo ao ser aplicado a diferentes conjuntos de dados. Ele ocorre quando o modelo é muito complexo ou quando os dados de treinamento são insuficientes.

Baixo Viés e Baixa Variância É o modelo ideal e o que desejamos obter, com uma boa acurácia e precisão nas previsões. Baixo Viés e Alta Variância © modelo está superestimando (overfitting) nos dados de treino e não generaliza bem com dados novos. Alto Viés e Baixa Variância O modelo está subestimando (underfitting) nos dados de treino e não captura a relação verdadeira entre as variáveis preditoras e a variável resposta. Alto Viés e Alta Variância O modelo está inconsistente e com um acurácia muito baixa nas previsões.

Trad-off entre Viés e Variância

Tradeoff entre viés e variancia

Validação de Modelos

Validação de Modelos K-Fold Stratified k-fold Validacao de Modelos 2 Validação de Modelos 3

Verificar sempre os tópicos:

  • Interpretabilidade
  • Fairness
  • Eficiência
  • Segurança

Ensemble de Modelos

Ensemble de modelos é uma técnica de aprendizado de máquina que combina as previsões de vários modelos para melhorar o desempenho geral. Essa técnica é baseada no princípio de que a combinação de modelos pode ajudar a reduzir o viés e a variância, o que pode levar a previsões mais precisas.

Essas técnicas são frequentemente usadas em competições de aprendizado de máquina, onde a combinação de modelos pode dar uma vantagem crítica. No entanto, vale a pena notar que os ensembles podem aumentar a complexidade e o tempo de treinamento, portanto, é sempre bom considerar o trade-off entre performance e complexidade.

Ensemble de Modelos

Ensemble de Modelos 2

Ensemble de Modelos 3

Estrutura de Projetos de IA/ML

A adoção de uma metodologia para projetos de I/ML é essencial para estruturar e padronizar o processo de desenvolvimento, assegurando que cada fase seja abordada de forma sistemática e abrangente. Uma abordagem metódica não só facilita a identificação e correção de falhas, como o overfitting, mas também promove a reprodutibilidade, permitindo que outros cientistas e engenheiros de dados repliquem o trabalho com facilidade.

Além disso, essa estruturação otimiza a iteração e aprimoramento do modelo, e facilita a documentação e a comunicação com as partes interessadas, garantindo transparência, colaboração e eficiência ao longo de todo o projeto

CRISP-DM

Cross Industry Standard Process for Data Mining

Foi criada em 1996 e se tornou a metodologia mais difundida em ciência de dados para uso em projetos de IA/ML.

O CRISP-DM é cíclico, significando que é comum retornar a etapas anteriores conforme avançamos no projeto, permitindo refinamentos contínuos até alcançar o resultado desejado.

Seu uso com métodos Lean geram entregas de valor para o Cliente, no conceito de "Fail Fast, Learn Faster"

CRISP-DM

ML Canvas

Foi criada em 2016 como uma ferramenta para ajudar equipes e stakeholders a planejar e comunicar os aspectos centrais de um projeto de machine learning de maneira clara e concisa.

O conceito foi inspirado no Business Model Canvas, mas adaptado especificamente para os desafios e componentes únicos dos projetos de machine learning.

Ucented under a Crestive Commons Attibution SurAJke 40 ntemations Lce@O00 O ML Canvas tem sido usado por profissionais da área para estruturar e planejar iniciativas de ML, ajudando a garantir que todos os elementos-chave sejam considerados e entendios por todas as partes envolvidas

ML Canvas machinelearningcanvas.com by Louis Dorard, Ph.D.

AI Canvas

Foi criado em 2018 por professores da Universidade de Toronto com o objetivo de ajudar as pessoas a tomarem melhores decisões e a estruturarem projetos com a ajuda de IA/ML.

Também usa uma estrutura similar ao Business Model Canvas, mas dá um enfoque maior na questão humana, capturando o julgamento que será feito sobre as predições, as ações que precisam de predições e o feedback para melhoria contínua do modelo. ai canvas

Modelos

Análise de Regressão

A análise de regressão é uma abordagem estatística que busca investigar e quantificar as relações entre variáveis. Ela é usada para entender como uma variável dependente (target) está relacionada a uma ou mais variáveis independentes (fatores que acreditamos influenciar a variável dependente).

Essa técnica permite construir um modelo matemático, geralmente na forma de uma equação linear, que representa essa relação. Ao ajustar o modelo aos dados observados, podemos estimar os parâmetros e entender como as mudanças nas variáveis independentes afetam a variável dependente.

Isso é fundamental para fazer previsões, tomar decisões embasadas em evidências e compreender melhor os padrões em dados do mundo real.

Tipos de Regressão

Tipos de Regressão

Regressão Linear Simples

O objetivo deste módulo é apresentar conceitualmente os principais algoritmos de regressão para que possamos desenvolver projetos de machine learning que fazem previsões de valores. E faremos um projeto explorando o primeiro destes algoritmos, que é o de regressão linear simples, onde faremos o processo completo desde o EDA até a entrega do modelo através de uma API para consumo por outras aplicações.

Regressão Linear Simples Regressão Linear Simples 2

Você pode encontrar o projeto final aqui.

Predict FastAPI

Ferramentas Utilizadas

  • FastAPI - Um framework web moderno e de alto desempenho para construir APIs com Python.

  • joblib - Fornece utilitários para salvar e carregar objetos Python para permitir o cache e o compartilhamento de dados entre processos Python. Usado para ler os arquivos pkl que contêm o modelo treinado. Arquivos pickle Python podem ter a extensão ".pickle" ou ".pkl". Um arquivo pickle Python serializa uma tupla de duas matrizes numpy, (recurso, rótulo).

  • uvicorn - Uma implementação de servidor ASGI super rápida para Python.

  • pydantic - Validação de dados e gerenciamento de configurações usando dicas de tipo Python.

Regressão Linear Multipla

Regressão Linear Multipla Screenshot 2023-12-22 at 11.15.10

Você pode encontrar o projeto final aqui.

Cholesterol Gradio App

Ferramentas Utilizadas

  • Gradio do Python permite criar interfaces gráficas de usuário interativas para modelos de machine learning de forma rápida e simples.

Regressão Polinomial

Um polinômio é uma expressão matemática que representa a soma de termos, cada um consistindo de variáveis elevadas a expoentes inteiros não-negativos, multiplicadas por coeficientes. Por exemplo, 3x^2 + 2x - 5 é um polinômio, onde 3x^2, 2x e -5 são os termos. Os coeficientes são os números que multiplicam as variáveis, como 3 e 2 no exemplo dado. Os expoentes, como 2 no termo 3x^2, indicam o grau de cada termo. O grau de um polinômio é o maior expoente entre seus termos.

Polinômios são fundamentais em diversas áreas da matemática e ciências, sendo usados para modelar relações, resolver equações e descrever padrões numéricos. Polinomios

Regressão Polinomial Formula

Features polinomiais são criadas e usadas para o treinamento do modelo de regressão linear. Regressão Polinomial Features

Antes de ir direto para regressão polinomial vamos testar o modelo linear para validar se vamos ter um overfitting. Regressão Polinomial Fluxo

Você pode encontrar o projeto final aqui.

Wage Predict Model

Ferramentas Utilizadas

  • Streamlit é uma biblioteca Python que permite criar aplicativos web para machine learning de forma rápida e fácil, sem precisar saber front-end.

Treinar Modelos com dados próprios

Fine-tuning

Envolve pegar um modelo de IA pré-treinado, como o GPT-3, e treiná-lo um pouco mais em um novo conjunto de dados ou tarefa específica. Isso atualiza os pesos sinápticos do modelo, permitindo que ele se adapte melhor à nova tarefa, mas geralmente sem alterar drasticamente a memória de longo prazo que foi pré-construída durante o pré-treinamento.

Busca semântica

  • Embeddings: o texto das consultas e dos documentos é convertido para embeddings, que são representações vetoriais densas que capturam o significado semântico das palavras e frases. Isso pode ser feito com modelos pré-treinados como Word2Vec ou BERT.
  • Indexação: os embeddings são indexados em uma estrutura especializada, como uma árvore ou grafo, que permite busca aproximada por similaridade semântica.
  • Consulta: ao receber uma consulta do usuário, seus termos são convertidos para embeddings pela mesma lógica.
  • Busca aproximada: a consulta embedding é comparada aos documentos indexados pelo significado, ao invés de palavras exatas. Os mais similares semanticamente são retornados.
  • Ranqueamento: os resultados podem ser ranqueados por relevância usando a similaridade semântica com a consulta. Assim os mais relevantes aparecem primeiro.

Você pode encontrar o projeto final aqui.

Ferramentas Utilizadas

  • OpenAI API: A OpenAI API fornece acesso a modelos como GPT-3 para gerar texto, resumir conteúdo, traduzir idiomas e mais através de um serviço baseado em assinatura.

  • LangChain: LangChain é um assistente de IA de código aberto que ajusta modelos de linguagem como GPT-3 e Bloom para conversas orientadas a objetivos usando prompting de cadeia de pensamento.

Processamento de Linguagem Natural - NPL

O Processamento de Linguagem Natural (PLN) é um campo da inteligência artificial que lida com a interação entre computadores e linguagens humanas naturais. O objetivo é desenvolver métodos e sistemas que permitam que computadores entendam, interpretem e derivem significado do texto e fala humanos.

Algumas tarefas comuns de PLN incluem:

  • Análise sintática: Identificar a estrutura gramatical de sentenças
  • Análise semântica: Extrair o significado das palavras e frases
  • Tradução automática: Traduzir textos entre idiomas
  • Resumo automático: Gerar resumos concisos de documentos longos
  • Geração de linguagem natural: Produzir novo texto coerente
  • Reconhecimento de fala: Transcrever e interpretar fala humana

As principais abordagens em PLN envolvem o uso de linguística computacional, aprendizado de máquina (particularmente deep learning) e modelos estatísticos. As aplicações incluem sistemas de busca, chatbots, assistentes virtuais e muito mais. É uma área de pesquisa muito ativa hoje em dia.

SpaCy

SpaCy é um pacote Python muito popular para processamento de linguagem natural (NLP). Algumas características e funcionalidades do SpaCy:

  • Parser sintático que identifica a estrutura gramatical de frases. Ele faz análise morfológica, sintática e de dependências.
  • Modelos estatísticos pré-treinados para vários idiomas que podem ser utilizados para tarefas comuns de NLP.
  • Tokenização eficiente de textos em palavras/tokens.
  • Lemmatização para agrupar diferentes formas flexionadas de palavras.
  • Reconhecimento de entidades nomeadas (nomes de pessoas, organizações, locais, etc).
  • Vetorização de textos para representação numérica densa de palavras e documentos.
  • Integração com Word Vectors pré-treinados como o Word2Vec e GloVe.
  • APIs fáceis de usar para python que facilitam tarefas comuns de NLP.
  • Alta performance e capacidade de lidar com grande volume de textos.
  • Utilitários para treinar modelos customizados para tarefas específicas.
  • Aplicações em classificação de textos, análise de sentimentos, tradução, busca semântica, chatbots, descoberta de relações e muito mais.

Projeto prever nota de review

Nesse projeto criamos uma API que recebe um texto de review e prevê uma nota de 1 a 5. Você pode encontrar o projeto final aqui.

Screenshot 2023-12-27 at 22.02.16

Codebase

Você encontra todo o código base aqui.

References

  • OpenAI Cookbook: Exemplo de códigos e guias para usar a API da OpenAI.
  • Jupiter da Rocketseat é um sistema de uploads centralizados na nuvem usando o CloudFlare R2 para armazenamento de áudio e vídeo. Banco de dados Postgress em cloud serveless neon. Utiliza o Upstash para enfileramento de request http.
  • Houston da Rocketseat é um chatbot construído com GPT-3, mostrando como criar um agente de conversação com IA.
  • O Qdrant é um banco de dados especializado em busca semântica, permitindo consultas baseadas em significado ao invés de correspondência exata. Útil para aplicações de IA.
  • O Whisper-jax é uma biblioteca para reconhecimento de fala self-supervised. Um exemplo de técnicas avançadas de PLN.
  • O Beam é uma plataforma serverless que roda modelos de IA sem precisar provisionar servidores. Facilita o deployment de aplicações de IA.
  • O Drizzle ORM e o Hono são frameworks web que integram recursos de IA, como busca semântica, análise de sentimento, etc.

Mais posts

Cover Image for A psicologia do Dinheiro

A psicologia do Dinheiro

Morgan Housel oferece insights valiosos sobre a gestão financeira e tomada de decisões. O autor enfatiza que o sucesso financeiro depende mais do comportamento do que da inteligência ou conhecimento técnico. Housel destaca a importância da visão de longo prazo e da resiliência diante da volatilidade do mercado, encorajando a forcamos na sustentabilidade em vez de ganhos de curto prazo.

Cover Image for Bellsant

Bellsant

Estou na vanguarda do desenvolvimento de um aplicativo de saúde e bem-estar de ponta. Nossa pilha de tecnologia combina React Native para desenvolvimento móvel multiplataforma com um backend NodeJS sem servidor, aproveitando o AWS Lambda para escalabilidade e eficiência de custos.

Abílio Azevedo
Abílio Azevedo

NewsLetter

Eu enviarei o conteúdo postado aqui no blog. Sem Spam =)

Engenheiro de software experiente, formado em Engenharia Elétrica, com mais de 10 anos de experiência prática na construção de aplicativos móveis, web e back-end robustos e escaláveis em vários projetos, principalmente no setor de fintech. Mobile (React Native), Web (React e Next.JS) e Backend (Node.JS, PHP e DJANGO). Meu objetivo é criar produtos que agreguem valor às pessoas. - © 2024, Abílio Azevedo