Git Product home page Git Product logo

materials-and-their-mechanical-properties's Introduction

Projeto Final Redes Neurais: Uma análise de propriedades mecânicas de materiais

Este repositório é destinado a guardar os arquivos utilizados e desenvolvidos no projeto de conclusão de redes neurais da disciplina "Redes Neurais e Algoritmos Genéticos" do terceiro semestre do Bacharelado em Ciência e Tecnologia da Ilum - Escola de Ciência do Centro Nacional de Pesquisa em Energia e Materiais (CNPEM). O projeto consiste em identificar e otimizar hiperparâmetros de uma rede neural do tipo MLP (Multilayer Perceptron) para resolver um problema de regressão de interesse científico.

Os dados utilizados para o treino e teste da rede neural desenvolvida pertence ao banco de dados "kaggle". O dataset tem por título "Materials and their Mechanical Properties" e consiste em um conjunto de dados reais de propriedades mecânicas de diferentes materiais. Tal projeto foi dividido em três etapas principais separadas em jupyter notebooks, sendo elas: o tratamento do conjunto de dados, a criação da rede neural e a otimização dos hiperparâmetros. O leitor deve se sentir a vontade quanto à ordem de execução dos notebooks abaixo, porém, é altamente recomendado que se siga o fluxo descrito abaixo para um melhor entendimento sobre o processo de criação da equipe.

Tratamento do Dataset.ipynb: Iniciamos o tratamento excluindo as colunas que não seriam úteis para nossa análise. Consideramos como colunas não úteis todas que não possuissem dados númericos ou que não tivessem potencial para serem convertidos em númericos, restando apenas a coluna de identificação do material como não numerica. Após esse tratamento as seguintes colunas restaram:

  • Tração máxima (Su);
  • Limite de resistência (Sy);
  • Módulo elástico (E);
  • Módulo de cisalhamento (G);
  • Coeficiente de Poisson (mu);
  • Densidade (Ro).

Após uma análise das colunas e discussão do grupo, o atributo de Tração máxima (Su) foi escolhido como target para o modelo de rede neural, restando aos outros serem as features. Após isso, as colunas foram convertidas para valores númericos e o dataset novo salvo no arquivo "Dataset.pickle"

Objetos_rede_neural.py: Esse script contém as classes com os métodos que serão utilizados na criação e treino da rede neural.

Rede Neural.ipynb: Dividimos o dataset dos dados escolhidos já tratados em teste e validação juntamente com uma ferramenta apropriada para encapsular esse pré-processamento. Uma rede neural do tipo MLP (Multilauyer perceptron) foi criada e treinada utilizando o treinador do pytorch lightning ajustando a rede criada com os dados encapsulados. Durante os treinos de nossa rede neural, utilizamos 5 camadas. Após isso foram feitas análises da curva de aprendizado da rede com o treino e validação e uma comparação dos valores reais do conjunto de dados com os preditos pela rede

objetos_otimizacao_rede_neural.py: Esse script contém as classes com os métodos que serão utilizados no treino e teste de otimização da rede neural, com o objetivo de encontrar os melhores hiperparâmetros. Para isso, dividimos o dataset entre teste e teste "premium", sendo esse último apenas utilizado para testar a rede com os melhores hiperparâmetros retornados pelo otimizador.

Otimizando Rede.ipynb Fizemos a otimização dos hiperparâmetros da rede neural utilizando o optuna. Para isso, desenvolvemos uma função para criação do modelo que em si já cria uma rede neural com os dados sugeridos pelo otimizador. O otimizador que utlizamos foi o otimizador Adam, esse otimizador é a junção de dois outros: Momento e RMSProp. O otimizador Adam junta duas características importantes desses outros, do momento ele usa a velocidade e do RMSProp a capacidade de adpatar-se com base nos diferentes gradientes observados anteriormente. Após isso, treinamos a função e cálculamos seu erro com base no erro quadrático médio (RMSE) desabilitando o cálculo de gradientes na rede. Foi criado um estudo com objetivo de minimizar a função objetivo, que em nosso caso é o RMSE.

Conclusão: Com esse estudo, pudemos aplicar os conhecimentos de sala de aula nessa primeira etapa da disciplina, com um foco maior nas redes neurais do tipo MLP e seus usos. Aplicamos a um dataset exemplo em treinamento, analisamos a medida de "Loss" ou perda do modelo com o decorrer das épocas e utilizamos como métrica principal para o desempenho do modelo, o RMSE. Ao final foi feita uma comparação dos valores previstos pela rede com os valores reais, obtendo dados que plotados em espalhamento tinham tendencia linear, o que nos informa um bom desenpenho na predição desses valores pela rede.

Referências
[1] JIANG, L. A Visual Explanation of Gradient Descent Methods (Momentum, AdaGrad, RMSProp, Adam). Disponível em: .

[2] Materials and their Mechanical Properties. Disponível em: https://www.kaggle.com/datasets/purushottamnawale/materials. Acesso em: 7 maio. 2024.

[3] Cassar, D. R. ATP-303 NN 5.2 - Notebook PyTorch.

[4] Cassar, D. R. ATP-303 NN 5.3 - PyTorch Lightning

[5] Cassar, D. R. ATP-303 NN 4.2 - Notebook MLP

[6] Cassar, D. R. 11 - Otimização de hiperparâmetros. Notebook Jupyter

[7] WIKIPEDIA CONTRIBUTORS. Ultimate tensile strength. Disponível em: https://en.wikipedia.org/wiki/Ultimate_tensile_strength.

‌[8] LEO, C. The Math behind Adam Optimizer. Disponível em: https://towardsdatascience.com/the-math-behind-adam-optimizer-c41407efe59b.

materials-and-their-mechanical-properties's People

Contributors

josedavid23038 avatar emmanoelpequeno avatar diogoplcarvalho avatar

Watchers

 avatar

Forkers

emmanoelpequeno

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.