ef7ecf9e51ad1a40fb9d3d34a8b5939655f8c021
Praktikum Deep Learning - Kelompok 3
Repository ini berisi implementasi tugas dan eksperimen Deep Learning, mencakup perbandingan arsitektur Multi-Layer Perceptron (MLP), teknik regularisasi (Batch Normalization & Dropout), studi kasus pemilihan model (Model Selection), serta implementasi Convolutional Neural Network (CNN) pada dataset MNIST.
📁 Struktur Folder Proyek
Struktur direktori dirapikan secara modular dan terkelompok berdasarkan topik tugas:
kelompok3-deeplearning/
├── .gitignore # Konfigurasi file & folder yang diabaikan git
├── requirements.txt # Daftar pustaka / dependensi Python
├── README.md # Dokumentasi utama proyek
├── docs/ # Dokumentasi dan analisis laporan
│ ├── laporan_akhir.md
│ ├── PRESENTATION.md
│ ├── model_selection.md
│ └── analisis_evaluasi_model_sentimen_gap.md
├── src/ # Modul reusable / fungsi pembantu bersama
│ ├── __init__.py
│ ├── data_loader.py # Loader & preprocessor dataset MNIST (MLP & CNN)
│ ├── models.py # Definisi arsitektur model (MLP, Regularized MLP, CNN)
│ └── utils.py # Callback timer, manajemen folder, plotting helper
├── tasks/ # Skrip tugas yang dikelompokkan berdasarkan topik
│ ├── mlp/ # Topik 1: Multi-Layer Perceptron (MNIST)
│ │ ├── 01_mlp_comparison.py # Eksperimen perbandingan 3 arsitektur MLP
│ │ ├── 02_regularization.py # Eksperimen regularisasi (BatchNorm + Dropout)
│ │ └── 03_model_selection.py # Studi kasus pemilihan arsitektur model
│ ├── cnn/ # Topik 2: Convolutional Neural Network (MNIST)
│ │ ├── 04_cnn_mnist.py # Baseline CNN vs MLP
│ │ ├── 05_cnn_full_pipeline.py # Pipeline CNN lengkap (Loss/Acc curve, Confusion Matrix)
│ │ ├── 06_cnn_deeper.py # Eksplorasi kedalaman CNN (2 blok vs 3 blok)
│ │ └── 07_cnn_evaluation.py # Evaluasi mendalam (per-class metrics, confidence, misclassified)
│ └── nlp_sentiment/ # Topik 3: NLP Analisis Sentimen (Tokopedia)
│ └── 08_sentimen_gap.py # Klasifikasi sentimen ulasan Tokopedia (GlobalAveragePooling1D)
└── results/ # Output terorganisir per kelompok tugas
├── 01_mlp/
│ ├── figures/ # Visualisasi grafik MLP & regularisasi
│ ├── models/ # Model terlatih MLP (.keras)
│ └── reports/ # Laporan & ringkasan metrik MLP (.csv)
├── 02_cnn/
│ ├── figures/ # Visualisasi grafik, confusion matrix, error analysis CNN
│ ├── models/ # Model terlatih CNN (.keras)
│ └── reports/ # Classification report (.txt, .csv) & evaluasi CNN
└── 03_nlp_sentiment/
├── figures/ # Distribusi label, kurva training, confusion matrix GAP
├── models/ # Model terlatih sentiment GAP (.keras)
└── reports/ # Classification report sentimen (.txt)
🚀 Panduan Instalasi & Menjalankan
1. Buat dan Aktifkan Virtual Environment
# Linux / macOS
python3 -m venv .venv
source .venv/bin/activate
# Windows (Command Prompt / PowerShell)
python -m venv .venv
.venv\Scripts\activate
2. Install Dependensi
pip install -r requirements.txt
3. Menjalankan Tugas
🔹 Topik 1: Multi-Layer Perceptron (MLP)
python tasks/mlp/01_mlp_comparison.py
python tasks/mlp/02_regularization.py
python tasks/mlp/03_model_selection.py
🔹 Topik 2: Convolutional Neural Network (CNN)
python tasks/cnn/04_cnn_mnist.py
python tasks/cnn/05_cnn_full_pipeline.py
python tasks/cnn/06_cnn_deeper.py
python tasks/cnn/07_cnn_evaluation.py
🔹 Topik 3: NLP Analisis Sentimen
python tasks/nlp_sentiment/08_sentimen_gap.py
📊 Ringkasan Hasil Eksperimen
1. Perbandingan Arsitektur MLP (Tugas 1)
- Model A (1 Hidden Layer - 64): ~97.06% Akurasi, 50,890 Parameter
- Model B (2 Hidden Layers - 128 → 64): ~97.24% Akurasi, 109,386 Parameter
- Model C (3 Hidden Layers - 256 → 128 → 64): ~97.64% Akurasi, 242,762 Parameter
2. Regularisasi pada Model C (Tugas 2)
- Penambahan Batch Normalization dan Dropout (0.3) terbukti menstabilkan proses training dan menekan generalization gap / overfitting pada kurva validasi.
3. Keunggulan CNN vs MLP pada MNIST (Tugas 4)
| Metrik | MLP Terbaik (Model C) | CNN Sederhana | Perubahan |
|---|---|---|---|
| Test Accuracy | 97.64% | 99.03% | +1.39% |
| Error Rate | 2.36% | 0.97% | -58.9% (relatif) |
| Jumlah Parameter | 242,762 | 121,930 | -49.8% (lebih efisien) |
| Salah Klasifikasi | 236 / 10,000 | 97 / 10,000 | 139 gambar lebih sedikit |
🛠️ Teknologi & Framework
- Python 3.10+
- TensorFlow / Keras
- NumPy & Pandas
- Matplotlib & Seaborn
- XGBoost & Scikit-Learn
Languages
Python
100%