Model dan platform AI

Memahami Model Difusi: Penyelaman Dalam Generatif AI

mm
Tambahkan Unite.AI ke sumber pilihan Anda di Google

Model difusi telah muncul sebagai pendekatan kuat dalam generatif AI, menghasilkan hasil state-of-the-art dalam generasi gambar, audio, dan video. Dalam artikel teknis ini, kita akan menjelajahi bagaimana model difusi bekerja, inovasi kunci, dan mengapa mereka menjadi sangat sukses. Kita akan membahas dasar matematika, proses pelatihan, algoritma sampling, dan aplikasi terbaru dari teknologi ini.

Pengenalan Model Difusi

Model difusi adalah kelas model generatif yang belajar untuk secara bertahap mendenoising data dengan membalik proses difusi. Ide intinya adalah memulai dengan kebisingan murni dan secara iteratif memperbaikinya menjadi sampel berkualitas tinggi dari distribusi target.

Pendekatan ini terinspirasi oleh termodinamika non-kesetimbangan – khususnya, proses membalik difusi untuk memulihkan struktur. Dalam konteks pembelajaran mesin, kita dapat memikirkannya sebagai belajar untuk membalik penambahan kebisingan bertahap pada data.

Beberapa kelebihan model difusi termasuk:

  • Kualitas gambar state-of-the-art, melampaui GAN dalam banyak kasus
  • Pelatihan stabil tanpa dinamika adversarial
  • Sangat paralel
  • Arsitektur fleksibel – setiap model yang memetakan input ke output dengan dimensi yang sama dapat digunakan
  • Dasar teori yang kuat

Mari kita menyelami lebih dalam bagaimana model difusi bekerja.

Sumber: Song et al.

Sumber: Song et al.

Persamaan Diferensial Stokastik mengatur proses maju dan mundur dalam model difusi. Persamaan Diferensial Stokastik maju menambahkan kebisingan pada data, secara bertahap mengubahnya menjadi distribusi kebisingan. Persamaan Diferensial Stokastik mundur, yang dipandu oleh fungsi skor yang dipelajari, secara bertahap menghilangkan kebisingan, mengarah ke generasi gambar realistis dari kebisingan acak. Pendekatan ini kunci untuk mencapai kinerja generatif berkualitas tinggi dalam ruang keadaan kontinu.

Proses Difusi Maju

Proses difusi maju dimulai dengan titik data x₀ yang diambil dari distribusi data nyata, dan secara bertahap menambahkan kebisingan Gaussian selama T langkah waktu untuk menghasilkan versi yang semakin berisik x₁, x₂, …, xT.

Pada setiap langkah waktu t, kita menambahkan sejumlah kecil kebisingan sesuai dengan:

x_t = √(1 - β_t) * x_{t-1} + √(β_t) * ε

Di mana:

  • β_t adalah jadwal varians yang mengontrol seberapa banyak kebisingan yang ditambahkan pada setiap langkah
  • ε adalah kebisingan Gaussian acak

Proses ini berlanjut sampai xT hampir murni kebisingan Gaussian.

Secara matematis, kita dapat menjelaskannya sebagai rantai Markov:

q(x_t | x_{t-1}) = N(x_t; √(1 - β_t) * x_{t-1}, β_t * I)

Di mana N menunjukkan distribusi Gaussian.

Jadwal β_t biasanya dipilih untuk kecil pada langkah waktu awal dan meningkat seiring waktu. Pilihan umum termasuk jadwal linier, kosinus, atau sigmoid.

Proses Difusi Mundur

Tujuan model difusi adalah mempelajari kebalikan dari proses ini – untuk memulai dengan kebisingan murni xT dan secara bertahap mendenoisingnya untuk memulihkan sampel bersih x₀.

Kita memodelkan proses mundur ini sebagai:

p_θ(x_{t-1} | x_t) = N(x_{t-1}; μ_θ(x_t, t), σ_θ^2(x_t, t))

Di mana μ_θ dan σ_θ^2 adalah fungsi yang dipelajari (biasanya jaringan saraf) yang diparameterkan oleh θ.

Inovasi kunci adalah bahwa kita tidak perlu secara eksplisit memodelkan distribusi mundur penuh. Sebaliknya, kita dapat memparameterisasinya dalam hal proses maju, yang kita ketahui.

Secara khusus, kita dapat menunjukkan bahwa mean proses mundur optimal μ* adalah:

μ* = 1/√(1 - β_t) * (x_t - β_t/√(1 - α_t) * ε_θ(x_t, t))

Di mana:

  • α_t = 1 – β_t
  • ε_θ adalah jaringan prediksi kebisingan yang dipelajari

Ini memberikan kita tujuan sederhana – melatih jaringan saraf ε_θ untuk memprediksi kebisingan yang ditambahkan pada setiap langkah.

Tujuan Pelatihan

Tujuan pelatihan untuk model difusi dapat diperoleh dari inferensi variasi. Setelah beberapa penyederhanaan, kita tiba pada kerugian L2 sederhana:

L = E_t,x₀,ε [ ||ε - ε_θ(x_t, t)||² ]

Di mana:

  • t disampling secara seragam dari 1 hingga T
  • x₀ disampling dari data pelatihan
  • ε disampling kebisingan Gaussian
  • x_t dibangun dengan menambahkan kebisingan pada x₀ sesuai dengan proses maju

Dengan kata lain, kita sedang melatih model untuk memprediksi kebisingan yang ditambahkan pada setiap langkah waktu.

Arsitektur Model

Arsitektur U-Net adalah pusat dari langkah denoising dalam model difusi. Ini menampilkan struktur encoder-decoder dengan koneksi skip yang membantu melestarikan detail halus selama proses rekonstruksi. Encoder secara bertahap menurunkan sampel input sambil menangkap fitur tingkat tinggi, dan decoder meningkatkan fitur yang dikodekan untuk merekonstruksi gambar. Arsitektur ini sangat efektif dalam tugas yang memerlukan lokalisasi presisi, seperti segmentasi gambar.

Jaringan prediksi kebisingan ε_θ dapat menggunakan arsitektur apa pun yang memetakan input ke output dengan dimensi yang sama. Arsitektur U-Net adalah pilihan populer, terutama untuk tugas generasi gambar.

Arsitektur khas mungkin terlihat seperti:


<p>class DiffusionUNet(nn.Module):
def __init__(self):
super().__init__()</p>

<p># Downsampling
self.down1 = UNetBlock(3, 64)
self.down2 = UNetBlock(64, 128)
self.down3 = UNetBlock(128, 256)</p>

<p># Bottleneck
self.bottleneck = UNetBlock(256, 512)</p>

<p># Upsampling
self.up3 = UNetBlock(512, 256)
self.up2 = UNetBlock(256, 128)
self.up1 = UNetBlock(128, 64)</p>

# Output
self.out = nn.Conv2d(64, 3, 1)

<p>def forward(self, x, t):
# Embed timestep
t_emb = self.time_embedding(t)</p>

<p># Downsample
d1 = self.down1(x, t_emb)
d2 = self.down2(d1, t_emb)
d3 = self.down3(d2, t_emb)</p>

<p># Bottleneck
bottleneck = self.bottleneck(d3, t_emb)</p>

<p># Upsample
u3 = self.up3(torch.cat([bottleneck, d3], dim=1), t_emb)
u2 = self.up2(torch.cat([u3, d2], dim=1), t_emb)
u1 = self.up1(torch.cat([u2, d1], dim=1), t_emb)</p>

# Output
return self.out(u1)

Komponen kunci adalah:

  • Arsitektur U-Net dengan koneksi skip
  • Pengkodean waktu untuk mengondisikan pada langkah waktu
  • Kedalaman dan lebar yang fleksibel

Algoritma Sampling

Setelah kita melatih jaringan prediksi kebisingan ε_θ, kita dapat menggunakannya untuk menghasilkan sampel baru. Algoritma sampling dasar adalah:

  1. Mulai dengan kebisingan Gaussian murni xT
  2. Untuk t = T hingga 1:
    • Prediksi kebisingan: ε_θ(x_t, t)
    • Hitung mean: μ = 1/√(1-β_t) * (x_t - β_t/√(1-α_t) * ε_θ(x_t, t))
    • Sampel: x_{t-1} ~ N(μ, σ_t^2 * I)
  3. Kembalikan x₀

Proses ini secara bertahap mendenoising sampel, dipandu oleh jaringan prediksi kebisingan yang dipelajari.

Dalam prakteknya, ada beberapa teknik sampling yang dapat meningkatkan kualitas atau kecepatan:

  • DDIM sampling: Variasi deterministik yang memungkinkan langkah sampling lebih sedikit
  • Ancestral sampling: Menggabungkan varians yang dipelajari σ_θ^2
  • Truncated sampling: Berhenti lebih awal untuk generasi yang lebih cepat

Berikut adalah implementasi dasar algoritma sampling:


<p>def sample(model, n_samples, device):
# Mulai dengan kebisingan
x = torch.randn(n_samples, 3, 32, 32).to(device)</p>

<p>for t in reversed(range(1000)):
# Tambahkan kebisingan untuk membuat x_t
t_batch = torch.full((n_samples,), t, device=device)
noise = torch.randn_like(x)
x_t = add_noise(x, noise, t)</p>

<p># Prediksi dan hapus kebisingan
pred_noise = model(x_t, t_batch)
x = remove_noise(x_t, pred_noise, t)</p>

<p># Tambahkan kebisingan untuk langkah berikutnya (kecuali pada t=0)
if t &gt; 0:
noise = torch.randn_like(x)
x = add_noise(x, noise, t-1)</p>

return x

Matematika di Balik Model Difusi

Untuk benar-benar memahami model difusi, kita perlu menyelami lebih dalam matematika yang mendasarinya. Mari kita jelajahi beberapa konsep kunci lebih lanjut:

Rantai Markov dan Persamaan Diferensial Stokastik

Proses difusi maju dalam model difusi dapat dilihat sebagai rantai Markov atau, dalam batas kontinu, sebagai persamaan diferensial stokastik (SDE). Formulasi SDE memberikan kerangka teori yang kuat untuk menganalisis dan memperluas model difusi.

SDE maju dapat ditulis sebagai:

dx = f(x,t)dt + g(t)dw

Di mana:

  • f(x,t) adalah istilah drift
  • g(t) adalah koefisien difusi
  • dw adalah proses Wiener (gerak Brown)

Pilihan yang berbeda dari f dan g mengarah ke jenis proses difusi yang berbeda. Misalnya:

  • Variance Exploding (VE) SDE: dx = √(d/dt σ²(t)) dw
  • Variance Preserving (VP) SDE: dx = -0.5 β(t)xdt + √(β(t)) dw

Memahami SDE ini memungkinkan kita untuk menghasilkan strategi sampling optimal dan memperluas model difusi ke domain baru.

Pencocokan Skor dan Pencocokan Skor Denoising

Hubungan antara model difusi dan pencocokan skor memberikan perspektif lain yang berharga. Fungsi skor didefinisikan sebagai gradien dari log-probabilitas densitas:

s(x) = ∇x log p(x)

Pencocokan skor denoising bertujuan untuk memperkirakan fungsi skor ini dengan melatih model untuk mendenoising data yang sedikit terganggu. Tujuan ini ternyata setara dengan tujuan pelatihan model difusi dalam batas kontinu.

Hubungan ini memungkinkan kita untuk memanfaatkan teknik dari model generatif berbasis skor, seperti dinamika Langevin yang dianulasi untuk sampling.

Teknik Pelatihan Lanjutan

Sampling Penting

Model difusi standar menyampling langkah waktu secara seragam. Namun, tidak semua langkah waktu sama pentingnya untuk pembelajaran. Teknik sampling penting dapat digunakan untuk fokus pelatihan pada langkah waktu yang paling informatif.

Salah satu pendekatan adalah menggunakan distribusi non-seragam atas langkah waktu, yang diweighted oleh norma L2 yang diharapkan dari skor:

p(t) ∝ E[||s(x_t, t)||²]

Ini dapat mengarah ke pelatihan yang lebih cepat dan kualitas sampel yang lebih baik.

Destilasi Progresif

Destilasi progresif adalah teknik untuk membuat model sampling yang lebih cepat tanpa mengorbankan kualitas. Prosesnya bekerja sebagai berikut:

  1. Latih model difusi dasar dengan banyak langkah waktu (misalnya 1000)
  2. Buat model siswa dengan langkah waktu yang lebih sedikit (misalnya 100)
  3. Latih model siswa untuk mencocokkan proses denoising model dasar
  4. Ulangi langkah 2-3, secara progresif mengurangi langkah waktu

Ini memungkinkan generasi berkualitas tinggi dengan langkah denoising yang jauh lebih sedikit.

Inovasi Arsitektur

Model Difusi Berbasis Transformer

Sementara arsitektur U-Net telah populer untuk model difusi gambar, karya terbaru telah menjelajahi penggunaan arsitektur berbasis transformer. Transformer menawarkan beberapa kelebihan potensial:

  • Penanganan ketergantungan jangka panjang yang lebih baik
  • Mekanisme pengondisian yang lebih fleksibel
  • Penskalaan ke ukuran model yang lebih besar lebih mudah

Model seperti DiT (Diffusion Transformers) telah menunjukkan hasil yang menjanjikan, potensial menawarkan jalur untuk generasi yang lebih tinggi.

Model Difusi Hierarkis

Model difusi hierarkis menghasilkan data pada beberapa skala, memungkinkan koherensi global dan detail halus. Prosesnya biasanya melibatkan:

  1. Menghasilkan output resolusi rendah
  2. Meningkatkan dan memperbarui secara progresif

Pendekatan ini dapat sangat efektif untuk generasi gambar resolusi tinggi atau generasi konten panjang.

Topik Lanjutan

Panduan Kelas Bebas

Panduan kelas bebas adalah teknik untuk meningkatkan kualitas sampel dan kontrol. Ide kunci adalah melatih dua model difusi:

  1. Model tak bersyarat p(x_t)
  2. Model bersyarat p(x_t | y) di mana y adalah beberapa informasi pengondisian (misalnya, prompt teks)

Selama sampling, kita melakukan interpolasi antara model-model ini:

ε_θ = (1 + w) * ε_θ(x_t | y) - w * ε_θ(x_t)

Di mana w > 0 adalah skala panduan yang mengontrol seberapa banyak mempertebal model bersyarat.

Ini memungkinkan kontrol yang lebih kuat tanpa harus melatih ulang model. Ini telah menjadi kunci keberhasilan model teks-ke-gambar seperti DALL-E 2 dan Stable Diffusion.

Difusi Laten

Model Difusi Laten (LDM) melibatkan proses mengkodekan data input ke ruang latensi di mana proses difusi terjadi. Model secara bertahap menambahkan kebisingan ke representasi latensi gambar, mengarah ke pembangkitan versi berisik, yang kemudian didenoising menggunakan arsitektur U-Net. U-Net, dipandu oleh mekanisme perhatian silang, mengintegrasikan informasi dari berbagai sumber pengondisian seperti peta semantik, teks, dan representasi gambar, akhirnya merekonstruksi gambar di ruang piksel. Proses ini sangat penting dalam menghasilkan gambar berkualitas tinggi dengan struktur terkendali dan atribut yang diinginkan.

Ini menawarkan beberapa kelebihan:

  • Pelatihan dan sampling yang lebih cepat
  • Penanganan gambar resolusi tinggi yang lebih baik
  • Lebih mudah mengintegrasikan pengondisian

Prosesnya bekerja sebagai berikut:

  1. Latih autoencoder untuk mengompresi gambar ke ruang latensi
  2. Latih model difusi di ruang latensi ini
  3. Untuk generasi, sampel di ruang latensi dan dekripsi ke piksel

Pendekatan ini telah sangat sukses, memungkinkan model seperti Stable Diffusion.

Model Konsistensi

Model konsistensi adalah inovasi terbaru yang bertujuan untuk meningkatkan kecepatan dan kualitas model difusi. Ide kunci adalah melatih satu model yang dapat memetakan dari tingkat kebisingan apa pun langsung ke output akhir, bukan memerlukan denoising iteratif.

Ini dicapai melalui fungsi kerugian yang dirancang dengan hati-hati yang memaksakan konsistensi antara prediksi pada tingkat kebisingan yang berbeda. Hasilnya adalah model yang dapat menghasilkan sampel berkualitas tinggi dalam satu pass maju, secara dramatis mempercepat inferensi.

Tips Praktis untuk Melatih Model Difusi

Melatih model difusi berkualitas tinggi dapat menantang. Berikut beberapa tips praktis untuk meningkatkan stabilitas pelatihan dan hasil:

  1. Pemotongan gradien: Gunakan pemotongan gradien untuk mencegah gradien meledak, terutama pada awal pelatihan.
  2. EMA dari bobot model: Simpan rata-rata bergerak eksponensial dari bobot model untuk sampling, yang dapat mengarah ke generasi yang lebih stabil dan berkualitas lebih tinggi.
  3. Augmentasi data: Untuk model gambar, augmentasi sederhana seperti flip horizontal acak dapat meningkatkan generalisasi.
  4. Pengjadwalan kebisingan: Eksperimen dengan jadwal kebisingan yang berbeda (linier, kosinus, sigmoid) untuk menemukan apa yang paling efektif untuk data Anda.
  5. Pelatihan presisi campuran: Gunakan pelatihan presisi campuran untuk mengurangi penggunaan memori dan mempercepat pelatihan, terutama untuk model besar.
  6. Generasi bersyarat: Bahkan jika tujuan akhir Anda adalah generasi tak bersyarat, pelatihan dengan pengondisian (misalnya, pada kelas gambar) dapat meningkatkan kualitas sampel secara keseluruhan.

Mengevaluasi Model Difusi

Mengevaluasi model generatif dengan benar sangat penting tetapi menantang. Berikut beberapa metrik dan pendekatan umum:

Jarak Inception Fréchet (FID)

FID adalah metrik yang banyak digunakan untuk mengevaluasi kualitas dan keragaman sampel gambar yang dihasilkan. Ini membandingkan statistik sampel yang dihasilkan dengan data nyata di ruang fitur dari pengklasifikasi pra-dilatih (biasanya InceptionV3).

Skor FID yang lebih rendah menunjukkan kualitas yang lebih baik dan distribusi yang lebih realistis. Namun, FID memiliki keterbatasan dan tidak boleh menjadi satu-satunya metrik yang digunakan.

Skor Inception

Skor Inception mengukur kualitas dan keragaman sampel gambar yang dihasilkan. Ini menggunakan jaringan Inception pra-dilatih untuk menghitung:

IS = exp(E[KL(p(y|x) || p(y))])

Di mana p(y|x) adalah distribusi kelas kondisional untuk gambar yang dihasilkan x.

Skor Inception yang lebih tinggi menunjukkan kualitas dan keragaman yang lebih baik, tetapi memiliki keterbatasan yang diketahui, terutama untuk dataset yang sangat berbeda dari ImageNet.

Log Negatif Kemungkinan (NLL)

Untuk model difusi, kita dapat menghitung log negatif kemungkinan dari data yang dipegang. Ini memberikan ukuran langsung seberapa baik model memenuhi distribusi data nyata.

Namun, NLL dapat komputasional mahal untuk diperkirakan secara akurat untuk data tinggi dimensi.

Evaluasi Manusia

Untuk banyak aplikasi, terutama yang kreatif, evaluasi manusia tetap penting. Ini dapat melibatkan:

  • Perbandingan sampingan dengan model lain
  • Evaluasi gaya tes Turing
  • Evaluasi tugas spesifik (misalnya, penjelasan gambar untuk model teks-ke-gambar)

Meskipun subjektif, evaluasi manusia dapat menangkap aspek kualitas yang metrik otomatis lewatkan.

Model Difusi dalam Produksi

Menggelar model difusi di lingkungan produksi menyajikan tantangan unik. Berikut beberapa pertimbangan dan praktik terbaik:

Optimasi untuk Inferensi

  1. Ekspor ONNX: Konversi model ke format ONNX untuk inferensi yang lebih cepat di berbagai perangkat keras.
  2. Kuantisasi: Gunakan teknik seperti kuantisasi INT8 untuk mengurangi ukuran model dan meningkatkan kecepatan inferensi.
  3. Pengkodean: Untuk model bersyarat, kodekan hasil antara untuk model tak bersyarat untuk mempercepat panduan bebas kelas.
  4. Pengolahan batch: Manfaatkan batching untuk menggunakan sumber daya GPU secara efisien.

Penskalaan

  1. Inferensi terdistribusi: Untuk aplikasi dengan throughput tinggi, implementasikan inferensi terdistribusi di beberapa GPU atau mesin.
  2. Sampling adaptif: Sesuaikan dinamis jumlah langkah sampling berdasarkan perdagangan kualitas-kecepatan yang diinginkan.
  3. Generasi progresif: Untuk output besar (misalnya, gambar resolusi tinggi), hasilkan secara progresif dari resolusi rendah ke tinggi untuk memberikan hasil awal yang lebih cepat.

Keamanan dan Filtrasi

  1. Filtrasi konten: Implementasikan sistem filtrasi konten yang kuat untuk mencegah generasi konten berbahaya atau tidak pantas.
  2. Pengkodean watermark: Pertimbangkan untuk mengintegrasikan watermark tak terlihat ke dalam konten yang dihasilkan untuk keamanan.

Aplikasi

Model difusi telah menemukan kesuksesan dalam berbagai tugas generatif:

Generasi Gambar

Generasi gambar adalah tempat model difusi pertama kali mendapatkan ketenaran. Beberapa contoh terkenal termasuk:

  • DALL-E 3: Model teks-ke-gambar OpenAI, menggabungkan pengkode teks CLIP dengan dekoder gambar difusi
  • Stable Diffusion: Model difusi laten sumber terbuka untuk generasi teks-ke-gambar
  • Imagen: Model teks-ke-gambar difusi Google (GOOGL )

Model-model ini dapat menghasilkan gambar yang sangat realistis dan kreatif dari deskripsi teks, melampaui pendekatan GAN sebelumnya.

Generasi Video

Model difusi juga telah diterapkan pada generasi video:

  • Model Difusi Video: Menghasilkan video dengan memperlakukan waktu sebagai dimensi tambahan dalam proses difusi
  • Make-A-Video: Model teks-ke-video difusi Meta
  • Imagen Video: Model teks-ke-video difusi Google

Model-model ini dapat menghasilkan klip video pendek dari deskripsi teks, membuka kemungkinan baru untuk pembuatan konten.

Generasi 3D

Karya terbaru telah memperluas model difusi ke generasi 3D:

  • DreamFusion: Generasi teks-ke-3D menggunakan model difusi 2D
  • Point-E: Model difusi awan titik OpenAI untuk generasi objek 3D

Pendekatan ini memungkinkan penciptaan aset 3D dari deskripsi teks, dengan aplikasi dalam permainan, VR/AR, dan desain produk.

Tantangan dan Arah Masa Depan

Meskipun model difusi telah menunjukkan kesuksesan luar biasa, masih ada beberapa tantangan dan area penelitian masa depan:

Efisiensi Komputasi

Proses sampling iteratif dari model difusi dapat lambat, terutama untuk output resolusi tinggi. Pendekatan seperti difusi laten dan model konsistensi bertujuan untuk mengatasi ini, tetapi perbaikan lebih lanjut dalam efisiensi masih menjadi area penelitian aktif.

Kontrol

Meskipun teknik seperti panduan kelas bebas telah meningkatkan kontrol, masih banyak pekerjaan yang harus dilakukan untuk memungkinkan kontrol yang lebih halus atas output yang dihasilkan. Ini sangat penting untuk aplikasi kreatif.

Generasi Multi-Modal

Model difusi saat ini unggul dalam generasi single-modality (misalnya, gambar atau audio). Mengembangkan model difusi multi-modal yang dapat menghasilkan secara mulus di seluruh modality adalah arah penelitian yang menarik untuk pekerjaan masa depan.

Pemahaman Teoritis

Meskipun model difusi telah menunjukkan hasil empiris yang kuat, masih banyak yang belum dipahami tentang mengapa mereka bekerja dengan baik. Mengembangkan pemahaman teoritis yang lebih dalam dapat mengarah ke perbaikan lebih lanjut dan aplikasi baru.

Kesimpulan

Model difusi mewakili langkah maju dalam AI generatif, menawarkan hasil berkualitas tinggi di berbagai modality. Dengan mempelajari untuk membalik proses penambahan kebisingan, mereka menyediakan pendekatan yang fleksibel dan memiliki dasar teori yang kuat untuk generasi.

Dari alat kreatif hingga simulasi ilmiah, kemampuan untuk menghasilkan data kompleks, tinggi dimensi memiliki potensi untuk mengubah banyak bidang. Namun, penting untuk mendekati teknologi kuat ini dengan pemikiran yang matang, mempertimbangkan baik potensi besar mereka dan tantangan etika yang mereka hadirkan.

Saya telah menghabiskan lima tahun terakhir dengan membenamkan diri dalam dunia Machine Learning dan Deep Learning yang menarik. Minat dan keahlian saya telah memimpin saya untuk berkontribusi pada lebih dari 50 proyek rekayasa perangkat lunak yang beragam, dengan fokus khusus pada AI/ML. Rasa ingin tahu saya yang terus-menerus juga telah menarik saya ke arah Natural Language Processing, sebuah bidang yang saya ingin jelajahi lebih lanjut.