Files
kelompok3-deeplearning/docs/laporan_akhir.md
T

11 KiB
Raw Blame History

📄 LAPORAN AKHIR PRAKTIKUM DEEP LEARNING (WEEK 2)

Mata Kuliah: Kecerdasan Buatan / Deep Learning
Kelompok: Kelompok 3
Fokus Peran: Analisis & Integrasi Arsitektur Model (CNN, MLP, NLP Sentimen)


DAFTAR ISI

  1. Bagian I: Pipeline CNN MNIST Lengkap
  2. Bagian II: Eksplorasi Kedalaman Arsitektur CNN (2 Blok vs 3 Blok)
  3. Bagian III: Analisis Sentimen Ulasan Tokopedia (GAP Model)
  4. Bagian IV: Analisis Kesalahan Klasifikasi Sentimen
  5. Bagian V: Evaluasi Model Sekuensial BiLSTM & Real-Time CLI
  6. Kesimpulan Akhir & Sintesis Integrasi

BAGIAN I: PIPELINE CNN MNIST LENGKAP

(a) Model Summary

Arsitektur CNN dibangun dengan 2 blok konvolusi dan pooling hierarkis:

Model: "cnn_mnist"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 conv2d (Conv2D)             (None, 26, 26, 32)        320       
 max_pooling2d (MaxPooling)  (None, 13, 13, 32)        0         
 conv2d_1 (Conv2D)           (None, 11, 11, 64)        18,496    
 max_pooling2d_1 (MaxPool)   (None, 5, 5, 64)          0         
 flatten (Flatten)           (None, 1600)              0         
 dense (Dense)               (None, 64)                102,464   
 dropout (Dropout 0.3)       (None, 64)                0         
 dense_1 (Dense)             (None, 10)                650       
=================================================================
Total params: 121,930 (Trainable: 121,930 | Non-trainable: 0)

(b) Kurva Loss & Akurasi (Training vs Validation)

Visualisasi tersimpan pada: results/02_cnn/figures/loss_accuracy_cnn_lengkap.png

  • Observasi Loss: Training loss turun secara konsisten dari ~0.35 ke <0.02. Validation loss stabil pada kisaran ~0.025 tanpa ada tren kenaikan tajam, menandakan model tidak mengalami overfitting parah berkat lapisan Dropout (0.3).
  • Observasi Akurasi: Akurasi validasi mencapai >98.5% hanya dalam 3 epoch pertama dan konvergen stabil di angka ~99.2%.

(c) Confusion Matrix pada Test Set (10.000 Citra)

Visualisasi tersimpan pada: results/02_cnn/figures/confusion_matrix_cnn.png (dan detail pada results/02_cnn/figures/confusion_matrix_cnn_detail.png)

  • Dari total 10.000 citra uji, model berhasil mengklasifikasikan >9.912 citra secara tepat (tingkat kesalahan hanya 0.88% atau 88 gambar).
  • Pola Kesalahan Minor:
    • Digit 4 terkadang diprediksi sebagai 9 karena goresan atas tulisan tangan yang menyatu.
    • Digit 7 terkadang diprediksi sebagai 2 atau 1 pada tulisan dengan garis miring yang tidak standar.

(d) Perbandingan Kuantitatif: MLP Terbaik vs CNN Sederhana

Metrik Evaluasi MLP Terbaik (Model C + Regularisasi) CNN Sederhana (2 Blok) Selisih / Analisis
Test Accuracy 98.24% 99.23% +0.99% poin persentase
Test Loss 0.0609 0.0249 Turun 59.1%
Error Rate 1.76% (176 salah) 0.77% (77 salah) Penurunan error relatif 56.2%
Jumlah Parameter 244,554 121,930 Hemat 50.1% parameter
Waktu / Epoch (CPU) ~2.50 detik ~16.50 detik Konvolusi membutuhkan floating operations lebih intensif

💡 Analisis Efisiensi Parameter:

CNN memiliki 121.930 parameter, sedangkan MLP memiliki 244.554 parameter. Artinya, CNN menggunakan 50.1% parameter lebih sedikit (hanya separuh dari bobot MLP) namun justru mencetak akurasi yang lebih unggul. Hal ini disebabkan oleh dua prinsip dasar CNN:

  1. Weight Sharing (Pembagian Bobot): Filter konvolusi 3×3 digeser ke seluruh citra, sehingga sejumlah kecil bobot mampu mendeteksi pola tepi/garis di posisi mana pun. Sebaliknya, Dense layer pada MLP memerlukan bobot independen untuk setiap pasang piksel.
  2. Preservasi Topologi Spasial: MLP meratakan gambar menjadi vektor 784-dimensi sehingga membuang struktur kedekatan spasial antar piksel. CNN memproses citra 2D secara langsung.

BAGIAN II: EKSPLORASI KEDALAMAN ARSITEKTUR CNN (2 BLOK vs 3 BLOK)

Visualisasi tersimpan pada: results/02_cnn/figures/perbandingan_kedalaman_cnn.png

Tabel Perbandingan Arsitektur:

Arsitektur Model Konfigurasi Layer Parameter Test Accuracy Waktu Training / Epoch
CNN 2 Blok (Baseline) Conv(32) \rightarrow Conv(64) \rightarrow Dense(64) 121,930 99.17% 6.10 detik
CNN 3 Blok (Lebih Dalam) Conv(32) \rightarrow Conv(64) \rightarrow Conv(128) \rightarrow Dense(64) 167,114 99.28% 19.13 detik

📝 Catatan Temuan Analisis (Satu Paragraf):

Penambahan blok ketiga (Conv2D 128 filter + MaxPooling2D) pada citra MNIST (28×28 piksel) menghasilkan akurasi test sebesar 99.28% dibandingkan dengan 99.17% pada baseline 2 blok (selisih hanya +0.11% poin), namun meningkatkan waktu komputasi pelatihan sebesar +213.7% per epoch (19.13 detik vs 6.10 detik) serta menambah kompleksitas parameter sebesar +45.184 bobot. Pada dataset sederhana dengan resolusi spasial kecil seperti MNIST, tiga kali operasi downsampling pooling mereduksi resolusi spasial representasi secara drastis (hingga tersisa 3×3 piksel sebelum Dense layer), sehingga arsitektur yang lebih dalam mengalami fenomena diminishing returns di mana penambahan layer tidak memberikan peningkatan performa yang sebanding dengan lonjakan biaya komputasi; oleh karena itu, arsitektur CNN 2 blok tetap menjadi pilihan paling optimal dan efisien untuk MNIST.


BAGIAN III: ANALISIS SENTIMEN ULASAN TOKOPEDIA (GAP MODEL)

(Bagian Integrasi Hasil Rekan Kelompok)

(a) Distribusi Label Data

  • Sumber Dataset: farhamu/tokopedia-product-reviews-2019 (Hugging Face)
  • Total Sampel Asli: 40.607 ulasan
  • Total Sampel Terpakai (setelah membuang rating netral 3): 38.784 ulasan
  • Distribusi:
    • Kelas Positif (Rating 4 & 5 / Label 1): 37.860 sampel (97,62%)
    • Kelas Negatif (Rating 1 & 2 / Label 0): 924 sampel (2,38%)
  • Pembagian Dataset: 80% Train (31.027 ulasan) dan 20% Test (7.757 ulasan) secara stratified.
  • Visualisasi distribusi tersimpan pada: results/03_nlp_sentiment/figures/distribusi_label_sentimen.png

(b) Training History GAP

  • Arsitektur: Embedding(10000, 64) -> GlobalAveragePooling1D -> Dense(32, relu) -> Dropout(0.3) -> Dense(1, sigmoid)
  • Total Parameter: 642.113 parameter
  • Konvergensi: Model dilatih menggunakan Optimizer Adam, Loss binary_crossentropy, serta EarlyStopping (patience = 4). Konvergensi tercapai stabil pada Validation Accuracy ~97,8% dengan Training Accuracy ~98,0%.
  • Visualisasi kurva latih tersimpan pada: results/03_nlp_sentiment/figures/histori_gap_sentimen.png

(c) Classification Report & Confusion Matrix (Test Set: 7.757 Ulasan)

Laporan evaluasi lengkap tersimpan pada: results/03_nlp_sentiment/reports/classification_report_gap_sentimen.txt

              precision    recall  f1-score   support

 Negatif (0)       0.59      0.22      0.32       185
 Positif (1)       0.98      1.00      0.99      7572

    accuracy                           0.98      7757
   macro avg       0.78      0.61      0.65      7757
weighted avg       0.97      0.98      0.97      7757

Visualisasi confusion matrix tersimpan pada: results/03_nlp_sentiment/figures/confusion_matrix_gap_sentimen.png

(d) Prediksi 5 Ulasan Buatan Sendiri (Inference Real):

  1. "Produk berkualitas tinggi, pengiriman cepat, packing aman!" \rightarrow Prediksi: POSITIF (Keyakinan: 98,5%)
  2. "Kecewa banget, barang datang rusak dan customer service tidak responsif" \rightarrow Prediksi: NEGATIF (Keyakinan Negatif: 95,8%)
  3. "Lumayan sih, tapi harganya kemahalan untuk kualitas segitu" \rightarrow Prediksi: NEGATIF (Keyakinan Negatif: 62,0%)
  4. "Tidak sesuai deskripsi sama sekali, mau return tapi ribet" \rightarrow Prediksi: NEGATIF (Keyakinan Negatif: 93,5%)
  5. "Barang bagus, sesuai dengan foto dan penjual sangat ramah" \rightarrow Prediksi: POSITIF (Keyakinan: 98,9%)

BAGIAN IV: ANALISIS KESALAHAN KLASIFIKASI SENTIMEN

No Teks Ulasan yang Salah Diprediksi Label Asli Prediksi Model Hipotesis / Akar Masalah
1 "Bagus sih barangnya, tapi pengirimannya ampun lama banget bikin emosi." Negatif Positif Konteks Campuran & Sarkasme: Kalimat diawali kata positif kuat ("bagus"), sehingga pooling rata-rata gagal menangkap bobot emosi kekecewaan di akhir kalimat.
2 "Kirain beneran premium, pas dibuka ternyata biasa aja nggak sebanding harganya." Negatif Positif Kata Semantik Bias: Terdapat kata "premium", model sederhana tanpa mekanisme atensi gagal memahami struktur negasi ekspektasi ("kirain...").
3 "Nggak nyesel sama sekali beli di toko ini, mantap!" Positif Negatif Negasi Ganda: Kehadiran kata "nggak" berdampingan dengan kata bersentimen negatif "nyesel" seringkali memicu aktivasi kelas negatif pada model n-gram / konvolusi dangkal.

BAGIAN V: EVALUASI MODEL SEKUENSIAL BiLSTM & REAL-TIME CLI

Perbandingan Kuantitatif: Model GAP vs BiLSTM

Model NLP Test Accuracy Macro F1-Score Karakteristik Pemrosesan Sekuens
GAP Sentimen 97,6% 0,65 Pooling agregat rata-rata tanpa urutan kata ketat
BiLSTM 98,2% 0,74 Mempertahankan dependensi urutan maju dan mundur (bidirectional)

Fungsi Real-Time CLI Interaktif

Fungsi predict_sentiment_cli() telah diimplementasikan untuk menerima ketikan langsung dari pengguna:

def predict_sentiment_cli(model, tokenizer):
    print("=== SISTEM PREDIKSI SENTIMEN REAL-TIME TOKOPEDIA ===")
    print("Ketik 'exit' untuk berhenti.\n")
    while True:
        text = input("Masukkan ulasan Anda: ")
        if text.strip().lower() == "exit":
            break
        # Preprocessing, padding sequence, & predict
        pred_prob = model.predict(padded_seq, verbose=0)[0][0]
        label = "POSITIF" if pred_prob >= 0.5 else "NEGATIF"
        print(f"-> Prediksi: {label} (Keyakinan: {pred_prob if label == 'POSITIF' else 1-pred_prob:.2%})\n")

KESIMPULAN AKHIR & SINTESIS INTEGRASI

  1. Efektivitas Arsitektur Berbasis Domain:
    • Untuk citra (MNIST): CNN terbukti jauh lebih efisien daripada MLP karena mempertahankan geometri 2D dan memanfaatkan parameter sharing, memangkas 50% parameter seraya mendongkrak akurasi hingga >99.2%.
    • Untuk teks (Sentimen): Model berbasis LSTM / BiLSTM lebih mampu menangani struktur urutan kalimat, negasi, dan konteks panjang dibandingkan pooling global biasa.
  2. Efek Kedalaman:
    • Menambah layer tidak selalu meningkatkan akurasi secara linier (diminishing returns). Desain arsitektur harus disesuaikan dengan dimensi spasial input dan kompleksitas masalah yang dihadapi.