4PA11 - Febyanti Anggraini - 10520391 - GAN
4PA11 - Febyanti Anggraini - 10520391 - GAN
Kelas : 4PA11
NPM : 10520391
Tugas : GAN
Generative Adversarial Networks (GANs) adalah sebuah jenis arsitektur jaringan saraf
tiruan yang pertama kali diperkenalkan oleh Ian Goodfellow dan rekan-rekannya pada tahun
2014. GANs memiliki dua komponen utama: generator dan discriminator. Ide dasar di balik
GANs adalah melatih generator untuk menghasilkan data yang sangat mirip dengan data
nyata, sementara discriminator berusaha untuk membedakan antara data yang dihasilkan oleh
generator dengan data nyata. Keduanya beroperasi dalam sebuah permainan adversarial, di
mana generator berusaha untuk menjadi semakin baik dalam menghasilkan data palsu
sementara discriminator berusaha untuk menjadi semakin baik dalam membedakan antara
data palsu dan data nyata.
Generator: Komponen ini bertugas untuk membuat data palsu. Generator menerima
input dalam bentuk angka acak (misalnya, vektor Gaussian) dan mengubahnya
menjadi data yang mirip dengan data asli.
Discriminator: Komponen ini bertugas untuk membedakan antara data palsu yang
dihasilkan oleh generator dan data nyata. Discriminator berusaha untuk memberikan
skor tinggi untuk data asli dan skor rendah untuk data palsu.
Pelatihan: Proses pelatihan GAN terjadi melalui permainan adversarial. Generator dan
discriminator dilatih secara bersamaan. Generator berusaha untuk memproduksi data
yang lebih baik sehingga discriminator semakin sulit membedakannya. Sebaliknya,
discriminator berusaha untuk menjadi semakin baik dalam membedakan data palsu
dari data nyata.
Keseimbangan: Pelatihan GAN berlangsung sampai mencapai keseimbangan di mana
generator menghasilkan data yang sangat mirip dengan data nyata, dan discriminator
kesulitan membedakannya.
Aplikasi: GANs telah digunakan dalam berbagai aplikasi, termasuk penghasilan
gambar realistik, peningkatan resolusi gambar, generasi teks, pembelajaran transfer,
pemadanan gambar, dan banyak lagi.
Tantangan: GANs memiliki beberapa tantangan, termasuk masalah pelatihan yang
tidak stabil, mode collapse (generator hanya menghasilkan variasi terbatas), dan
masalah etika terkait dengan penggunaan GANs untuk manipulasi gambar dan
pembuatan deepfake.
GAN juga dapat digunakan untuk menghasilkan tulisan tangan yang mirip
dengan tulisan manusia. Generator akan mencoba menghasilkan gambar-gambar
tulisan tangan, sementara discriminator akan mencoba untuk membedakan antara
tulisan palsu dan tulisan nyata.
Contoh implementasi dari algoritma GAN dapat ditemukan dalam berbagai bahasa
pemrograman dan kerangka kerja. Salah satu contoh implementasi yang terkenal adalah
menggunakan Python dengan kerangka kerja TensorFlow atau PyTorch. Berikut ini
adalah contoh implementasi GAN menggunakan TensorFlow:
import tensorflow as tf
from tensorflow.keras.layers import Dense, Flatten, Reshape
from tensorflow.keras.models import Sequential
from tensorflow.keras.optimizers import Adam
import numpy as np
import matplotlib.pyplot as plt
# Generator
generator = Sequential([
Dense(128, input_shape=(100,), activation='relu'),
Dense(784, activation='sigmoid'),
Reshape((28, 28))
])
# Discriminator
discriminator = Sequential([
Flatten(input_shape=(28, 28)),
Dense(128, activation='relu'),
Dense(1, activation='sigmoid')
])
# Compile discriminator
discriminator.compile(loss='binary_crossentropy', optimizer=Adam(0.0002, 0.5),
metrics=['accuracy'])
# Training loop
batch_size = 64
epochs = 10000
if epoch % 100 == 0:
print(f"Epoch: {epoch}, D Loss: {d_loss[0]}, G Loss: {g_loss}")
Zhang, H., Xu, T., Li, H., Zhang, S., Wang, X., Huang, X., & Metaxas, D. N. (2017).
StackGAN: Text to photo-realistic image synthesis with stacked generative adversarial
networks. In Proceedings of the IEEE international conference on computer vision (pp.
5907-5915).
Roy, A., & Todorovic, S. (2017). Combining generative models and fisher vectors for
handwritten document image retrieval. In Proceedings of the IEEE conference on
computer vision and pattern recognition (CVPR) (pp. 1977-1986).