Reconhecimento de Padrões

Código Disciplina: RC18EE

Horários:

Terças: 10:20-12:00 (2 aulas)

Quintas: 7:30-10:00 (3 aulas)

Avaliação:

HW 1 - Pesquisa survey

  • Data apresentação 07/06
  • Pesquisar uma survey ou review de aplicações de aprendizado de máquinha ou deep learning na sua área de pesquisa. Uma survey é uma coleção de trabalhos organizados de modo a demostrar as principais abordagens de um determinado problema, ou então as possibilidades de aplicação de uma determinada técnica. Normalmente é uma ótima forma para se iniciar pesquisa científica, uma vez que os principais conceitos serão explicados sem focar em detalhes de cada uma das soluções. Seja criativo no uso de palavras chaves na busca (ex power system e smart grid podem retornar resultados muito diferentes)
  • Ex: Deep Learning in Mobile and Wireless Networking: A Survey https://arxiv.org/pdf/1803.04311.pdf
  • Ex: A Survey of Machine Learning Applications for Power System Analytics https://ieeexplore.ieee.org/document/8783340
  • Ex: A Tour of Reinforcement Learning: The View from Continuous Control https://arxiv.org/pdf/1806.09460.pdf
  • Ex: Deep Learning for Image Denoising: A Survey https://arxiv.org/pdf/1810.05052.pdf
  • Ex: Deep Face Recognition: A Survey https://arxiv.org/pdf/1804.06655.pdf
  • Ler o artigo e fazer anotações nos pontos que mais chamarem atenção (aplicações, resultados, etc...)
  • Em caso de não existir uma survey ou review na área desejada pode ser um artigo normal
  • Caso sorteado apresentar os principais pontos para a turna na próxima aula

HW2 - Filme AlphaGo

HW3 - Kaggle

  • Data entrega 07/06
  • Entre no site do www.kaggle.com
    • Na aba datasets escolha, entre os ~40000 datasets disponíveis um problema de seu interesse
    • O problema pode ser de regressão, classificação binária ou de multiplas classes
    • De preferencia para problemas cujas base de dados já estão pré-processadas, ou seja, sua matriz X e Y já esteja pronta a ser lida, talvez já em formato csv (muitos problemas do kaggle vc terá que ler varios arquivos ou banco de dados e montar a matrix X, necessitando um grau de programação um pouco mais alto)
  • Utilizando uma rede neural de uma única camada (Adaline, Regressão logistica, Perceptron ou Regressão linear), resolva o problema proposto, apresentando ao final MSE e coeficiente R2 se for regressão e acurácia e matriz de confusão se for classificação
  • A rede pode ser feita tanto em pytorch quanto em keras. Funções auxiliares podem ser feitas a mão ou usando bibliotecas do scikit-learn

WH4 - Hiperparâmetros

  • Data entrega 24/06
  • O objetivo do trabalho 4 é fazer ajuste dos hiperparâmetros do modelo
  • Utilize a base de dados fashionmnist
  • Ajuste todos os hiperparâmetros possíveis e crie uma tabela com os resultados obtidos. A saber, os hiperparâmetros que devem ser testados são, no mínimo:
    • Número de camadas ocultas (variar valores)
    • Número de neurônios nas camadas ocultas (variar valores)
    • Função da ativação das camadas ocultas e de saída (variar valores)
    • Taxa de aprendizado (variar valores)
    • Número de épocas de aprendizado (variar valores)
    • Tamanho do minibatch (variar valores)
    • Algorítimos de inicialização dos pesos (zeros, randomicos uniforme, glorot, he)
    • Algorítimos de treinamento (SGD, SGD+momentum, RMSprop, ADAM)
    • Adicionar regularização (l1, l2)
    • Adicionar layer de batchnormalization
    • Adicionar layer de dropout
  • Faça, no mínimo, 30 combinações. Deixe os modelos testados comentados no próprio notebook
  • Nem todos os modelos precisam ser bons, ter resultados horríveis é interessante também. A idéia é que vcs sintam os hiperparâmetros e como eles se afetam entre si
  • Dentre os resultados obtidos comente alguns que mais chamaram atenção (melhor, pior, etc) tentando relacionar com a teoria vista nas aulas

WH5 - Redes Neurais Convolucionais

  • Data entrega 10/07
  • O objetivo do trabalho é montar uma rede neural convolucional para classificar as imagens da base cifar10. Como base utiliza exemplo lenet5-keras disponível na aula L13
    • obs: cifar10 são imagens coloridas, então adaptações serão necessárias pois o lenet5 tem como entrada uma imagem preto e branco
  • Crie a rede com melhor resultado possível (maior acurácia), para isso vc pode variar qualquer hiperparâmetro que desejar, numero de camadas, filtros, regularização, dropout, qualquer coisa que vc ache necessário
  • Comente, no próprio notebook, os resultados obtidos
  • Compartilhe o arquivo resultado para avaliação

HW6 - Transfer Learning

  • O objetivo do trabalho é realizar transfer learning um pouco mais complexo.
  • Tomando como base o arquivo transferlearning-keras disponível na aula L13, altere o exemplo para criar um classificador para a base cifar10
  • No arquivo transferlearning-keras apenas a última camada é trocada. Nesse trabalho você deve remover ao menos 2 camadas do modelo original. Se tiver dúvidas em como fazer isso consulte a documentação em https://stackoverflow.com/questions/41668813/how-to-add-and-remove-new-layers-in-keras-after-loading-weights. O comando chave para realizar o procedimento é parecido com esse model.layers[-2].output
  • O modelo base pode ser Resnet, Inception, ou qualquer um que vc desejar
  • Comente no final do arquivo suas impressões e conclusões
  • Compartilhe o arquivo resultado para avaliação

HW7 - Autoencoders

  • Modifique o arquivo autoencoder-keras para criar um modelo que remove ruído de imagens coloridas
  • Use a base cifar10, aplique ruído nas 3 camadas
  • O pipeline do exemplo será o mesmo, porém será necessário modificar a estrutura do autoencoder para obter bons resultados, uma vez que o problema é mais complexo (imagem colorida)
  • Lembre que a saída é uma imagem colorida, portanto o shape da última camada deverá se adaptar a isso
  • Comente no final do arquivo suas impressões e conclusões
  • Compartilhe o arquivo resultado para avaliação
RC18EE - Notas