Todas as lições

Curso

IA do 10.º ano: Aprendizagem profunda e IA multimodal

Constrói e treina redes neuronais em PyTorch para imagens, texto e som.

Faz as lições por ordem. No fim, sabes calcular a saída de um neurónio, comparar ativações e escrever uma passagem para a frente com NumPy. Sabes escolher uma perda, explicar a descida do gradiente e a retropropagação, e escrever um ciclo completo de treino e teste em PyTorch. Sabes treinar uma CNN para classificar imagens, treinar um classificador de sentimento para distinguir críticas positivas de negativas, explicar como a atenção pesa os outros tokens e classificar clipes de áudio curtos. Sabes reduzir o sobreajuste, afinar um modelo pré-treinado em classes novas, agrupar erros e encontrar a causa, e apresentar um monitor de vida selvagem em imagens nunca vistas.

Como usar estas lições

  • Começa na lição marcada Faz isto. Segue quando conseguires fazer sozinho a linha por baixo do título.
  • Joga os Jogos primeiro. Depois faz os Testes. 8 de 10 certas para passar. As Fichas são em papel. As respostas estão em baixo.
  • Cada lição assenta na lição anterior. Toma notas de cada treino: as definições, a curva da perda e a pontuação do teste.
  • As lições de código usam Python e PyTorch num caderno online grátis com uma GPU. Chegam modelos pequenos e conjuntos de dados pequenos. Usa só conjuntos abertos que te deixam usar, e nunca treines com fotos de pessoas sem a permissão delas.

Cada lição tem jogos, testes e fichas.

0 de 36

Bases das redes neuronais

  1. 1NeuróniosCalcula a saída de um neurónio a partir de entradas, pesos e viés.
    • Escreve a soma pesada mais o viés.
    • Calcula-a à mão para 3 entradas.
    • Calcula-a em código com um produto escalar.
  2. 2AtivaçõesCompara as ativações ReLU, sigmoid e softmax.
    • Desenha cada ativação.
    • Explica porque é que uma rede precisa de uma ativação não linear.
    • Usa softmax para transformar pontuações em probabilidades.
  3. 3Camadas e redesEmpilha camadas numa rede.
    • Escreve uma camada como uma multiplicação de matrizes.
    • Acompanha a forma dos dados em cada camada.
    • Conta os parâmetros de uma rede.
  4. 4Uma rede pequenaEscreve uma passagem para a frente com NumPy para uma rede pequena.
    • Constrói uma rede de 2 camadas em NumPy.
    • Passa um lote de entradas por ela.
    • Verifica a forma da saída.

Treinar redes neuronais

  1. 5PerdaEscolhe uma perda para uma tarefa e calcula-a.
    • Usa o erro quadrático médio para a regressão.
    • Usa a entropia cruzada para a classificação.
    • Diz o que significa uma perda a descer.
  2. 6Descida do gradienteExplica como os gradientes movem os pesos encosta abaixo.
    • Encontra o declive de uma curva da perda.
    • Dá passos com uma taxa de aprendizagem.
    • Vê o que acontece quando a taxa é demasiado grande ou demasiado pequena.
  3. 7RetropropagaçãoSegue como o erro volta para trás através da rede na retropropagação.
    • Usa a regra da cadeia numa rede pequena.
    • Calcula um gradiente à mão.
    • Confere-o com a diferenciação automática.
  4. 8Treina uma redeTreina uma rede pequena e desenha a perda.
    • Treina com minilotes.
    • Desenha a perda de treino e a perda de validação.
    • Para quando a perda de validação deixa de melhorar.

Ferramentas de aprendizagem profunda

  1. 9TensoresCria e muda a forma de tensores do PyTorch.
    • Cria tensores e verifica a forma e o tipo.
    • Muda a forma, empilha e corta.
    • Move tensores para uma GPU.
  2. 10MódulosConstrói um modelo com módulos de torch.nn.
    • Cria uma subclasse de nn.Module.
    • Usa camadas Linear e de ativação.
    • Imprime o modelo e a contagem de parâmetros.
  3. 11OtimizadoresTreina com os otimizadores SGD e Adam.
    • Usa zero_grad, backward e step.
    • Compara SGD e Adam numa tarefa.
    • Usa um calendário da taxa de aprendizagem.
  4. 12Guião de treinoEscreve um ciclo completo de treino e teste.
    • Carrega dados com um DataLoader.
    • Treina, valida e testa.
    • Guarda o melhor modelo.

Visão por computador

  1. 13Imagens como tensoresCarrega imagens como tensores e normaliza-as.
    • Carrega uma imagem como canais, altura e largura.
    • Redimensiona e normaliza.
    • Mostra um lote como uma grelha.
  2. 14ConvoluçõesExplica como um filtro de convolução encontra arestas.
    • Desliza à mão um filtro 3×3 sobre uma imagem.
    • Aplica filtros de arestas em código.
    • Explica stride, padding e pooling.
  3. 15CNNConstrói uma rede neuronal convolucional, uma CNN.
    • Empilha camadas de convolução, ativação e pooling.
    • Achata e acrescenta uma cabeça de classificação.
    • Acompanha as formas através da rede.
  4. 16Classificador de imagensTreina uma CNN para classificar imagens.
    • Treina num conjunto pequeno de imagens.
    • Indica a exatidão no teste.
    • Mostra imagens que classificou mal.

Processamento de linguagem natural

  1. 17TokenizaçãoTransforma texto em tokens e IDs com tokenização.
    • Compara tokens de palavra e de subpalavra.
    • Constrói um vocabulário.
    • Preenche as sequências até ao mesmo comprimento.
  2. 18EmbeddingsExplica como os embeddings põem palavras parecidas perto umas das outras.
    • Usa uma camada de embeddings.
    • Encontra as palavras mais próximas de uma palavra.
    • Desenha embeddings em 2 dimensões.
  3. 19Modelos de textoConstrói um modelo de texto que lê uma sequência de tokens.
    • Faz a média dos embeddings num vetor.
    • Usa uma camada recorrente simples.
    • Compara os dois.
  4. 20Classificador de sentimentoTreina um classificador de sentimento para distinguir críticas positivas de negativas.
    • Treina num conjunto de críticas.
    • Indica exatidão, precisão e revocação.
    • Encontra críticas que o enganam, como o sarcasmo.

Transformers

  1. 21AtençãoExplica como a atenção pesa os outros tokens.
    • Explica query, key e value.
    • Calcula os pesos de atenção de uma frase curta.
    • Diz porque é que a atenção ajuda o significado à distância.
  2. 22Blocos transformerNomeia as partes de um bloco transformer.
    • Nomeia multi-head attention, feed-forward e camadas de normalização.
    • Explica ligações residuais.
    • Explica codificações de posição.
  3. 23Modelos pré-treinadosUsa um transformer pré-treinado numa tarefa.
    • Carrega um modelo pré-treinado e um tokenizer.
    • Classifica texto com ele.
    • Compara-o com o teu classificador de sentimento.
  4. 24Mapas de atençãoLê uma visualização de um mapa de atenção.
    • Desenha os pesos de atenção como um mapa de calor.
    • Encontra a que palavras um token presta atenção.
    • Diz porque é que a atenção não é uma explicação completa.

Áudio e IA multimodal

  1. 25Som como dadosTransforma o som numa forma de onda e num espetrograma.
    • Carrega o som e desenha a forma de onda.
    • Explica a taxa de amostragem.
    • Faz um espetrograma.
  2. 26Classificador de áudioClassifica clipes de áudio curtos.
    • Trata espetrogramas como imagens.
    • Treina uma CNN neles.
    • Testa com ruído de fundo.
  3. 27Entradas multimodaisExplica como um modelo junta entradas multimodais de imagens e texto.
    • Explica codificadores separados para cada entrada.
    • Explica um espaço de embeddings partilhado.
    • Nomeia 3 aplicações multimodais.
  4. 28Imagem e textoAssocia imagens a legendas de texto com um modelo pré-treinado.
    • Cria embeddings de imagens e legendas.
    • Ordena as legendas de cada imagem.
    • Procura imagens com uma consulta de texto.

Melhorar o modelo

  1. 29RegularizaçãoReduz o sobreajuste com regularização: dropout e decaimento dos pesos.
    • Acrescenta dropout.
    • Acrescenta decaimento dos pesos.
    • Compara as curvas de validação.
  2. 30Aumento de dadosAcrescenta, como aumento de dados, imagens invertidas e recortadas ao conjunto de treino.
    • Aplica inversões, recortes e mudanças de cor.
    • Faz o aumento de dados só no conjunto de treino.
    • Mede a mudança na exatidão do teste.
  3. 31Aprendizagem por transferênciaAfina um modelo pré-treinado em classes novas com aprendizagem por transferência.
    • Congela as camadas pré-treinadas.
    • Substitui e treina a cabeça.
    • Descongela e afina com uma taxa de aprendizagem pequena.
  4. 32Análise de errosAgrupa erros e encontra a causa.
    • Lê uma matriz de confusão para muitas classes.
    • Separa os erros em grupos.
    • Escolhe a correção para o grupo maior.

Projeto de aprendizagem profunda

  1. 33Dados de vida selvagemEscolhe e divide um conjunto aberto de imagens de vida selvagem.
    • Escolhe um conjunto aberto de armadilhas fotográficas ou de vida selvagem.
    • Escolhe de 5 a 10 espécies.
    • Divide por local para o teste ser justo.
  2. 34Afina o modeloAfina um classificador de imagens em classes de vida selvagem.
    • Afina um modelo pré-treinado.
    • Acompanha a exatidão de validação.
    • Guarda o melhor checkpoint.
  3. 35Interface de demonstraçãoConstrói uma interface de demonstração que mostra previsões em imagens carregadas.
    • Aceita uma imagem carregada.
    • Mostra as 3 espécies de topo e as suas pontuações.
    • Mostra “não sei” quando a confiança é baixa.
  4. 36Monitor inteligente de vida selvagemApresenta a exatidão do monitor de vida selvagem em imagens nunca vistas e os principais erros.
    • Indica a exatidão em imagens nunca vistas.
    • Mostra os principais erros e as suas causas.
    • Diz o que mudarias a seguir.