Restricted Boltzmann Machine (RBM) adalah salah satu jenis jaringan syaraf probabilistik yang digunakan untuk pembelajaran tak terawasi (unsupervised learning).
RBM memiliki kemampuan untuk mempelajari distribusi probabilitas dari data input, sehingga sering digunakan untuk reduksi dimensi, ekstraksi fitur, dan sebagai bagian dari jaringan deep learning yang lebih kompleks, seperti Deep Belief Network (DBN).
Pada tutorial ini, kita akan membahas cara implementasi RBM sederhana menggunakan Python.
Apa itu Restricted Boltzmann Machine?
RBM terdiri dari dua lapisan utama: lapisan visible dan lapisan hidden. Lapisan visible merepresentasikan data input, sedangkan lapisan hidden berfungsi menangkap pola dan fitur tersembunyi dari data tersebut. Kata “restricted” muncul karena RBM memiliki struktur jaringan yang dibatasi.
Setiap neuron pada lapisan visible terhubung ke semua neuron pada lapisan hidden, tetapi tidak ada neuron yang terhubung ke neuron lain di lapisan yang sama. Struktur ini membuat perhitungan lebih sederhana dibandingkan Boltzmann Machine klasik.
RBM bekerja dengan prinsip probabilitas. Setiap koneksi antar neuron memiliki bobot, dan RBM belajar menyesuaikan bobot-bobot ini agar mampu memodelkan distribusi data input secara akurat.
Proses pelatihan RBM biasanya menggunakan algoritma Contrastive Divergence (CD), yang merupakan metode iteratif untuk mendekati maksimum likelihood.
Persiapan Lingkungan Python
Sebelum memulai, pastikan Anda sudah memiliki Python terinstal, bersama dengan beberapa library penting, seperti numpy
dan scikit-learn
. Untuk mempermudah implementasi RBM, kita akan menggunakan modul BernoulliRBM
dari sklearn.neural_network
.
pip install numpy scikit-learn matplotlib
Implementasi RBM di Python
Berikut contoh implementasi RBM untuk data biner sederhana, seperti dataset digit dari scikit-learn
.
import numpy as np from sklearn.neural_network import BernoulliRBM from sklearn.datasets import load_digits from sklearn.preprocessing import MinMaxScaler import matplotlib.pyplot as plt # Load dataset digit digits = load_digits() data = digits.data # Normalisasi data antara 0 dan 1 scaler = MinMaxScaler() data_scaled = scaler.fit_transform(data) # Inisialisasi RBM rbm = BernoulliRBM(n_components=64, learning_rate=0.01, batch_size=10, n_iter=20, random_state=42) rbm.fit(data_scaled) # Transform data menggunakan RBM hidden_features = rbm.transform(data_scaled) print("Dimensi data awal:", data_scaled.shape) print("Dimensi fitur tersembunyi:", hidden_features.shape)
Pada contoh di atas, kita menggunakan 64 unit hidden untuk menangkap pola pada dataset digit. n_iter
menentukan jumlah iterasi pelatihan, sedangkan learning_rate
mengontrol seberapa cepat bobot diperbarui selama training.
Visualisasi Fitur
RBM memungkinkan kita melihat pola yang dipelajari oleh setiap neuron hidden. Kita bisa memvisualisasikan bobot koneksi dari setiap neuron hidden ke lapisan visible:
for i, comp in enumerate(rbm.components_): plt.subplot(8, 8, i + 1) plt.imshow(comp.reshape(8, 8), cmap='gray') plt.axis('off') plt.suptitle("Fitur Tersembunyi yang Dipelajari RBM") plt.show()
Visualisasi ini menunjukkan fitur-fitur khas yang dipelajari RBM, misalnya bentuk-bentuk stroke pada angka. Hal ini sangat berguna untuk memahami bagaimana RBM mengenali pola dalam data.
Kesimpulan
RBM adalah alat yang kuat untuk pembelajaran tak terawasi, terutama dalam ekstraksi fitur dan reduksi dimensi. Dengan Python dan scikit-learn
, kita dapat dengan mudah membangun dan melatih RBM untuk berbagai dataset biner maupun kontinu.
Meski RBM jarang digunakan sendiri di proyek produksi modern, pemahaman konsep ini sangat berguna sebagai dasar jaringan deep learning yang lebih kompleks.