|
|
||
|---|---|---|
| .. | ||
| lab | ||
| GenerativePyTorch.ipynb | ||
| GenerativeTF.ipynb | ||
| README.md | ||
README.md
Üretken Ağlar
Ders Öncesi Test
Tekrarlayan Sinir Ağları (RNN'ler) ve Uzun Kısa Süreli Bellek Hücreleri (LSTM'ler) ile Gated Recurrent Units (GRU'ler) gibi kapılı hücre varyantları, dil modelleme için bir mekanizma sağlar. Bu mekanizma, kelime sıralamasını öğrenebilir ve bir dizideki bir sonraki kelime için tahminler sunabilir. Bu, RNN'lerin üretken görevler için kullanılmasını sağlar; örneğin, sıradan metin üretimi, makine çevirisi ve hatta görüntü açıklaması.
✅ Yazarken metin tamamlama gibi üretken görevlerden faydalandığınız tüm zamanları düşünün. Favori uygulamalarınızın RNN'leri kullanıp kullanmadığını görmek için biraz araştırma yapın.
Önceki birimde tartıştığımız RNN mimarisinde, her RNN birimi bir sonraki gizli durumu çıktı olarak üretir. Ancak, her tekrarlayan birime başka bir çıktı ekleyebiliriz, bu da bir dizi (orijinal dizinin uzunluğuna eşit) üretmemizi sağlar. Ayrıca, her adımda bir giriş kabul etmeyen ve sadece bir başlangıç durum vektörü alarak bir çıktı dizisi üreten RNN birimleri kullanabiliriz.
Bu, aşağıdaki resimde gösterilen farklı sinir mimarilerini mümkün kılar:
Resim, Andrej Karpaty tarafından yazılan Unreasonable Effectiveness of Recurrent Neural Networks blog yazısından alınmıştır.
- Bire bir: Bir giriş ve bir çıkış ile geleneksel bir sinir ağıdır.
- Bire çok: Bir giriş değeri kabul eden ve bir çıktı değerleri dizisi üreten üretken bir mimaridir. Örneğin, bir görüntü açıklama ağı eğitmek istiyorsak, bir resmi giriş olarak alabilir, bir CNN'den geçirerek gizli durumunu elde edebilir ve ardından bir tekrarlayan zincir açıklamayı kelime kelime üretebiliriz.
- Çoktan bire: Önceki birimde tanımladığımız RNN mimarilerine karşılık gelir, örneğin metin sınıflandırma.
- Çoktan çoğa veya diziden diziye: Makine çevirisi gibi görevlere karşılık gelir. Burada, ilk RNN giriş dizisinden tüm bilgiyi gizli duruma toplar ve başka bir RNN zinciri bu durumu çıktı dizisine açar.
Bu birimde, metin üretmemize yardımcı olan basit üretken modeller üzerine odaklanacağız. Basitlik için karakter düzeyinde tokenizasyon kullanacağız.
Bu RNN'yi adım adım metin üretmek için eğiteceğiz. Her adımda, nchars uzunluğunda bir karakter dizisi alacağız ve ağdan her giriş karakteri için bir sonraki çıktı karakterini üretmesini isteyeceğiz:
Metin üretirken (çıkarsama sırasında), bazı başlangıç noktası ile başlarız. Bu başlangıç noktası RNN hücrelerinden geçirilerek ara durumu oluşturur ve ardından bu durumdan üretim başlar. Her seferinde bir karakter üretiriz ve durumu ve üretilen karakteri bir sonraki karakteri üretmek için başka bir RNN hücresine geçiririz. Bu işlem yeterli sayıda karakter üretilene kadar devam eder.
Resim, yazar tarafından oluşturulmuştur.
✍️ Alıştırmalar: Üretken Ağlar
Aşağıdaki not defterlerinde öğrenmeye devam edin:
Yumuşak Metin Üretimi ve Sıcaklık
Her RNN hücresinin çıktısı bir karakter olasılık dağılımıdır. Eğer üretilen metindeki bir sonraki karakter olarak her zaman en yüksek olasılığa sahip karakteri seçersek, metin genellikle aynı karakter dizileri arasında "dönmeye" başlayabilir, aşağıdaki örnekte olduğu gibi:
today of the second the company and a second the company ...
Ancak, bir sonraki karakter için olasılık dağılımına bakarsak, en yüksek olasılıklardan birkaçının arasındaki farkın büyük olmadığını görebiliriz. Örneğin, bir karakterin olasılığı 0.2, diğerinin ise 0.19 olabilir. Örneğin, 'play' dizisindeki bir sonraki karakter, boşluk veya e (kelime player'daki gibi) olabilir.
Bu, her zaman en yüksek olasılığa sahip karakteri seçmenin "adil" olmadığını gösterir, çünkü ikinci en yüksek olasılığa sahip karakteri seçmek de anlamlı bir metin oluşturabilir. Daha akıllıca bir yaklaşım, ağ çıktısının verdiği olasılık dağılımından karakterleri örneklemek olacaktır. Ayrıca, olasılık dağılımını düzleştirmek veya daha dik hale getirmek için sıcaklık adlı bir parametre kullanabiliriz. Bu, daha fazla rastgelelik eklemek veya en yüksek olasılıklı karakterlere daha fazla bağlı kalmak istediğimizde işe yarar.
Bu yumuşak metin üretiminin yukarıdaki not defterlerinde nasıl uygulandığını keşfedin.
Sonuç
Metin üretimi kendi başına faydalı olabilir, ancak asıl avantajlar, RNN'ler kullanılarak bir başlangıç özellik vektöründen metin üretme yeteneğinden gelir. Örneğin, metin üretimi makine çevirisinin bir parçası olarak kullanılır (diziden diziye, bu durumda kodlayıcıdan gelen durum vektörü çevrilen mesajı üretmek veya çözmek için kullanılır) veya bir görüntünün metinsel açıklamasını üretmek için kullanılır (bu durumda özellik vektörü CNN çıkarıcısından gelir).
🚀 Meydan Okuma
Bu konuyla ilgili Microsoft Learn'de bazı dersler alın:
- PyTorch/TensorFlow ile Metin Üretimi
Ders Sonrası Test
İnceleme ve Kendi Kendine Çalışma
Bilginizi genişletmek için bazı makaleler:
- Markov Zinciri, LSTM ve GPT-2 ile metin üretimine farklı yaklaşımlar: blog yazısı
- Keras dokümantasyonu içinde metin üretim örneği
Ödev
Metni karakter karakter nasıl üreteceğimizi gördük. Laboratuvarda, kelime düzeyinde metin üretimini keşfedeceksiniz.
Feragatname:
Bu belge, AI çeviri hizmeti Co-op Translator kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dilindeki hali, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz.

