roteiro_estudo_deep_learning

Deep learing roteiro de estudo

Descrição do repositório

O objetivo desse repositório é oferecer um roteiro de estudo para deep learning, que possa ser utilizado para iniciantes ou para consultas. Sinta-se convidado para colaborar caso tenha algo para compartilhar, criticar ou corrigir.

Linguagem de Programação Python

Atualmente Python é uma das principais linguagens de programação para quem deseja trabalhar com Machine Learning. Esta linguagem oferece uma abstração mais clara e fácil de usar, possibilitando uma curva de aprendizado maior. As melhores bibliotecas de ML mais oferecem interface de aplicação para que você possa programar em Python e, ao executar o código, elas utilizam funções em C/C++ por baixo dos panos, devido à velocidade destas linguagens.

Titulo Tipo Nível Link Descrição
Pycubator Curso Iniciante Link Curso rápido bem completo
Python para Zumbis Curso Iniciante Link Curso básico

Bibliotecas Python

Nesta tabela estão as principais bibliotecas que serão utilizada/explicadas neste tutoria. É importante lembrar que elas não são as únicas, é sempre bom dá oportunidade para outras bibliotecas/linguagens/técnicas.

Titulo Tipo Nível Link Descrição
Pandas Manipulação de dados Iniciante Link Completa para dataset volumosos
Numpy Manipulação de dados Iniciante Link Fácil de usar
Pyplot Visualização Iniciante Link Prática e fácil
Plotly Visualização Avançado Link Gráficos muito bonitos e dinâmicos
Sklearn Machine learning Avançado Link Tem ótimas ferramentas
Tensorflow Deep learning Avançado Link Uma das melhores de deep learning

Manipulação de dados

Obtenção: O acesso aos dados pode ser realizado de diversas maneiras, seja por um arquivo no seu computador ou por um serviço API online ( como uma requisição HTTP GET). Normalmente, a forma mais comum de obter dados, é por meio de um arquivo .csv.

Exemplo de acesso a dados em arquivo csv. Mais detalhes (link)

import pandas as pd
dataframe  =  pl.read_csv('local_do_meu_arquivo/arquivo.csv)
print(dataframe.head())

Manipulação de dados : Há diversas bibliotecas para manipular dados no seu código, porém as mais utilizadas em data-science são

Titulo Tipo Nível Link Descrição
28 comandos rápidos Tutorial Intermediário Link Conteúdo para acesso rápido - bom
Introdução ao Pandas Tutorial Intermediário Link Muito bom para estudar
A Complete Introduction Tutorial Intermediário Link Só use se quiser se aprofundar

Salvando dados: As vezes é necessário salvar o dataframe pandas ou até mesmo outros dados que você quer manter registrado em arquivo, veja o exemplo para salvar em csv (Mais detalhes link).

df = pd.DataFrame({'Aluno' : ["Wilfred", "Abbie", "Harry", "Julia", "Carrie"],  
               'Faltas' : [3,4,2,1,4],  
               'Prova' : [2,7,5,10,6],  
               'Seminário': [8.5,7.5,9.0,7.5,8.0]})  
df.to_csv("aulas.csv")
pd.read_csv("aulas.csv")

Resultado:

enter image description here

Data mining

A seção anterior e está se complementam, pois ambas envolvem seus conhecimentos e habilidades para trabalhar com as bibliotecas de manipulação de dados, tais como Pandas, Numpy e etc.

Limpeza de dados

A limpeza consiste na eliminação de dados nulos. Durante a limpeza, é preciso analisar cuidadosamente a distribuição dos dados nulos:

Padronização de dados Tipos de dados

Matriz de correlação

A matriz de correlação é uma abordagens mais comuns para uma análise prévia da relação entre as features. Uma correlação positiva indica que ambas as features se movem na mesma direção e uma correlação negativa indica que as features se movem em direções opostas, ou seja, quando o valor de uma feature aumenta, o valor da outra feaure diminui. A correlação também pode ser nula ou zero, o que significa que as variáveis não estão relacionadas.

Titulo Tipo Nível Link Descrição
Sobre Correlações Intermediário Link Muito bom  
Como selecionar as melhores features Intermediário Link Muito bom  

Features selections Features eliminations

Titulo Tipo Nível Link Descrição
An introduction to machine learning with scikit-learn Tutorial Avançado Link Muito bom

Conceitos de Machine Learning

Titulo Tipo Nível Link Descrição
An introduction to machine learning with scikit-learn Tutorial Avançado Link Muito bom

Tipos de aprendizado

Há três principais tipos de aprendizados, supervisionado, não supervisionado e por reforço. O mais comum é o aprendizado supervisionado, porém é sempre bom conhecer os outros, pois vai depender muito da abordagem do seu problema e da disponibilização dos dados.

Titulo Tipo Nível Link Descrição
Os Três Tipos de ML Tutorial Iniciante Link Bom para aprender
Tipos de aprendizagem Tutorial Iniciante Link Bom para aprender

Tipos de Abordagem

Classificação
Regressão

Métricas

Mais a frente eu explico resumidamente as métricas utilizando o poster apresentado por Paulo Vasconcelos link. Porém estes links na tabela são ótimos, recomendo a leitura.

Titulo Tipo Nível Link Descrição
Avaliando o modelo de ML Tutorial Intermediário Link Muito bom
Matriz de Confusão e AUC ROC Tutorial Intermediário Link Bem completo
As Métricas Mais Populares Tutorial Intermediário Link Explicação mais direta
As Métricas Mais Comuns de ML Tutorial Intermediário Link Leia todos os 4 postes

Matriz de confusão

A Matriz de confusão, nos mostras as taxas de acertos e erros do nosso modelo.

Exemplo: Imagine que seu modelo tem que classificar se uma foto é de um gato ou não. Em seu dataset há 50 fotos de gatos e 50 fotos que não são de gatos. Após treinar o modelo, você roda a matriz de confusão e descobre que das 50 fotos de gatos, seu modelo classificou 25 corretamente, enquanto das 50 fotos de não gato, ele classificou 40. A matriz ficaria mais ou menos assim:

enter image description here

Dessa imagem podemos extrair:

Métricas Básicos

Para saber como seu modelo está funcionando, é necessário fazer algum tipo de medição, para isso temos as métricas. Utilizando a matriz apresentada anteriormente, temos:

Acurácia (Accuracy): a proporção de casos que foram corretamente previstos, sejam eles verdadeiro positivo ou verdadeiro negativo. Em nosso exemplo: 65/100 = 0,65

Sensibilidade (Sensibility): a proporção de casos positivos que foram identificados corretamente. No nosso caso, o cálculo é feito da seguinte forma: 25/50 = 0,5 (25 imagens de gatos foram previstas corretamente em um total de 50 imagens);

Especificidade (Specificity): a proporção de casos negativos que foram identificados corretamente. De forma semelhante a sensibilidade, calculamos a especificidade assim: 40/50 = 0,8;

Curva ROC e AUC

A Receiver Operating Characteristics (ROC), é ilustrada pela plotagem da sensibilidade — a taxa de Verdadeiro Positivo — e a especificidade — a taxa de Falso Positivo. Quanto mais alto e mais distante da linha diagonal a sua curva estiver, melhor.

enter image description here

Area Under the ROC Curve (AUC) é um número de 0 a 1 que mostra como seu modelo está performando ao utilizar como base para o cálculo a Taxa de Falso Positivo e a Taxa de Verdadeiro Positivo. interpretá-lo é fácil: quanto mais próximo de 1 esse número estiver, melhor.

Estes métricas dão a ideia de quão bem as classes estão separadas como explica o Marcos Silva no link

enter image description here

Cross Validation

Cross-Validation é uma das melhores técnicas para saber se o seu modelo generaliza bem. Quando você executa seu modelo várias vezes, pode receber valores diferentes devido a vários fatores (dataset, quantidade de épocas, modelo ruim e etc). Esse é um tipo de problema que você pode resolver com o Cross-Validation. Essa técnica que visa entender como seu modelo generaliza, ou seja, como ele se comporta quando vai prever um dado que nunca viu.

Cross-Validation serve para criar diferentes conjuntos de treino e teste, treinar o modelo e ter certeza de que ele está performando bem. Nesse caso, ao invés de usarmos apenas um conjunto de teste para validar nosso modelo, utilizaremos N outros a partir dos mesmos dados.

Existem vários métodos de Cross-Validation, aqui vamos ver apenas o K-Fold, esse método consiste em dividir seu dataset K vezes.

enter image description here

No exemplo acima, o dataset foi dividido em 5 partes, para cada uma dessas partes, o modelo irá usar 4 partes (K-1) para treinar, enquanto usará 1 parte para validar. Ao final do processo, quando o modelo iterar/treinar 5 vezes, você terá um verdadeiro score de como seu modelo está generalizando, geralmente ao tirar a média e desvio padrão de todos os treinos realizados. Esse processo faz com que o treino demore um pouco mais, mas é crucial para ter certeza de que seus dados estão generalizando bem.

Redes Neurais Artificiais: Teoria

Apesar das bibliotecas oferecer um alto nível de abstração, deixando que você fique livre da implementação das funções e estruturas da Rede, é importante ter o mínimo de conhecimento sobre o que é e como funciona uma rede neural artificial, uma vez que tais conhecimentos poderão te ajudar a entender como configurar sua rede e como corrigir alguma problemas de eficiência.

AVISO: A maior parte das explicações utilizadas nesta parte foram retiradas do site http://deeplearningbook.com.br/. Recomendo a leitura do conteúdo deles, é muito bom e e completo.

Neurônio artificial

O neurônio artificial assim como a própria rede neural, são estruturas que tentam simular o funcionamento do seus originais biológicos que há no cérebro humano.

Resumidamente, um neurônio artificial é um componente que calcula a soma ponderada de vários inputs, aplica uma função e passa o resultado adiante. Como é ilustrado no diagrama a seguir, o neurônio artificial consiste em um sinal de entrada (representado pela letra X).

continua …

enter image description here

Funções de ativações

BackPropagation

Topologias de redes Rede MLP

Titulo Tipo Nível Link Descrição
Neuronio Artificial Tutorial Intermediario Link Explicação bem clara
Deep-learning book Curso Ini - Avançado Link Se você tiver tempo, lei todos os capítulos

Deep Learning

Rede Neural Profunda

Rede Neural Convolucional

Práticas

Titulo Tipo Nível Link Descrição
DATA EXPLORATION WITH PYTHON Tutorial Avançado Link Muito muito completo
Mineração de dados Tutorial Avançado Link Muito bom e completo
xx Curso Avançado Link xx
xx Curso Avançado Link xx

Recomendações

Titulo Tipo Nível Link Descrição
Datascience pizza Dataset Intermediário Link Muito bom para explorar
Kaggle Dataset Intermediário Link Tutoriais, competições datasets e etc.
xx Dataset Intermediário Link xxx
xx Curso Avançado Link xx