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
S
Description
No description provided
Readme
23 MiB
Languages
Python 100%