|
|
||
|---|---|---|
| .. | ||
| lab | ||
| README.md | ||
README.md
Üretken ağlar
Ders öncesi quiz
Tekrarlayan Sinir Ağları (RNN'ler) ve Long Short Term Memory Cells (LSTM'ler) ile Gated Recurrent Units (GRU'lar) gibi kapalı hücre varyantları, dil modellemesi için bir mekanizma sağladı; çünkü kelime sıralamasını öğrenebilirler ve bir dizideki bir sonraki kelime için tahminlerde bulunabilirler. Bu, RNN'leri üretken görevler için kullanmamıza olanak tanır; örneğin sıradan metin oluşturma, makine çevirisi ve hatta görüntü başlığı oluşturma.
✅ Yazarken metin tamamlama gibi üretken görevlerden faydalandığınız tüm zamanları düşünün. Favori uygulamalarınızda RNN'lerin kullanılıp kullanılmadığını görmek için biraz araştırma yapın.
Önceki biriminde tartıştığımız RNN mimarisinde, her RNN birimi bir sonraki gizli durumu bir çıktı olarak üretmiştir. Ancak, her tekrarlayan birime bir başka çıktı ekleyebiliriz; bu da bize dizi (orijinal dizinin uzunluğuna eşit) çıktısı vermemizi sağlar. Ayrıca, her adımda bir giriş kabul etmeyen RNN birimleri kullanabiliriz; sadece bazı başlangıç durumu vektörlerini alır ve ardından bir çıktı dizisi üretebiliriz.
Bu, aşağıdaki resimde gösterilen farklı sinir mimarilerine olanak tanır:
Resim Andrej Karpaty tarafından Unreasonable Effectiveness of Recurrent Neural Networks başlıklı blog yazısından alınmıştır.
- Bir-bir bir giriş ve bir çıkışı olan geleneksel bir sinir ağıdır.
- Bir-çok bir giriş değeri kabul eden ve bir çıktı değeri dizisi üreten üretken bir mimaridir. Örneğin, bir resmi metin olarak tanımlayan bir görüntü başlığı oluşturma ağı eğitmek istiyorsak, resmi giriş olarak alabiliriz, bir CNN'den geçirerek gizli durumunu elde edebiliriz ve ardından tekrarlayan bir zincir ile başlık kelimelerini kelime kelime üretebiliriz.
- Çok-bir önceki birimde tanımladığımız RNN mimarilerine karşılık gelir, örneğin metin sınıflandırma.
- Çok-çok, veya diziye-dizi ise makine çevirisi gibi görevlerle ilgilidir; burada ilk RNN, giriş dizisinden tüm bilgileri gizli duruma toplar ve başka bir RNN zinciri bu durumu çıktı dizisine açar.
Bu birimde, metin oluşturmaya yardımcı olan basit üretken modellere odaklanacağız. Kolaylık olması açısından, karakter düzeyinde tokenizasyon kullanacağız.
Bu RNN'yi adım adım metin üretmesi için eğiteceğiz. Her adımda, nchars uzunluğunda bir karakter dizisi alacağız ve ağa her giriş karakteri için bir sonraki çıktı karakterini üretmesini isteyeceğiz:
Metin oluştururken (çıkarım sırasında), bazı uyarıcılarla başlarız; bu, RNN hücrelerinden geçirilerek ara durumunu üretir ve ardından bu durumdan üretim başlar. Bir seferde bir karakter üretiriz ve durumu ve üretilen karakteri bir sonraki RNN hücresine geçirerek bir sonraki karakteri üretiriz; yeterli karakter ürettiğimizdeye kadar devam ederiz.
Resim yazar tarafından
✍️ Alıştırmalar: Üretken Ağlar
Aşağıdaki not defterlerinde öğrenmeye devam edin:
Yumuşak metin oluşturma ve sıcaklık
Her RNN hücresinin çıktısı, karakterlerin bir olasılık dağılımıdır. Eğer her zaman en yüksek olasılığa sahip karakteri üretilen metindeki bir sonraki karakter olarak alırsak, metin genellikle aynı karakter dizileri arasında "dönmeye" başlayabilir; bu örnekte olduğu gibi:
today of the second the company and a second the company ...
Ancak, bir sonraki karakterin olasılık dağılımına baktığımızda, en yüksek birkaç olasılık arasındaki farkın çok büyük olmayabileceği durumlar vardır; örneğin, bir karakterin olasılığı 0.2, diğerinin 0.19 olabilir. Örneğin, 'play' dizisinde bir sonraki karakter, ya boşluk ya da e (örneğin player kelimesinde olduğu gibi) olabilir.
Bu, daha yüksek olasılığa sahip karakteri seçmenin her zaman "adil" olmadığını sonucuna götürür; çünkü ikinci en yüksek olanı seçmek de anlamlı bir metne yol açabilir. Olasılık dağılımından karakterler örneklemek daha akıllıcadır. Ayrıca, daha fazla rastgelelik eklemek istiyorsak olasılık dağılımını düzleştirecek bir parametre, sıcaklık kullanabiliriz; ya da en yüksek olasılığa sahip karakterlere daha fazla bağlı kalmak istiyorsak daha dik bir hale getirebiliriz.
Bu yumuşak metin oluşturmanın yukarıda bağlantılı not defterlerinde nasıl uygulandığını keşfedin.
Sonuç
Metin oluşturma kendi başına yararlı olsa da, asıl faydalar, RNN'ler kullanarak bazı başlangıç özellik vektörlerinden metin üretebilme yeteneğinden gelir. Örneğin, metin oluşturma, makine çevirisinin bir parçası olarak kullanılır (bu durumda encoder'dan gelen durum vektörü, çevrilen mesajı üretmek veya decode etmek için kullanılır) veya bir görüntünün metinsel tanımını oluşturma (bu durumda özellik vektörü CNN çıkarıcısından gelir).
🚀 Zorluk
Bu konuda Microsoft Learn'da bazı dersler alın
- Metin Oluşturma ile PyTorch/TensorFlow
Ders sonrası quiz
Gözden Geçirme & Kendi Kendine Çalışma
Bilgilerinizi genişletmek için bazı makaleler
- Markov Zinciri, LSTM ve GPT-2 ile metin oluşturmanın farklı yaklaşımları: blog yazısı
- Keras belgelerinde metin oluşturma örneği
Görev
Karakter karakter metin oluşturmanın nasıl yapıldığını gördük. Laboratuvar ortamında, kelime düzeyinde metin oluşturmayı keşfedeceksiniz.
Açıklama:
Bu belge, makine tabanlı AI çeviri hizmetleri kullanılarak çevrilmiştir. Doğruluk konusunda çaba göstersek de, otomatik çevirilerin hatalar veya yanlış anlamalar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilmektedir. Bu çevirinin kullanımı sonucunda ortaya çıkan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz.

