tutorial restricted boltzmann machine di python

Tutorial Restricted Boltzmann Machine di Python

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.

Leave a Comment

Your email address will not be published. Required fields are marked *