Este projeto demonstra o impacto de diferentes inicializações de pesos na robustez de redes neurais quando expostas a ruído gaussiano, utilizando o dataset MNIST.
O projeto compara quatro tipos de inicialização de pesos:
- GlorotUniform (Xavier): Mantém variância constante entre camadas
- HeUniform: Otimizada para ativação ReLU
- RandomNormal: Distribuição normal simples
- Constant: Valor fixo para comparação
- ✅ Carregamento e pré-processamento do dataset MNIST
- ✅ Treinamento de modelos MLP com diferentes inicializações
- ✅ Adição de ruído gaussiano para teste de robustez
- ✅ Visualização comparativa de resultados
- ✅ Análise de degradação de performance por ruído
- ✅ Variação de Níveis de Ruído: Testa 8 níveis diferentes (0.05 a 0.4)
- ✅ Variação de Learning Rates: 5 taxas diferentes (1e-4 a 1e-2)
- ✅ Variação de Batch Sizes: 5 tamanhos (32 a 512)
- ✅ Testes com Dropout: 6 taxas de dropout (0.0 a 0.5)
- ✅ Funções de Ativação: Compara ReLU, Tanh, ELU, Sigmoid
- ✅ Análise Sistemática: 30+ experimentos automatizados
- ✅ Visualizações Avançadas: Gráficos multi-painel com análise detalhada
O notebook gera gráficos comparativos mostrando:
- Accuracy em dados limpos vs. ruidosos
- Degradação percentual de performance
- Tabela detalhada com métricas
- Python 3.11
- TensorFlow 2.16.2
- NumPy
- Matplotlib
- Jupyter Notebook
├── mnist_robustness_analysis.ipynb # Notebook principal (experimentos básicos)
├── main.py # Script de experimentos básicos
├── advanced_experiments.py # 🆕 Script de experimentos avançados
├── run_custom_experiments.py # 🆕 Interface CLI para experimentos
├── utils.py # Funções auxiliares
├── requirements.txt # Dependências
├── README.md # Este arquivo
├── EXPERIMENTS_GUIDE.md # 🆕 Guia detalhado de experimentos
└── .gitignore # Arquivos ignorados pelo Git
- Clone o repositório:
git clone https://github.com/rafaelsoares4/neural-network-robustness-analysis.git
cd neural-network-robustness-analysis- Crie um ambiente virtual:
python -m venv venv
source venv/bin/activate # Linux/Mac
# ou
venv\Scripts\activate # Windows- Instale as dependências:
pip install -r requirements.txt- Via Jupyter Notebook:
jupyter notebook mnist_robustness_analysis.ipynb- Via Script Python:
python main.py- Executar TODOS os experimentos avançados:
python advanced_experiments.pyTempo estimado: 30-45 minutos
- Executar experimentos específicos:
# Apenas ruído e dropout
python run_custom_experiments.py --experiments noise dropout
# Apenas learning rate
python run_custom_experiments.py --experiments learning_rate
# Todos os experimentos
python run_custom_experiments.py --all- Experimento customizado:
python run_custom_experiments.py --custom \
--initializer he \
--optimizer adam \
--learning-rate 0.001 \
--dropout 0.3 \
--noise 0.25 \
--batch-size 128 \
--epochs 20 \
--name "meu_teste"- Ver todas as opções:
python run_custom_experiments.py --helpPara mais detalhes, consulte: EXPERIMENTS_GUIDE.md
- HeUniform: Geralmente melhor performance com ReLU
- GlorotUniform: Boa performance geral
- RandomNormal: Performance variável
- Constant: Baseline (geralmente pior performance)
Contribuições são bem-vindas! Sinta-se à vontade para:
- Reportar bugs
- Sugerir melhorias
- Adicionar novas funcionalidades
- Melhorar a documentação
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Rafael Soares
- GitHub: @rafaelsoares4
Este projeto inclui documentação extensa para diferentes níveis de usuário:
- QUICKSTART.md - Guia de início rápido (5 minutos)
- Teste de instalação
- Primeiros experimentos
- Comandos essenciais
- SIMULATION_SUGGESTIONS.md - Sugestões específicas de simulações
- 10 objetivos de pesquisa diferentes
- Simulações prontas para copiar/colar
- Análise por cenário
- EXPERIMENTS_GUIDE.md - Guia completo de experimentos
- Detalhes de cada tipo de experimento
- Interpretação de resultados
- Configurações avançadas
Iniciante → QUICKSTART.md → Execute quick_test.py
↓
Intermediário → SIMULATION_SUGGESTIONS.md → Execute configurações pré-definidas
↓
Avançado → EXPERIMENTS_GUIDE.md → Crie experimentos customizados
| Script | Propósito | Tempo | Dificuldade |
|---|---|---|---|
quick_test.py |
Validar instalação | 2-3 min | ⭐ Fácil |
load_and_run_config.py |
Usar configs pré-definidas | 5-10 min | ⭐ Fácil |
run_custom_experiments.py |
Experimentos customizados | 5-30 min | ⭐⭐ Médio |
advanced_experiments.py |
Suite completa | 30-45 min | ⭐⭐⭐ Avançado |