May 28, 2023
MUHAMMAD GHIFARY
Generative Adversarial Networks (GAN) merupakan salah satu model generatif yang paling populer saat ini. GAN barangkali model generatif pertama yang benar-benar mampu menghasilkan sampel yang realistis dan berkualitas tinggi. Yann LeCun, salah satu peraih Turing Award 2018, sempat menyatakan bahwa “GAN merupakan ide yang paling menarik dalam 10 tahun terakhir pada Machine Learning”.
GAN pertama kali diperkenalkan oleh Ian Goodfellow et al. pada tahun 2014. Setelahnya perkembangan penelitian mengenai GAN begitu cepat, tidak hanya untuk domain gambar visual tetapi juga pada data audio dan teks.
Tujuan utama dari GAN adalah membentuk sebuah model generatif berbasis variabel laten yang kita namakan generator $G:\mathcal{Z} \rightarrow \mathcal{X}$. Model tersebut perlu menghasilkan distribusi probabilitas $\mathbb{P}G$ yang belajar dari data $\mathcal{D}$ sehingga mampu mendekati distribusi dari data $\mathbb{P}\mathcal{D}$. Hal ini sama dengan Variational Autoencoder (VAE) dimana peran model generatif dilakukan oleh decoder.
Perbedaan mendasar antara GAN dengan VAE ataupun model generatif lainnya yaitu pada cara GAN dalam mencapai tujuan. GAN memanfaatkan mekanisme adversarial untuk mencapai objektif
$$ \min_{G} d(\mathbb{P}G, \mathbb{P}\mathcal{D}) $$
dimana $d(\cdot, \cdot)$ merupakan sebuah fungsi jarak. Nanti kita akan lihat fungsi jarak tersebut didefinisikan secara implisit pada mekanisme adversarial.
Seperti yang sempat dijelaskan, GAN memiliki sebuah generator network $G$ yang memetakan representasi ruang laten ke ruang data. Cara generator untuk menghasilkan sebuah sampel yang dipicu oleh variabel laten adalah sebagai berikut:
$$ \begin{aligned}\mathbf{z}\sim \mathcal{N}(0, 1) \\ \mathbf{x} = G(\mathbf{z}) \end{aligned} $$
Apabila $G$ belum dilatih, tentunya ia belum mampu menghasilkan sampel yang diinginkan.
GAN melatih generator $G$ dengan cara yang unik, yaitu memanfaatkan network lain yang dinamakan adversarial network atau discriminator $D:\mathcal{X}\rightarrow \mathbb{R}$.
Mengapa disebut adversarial network?
Jika kita artikan dalam bahasa kita sehari-hari, mekanisme adversarial menggambarkan hubungan yang memiliki konflik atau memiliki tujuan yang bertentangan. Jadi, seakan-akan discriminator $D$ menjadi “teman berantem” dari generator $G$ untuk membuat dirinya menjadi lebih baik.
Andaikan generator $G$ berperan seperti pelukis yang dapat “memalsukan” gambar lukisan. Discriminator $D$ berperan seperti kurator yang menilai apakah suatu lukisan benar-benar berasal dari pelukis asli atau versi yang dipalsukan. GAN mencapai tujuannya apabila discriminator $D$ tidak lagi mampu membedakan antara yang asli dan yang palsu — saya jadi teringat film Mencuri Raden Saleh (2022) dan Bean (1997).
Tentunya mekanisme adversarial di atas perlu kita nyatakan secara formal dalam bentuk matematis agar dapat diimplementasikan. Pertama, perlu diperjelas bahwa discriminator merupakan sebuah binary classifier berbentuk fungsi probabilitas $D:\mathcal{X} \rightarrow [0,1]$, dimana luaran 1 berarti ‘asli’, 0 berarti ‘palsu’. Untuk melatih binary classifier tersebut, cara standar yang digunakan adalah meminimalkan fungsi loss dalam bentuk binary cross-entropy sebagai berikut:
$$ \begin{equation}\ell(D) = -y_{\mathrm{asli}} \log D(x_{\mathrm{asli}}) - (1-y_{\mathrm{palsu}}) \log (1 - D(x_{\mathrm{palsu}}))\end{equation} $$
dimana $y_{asli}, y_{palsu}$ merupakan label yang menunjukkan keaslian/kepalsuan dari suatu sampel.
Dengan mempertimbangkan fakta-fakta berikut: