- 1980'lerdeki Mark V. Shaney programından ilham alınarak, yaklaşık 30 satır Python koduyla yazılmış basit bir Markov metin üreteci olan Mark V. Shaney Junior geliştirildi
- Bu model, üç sözcüklü (trigram) temelde bir sonraki sözcüğü olasılıksal olarak tahmin ediyor ve eğitim verisi olarak 200'den fazla blog yazısını (yaklaşık 200 bin sözcük) kullanıyor
- Üretilen cümleler, Lisp, Emacs, matematik, programlama gibi blog konularındaki sözcükleri karıştırarak oluşturulan anlamsız cümleler (gibberish) biçiminde çıktı veriyor
- Modelin derecesi (order) artırıldığında cümleler daha tutarlı hale geliyor, ancak 5'in üzerinde özgün metni olduğu gibi alıntılayarak yaratıcılığını kaybediyor
- Büyük dil modelleri (LLM) çağında bile, bu tür basit Markov modellerinin yapısal açıklığı, dil üretiminin ilkelerini anlamak için iyi bir başlangıç noktası olarak sunuluyor
Mark V. Shaney Junior programına genel bakış
- Mark V. Shaney Junior, 1980'lerde Usenet'te etkin olan sanal kullanıcı Mark V. Shaney'i taklit eden bir metin üreteci
- Özgün sürüm, Markov modeli kullanarak gönderileri otomatik üreten bir programdı
- Bu uygulama ise fikrin sadeleştirilmiş bir minimal sürümü ve GitHub'da açık olarak paylaşılıyor
- Tüm kod yaklaşık 30 satır Pythondan oluşuyor ve verimlilikten çok sadeliğe öncelik veriyor
- Markov modeliyle ilk kez tanışan birinin bile 20 dakika içinde anlayabileceği düzeyde
Hobi olarak deneysel programlama
- Yazar, belirli bir sorunu çözmekten çok fikir keşfi amacıyla programlama yapmayı seviyor
- Farklı durum uzaylarına sahip Markov zincirleriyle birçok kez deney yapmış
- Bu deney kodlarını derleyip GitHub veya Codeberg'de paylaşıyor
- Mark V. Shaney Junior da bu deneylerden biri ve daha tamamlanmış hale getirilip yayımlanmış bir örnek
Blog verileriyle metin üretimi
- Model önce Charles Dickens'ın A Christmas Carol eseriyle eğitilerek test edildikten sonra,
girdi verisi olarak 24 yıllık blog yazıları (200'den fazla yazı, yaklaşık 200 bin sözcük) kullanıldı
- Yorumlar (yaklaşık 40 bin sözcük) hariç tutuldu
- Üretilen cümleler, programlama komutları, matematik terimleri, editör komutları gibi öğelerin birbirine karıştığı mantıksız cümleler olarak çıktı verdi
- Örnek: Emacs komutları, Lisp kodu ve matematik terimlerinin rastgele birleştiği cümleler
- Bazı cümleler, blogdaki belirli yazılardan alınan sözcüklerle anlamsız birleşimler oluşturdu
- Örnek: “Lisp source file” ile “self-esteem” farklı yazılardan çekilip birleştirildi
Markov özelliği ve algoritma yapısı
- Varsayılan ayar trigram (3 sözcük) temelli;
önceki iki sözcüğü anahtar (key), üçüncü sözcüğü değer (value) olarak saklayan bir map yapısı kullanıyor
- Metin üretim süreci
- Rastgele bir sözcük çifti seçilir → olası sonraki sözcüklerden biri eşit olasılıkla seçilir
- Yeni seçilen sözcük ile bir önceki sözcükten yeni bir çift oluşturulup işlem tekrarlanır
- Artık takip eden sözcük kalmadığında veya 100 sözcük sınırına ulaşıldığında süreç biter
- Aynı trigram birden fazla kez görünürse, ilgili sonraki sözcük listede yinelenmiş olarak saklanır ve böylece
görülme sıklığıyla orantılı olasılıksal seçim yapılır
- Bu süreç, yalnızca mevcut duruma bağlı olasılıksal geçişlerden oluşur ve
formül olarak P(Xₙ₊₁ | Xₙ, Xₙ₋₁, …, X₁) = P(Xₙ₊₁ | Xₙ) biçiminde ifade edilir
- Bu belleksizlik (memoryless) özelliği, Markov niteliğinin temelidir
Ek deneyler ve model derecesini ayarlama
- Varsayılan derece (order) 2'dir ve komut satırı argümanıyla değiştirilebilir
- Derece 3~4'e çıkarıldığında cümleler daha tutarlı ve doğal hale gelir
- Örnek: IRC komutları ile matematik kavramlarının karıştığı görece mantıklı cümleler üretilir
- Ancak derece 5'e çıkarıldığında özgün metni olduğu gibi kopyalama eğilimi oluşur ve
yaratıcı anlamsızlık (gibberish) kaybolur
- Başlangıç istemi verilerek de metin üretilebilir
- Örnek: “Finally we” ile başlayan bir cümle girildiğinde,
Emacs, MATLAB, GNU bash gibi sözcüklerin karıştığı uzun bir cümle üretilir
Basit modelin önemi
- 2025 itibarıyla büyük dil modelleri (LLM) ana akım olsa da,
Markov modelleri küresel yapı veya uzun vadeli bağımlılıkları yakalayamaz
- Buna rağmen, tasarım ve uygulamadaki sadelik ve açıklık sayesinde
dil üretimi ilkelerini öğrenmek için giriş seviyesi bir model olarak değer taşır
- Yazar bunu, “bu model tam anlamıyla dil modellerinin ‘Hello, world’ örneği” diye tanımlıyor
1 yorum
Hacker News yorumları
Markov Model, yalnızca mevcut durumdan bir sonraki token’ı olasılıksal olarak üreten bir durum makinesinin istatistiksel sürümüdür
Anlamlı bir tartışma yapabilmek için durum ile token arasındaki ilişkiyi açık biçimde tanımlamak gerekir
Örneğin durum, son k gözlemin bir fonksiyonuysa buna k’inci dereceden Markov Chain denir
RNN, durumu önceki durumlar ile son token’ların bir fonksiyonu olarak tanımlayan genişletilmiş bir biçim olarak görülebilir
Durum geçiş olasılıkları deterministik de olabilir, olasılıksal da; bağlam uzunluğu da değişken şekilde tanımlanabilir
Ancak her Markov Model öğrenilebilir değildir
1992’de Egghead Software’den buna benzer bir programı 3 dolara aldığımı hatırlıyorum
İçine 5 yıllık günlük benzeri yazılarımı koyup çıkan sonuçlara gülmüştüm
Eski bir örnek olarak Babble 1.0.20 ve ilgili forum yazısı Software Spotlight: Babble incelenebilir
Yazıyı görünce ben de bir Markov modeli denedim
Karakter düzeyinde başladım ama 2. derece modele geçince çok büyük bir fark olmadı
3. dereceye (trigram) çıkınca biraz daha doğal hale geldi
Sonra BPE (Byte Pair Encoding) ile token’laştırılmış metne 1. derece Markov modeli uyguladım ve sonuç biraz daha tutarlı oldu
Ama 2. dereceye çıkarınca özgün metni olduğu gibi kopyaladı — çünkü BPE tekrar eden token’ları azaltarak geçişleri deterministik hale getirmişti
Token sayısını sınırlayınca (ör. 894 → 800) yeniden deterministik olmaktan çıktı ve metin biraz daha doğal hale geldi
Derece çok yükselince (ör. 5. derece) metin kuru ve sadece olguları sıralayan bir havaya bürünüyor
Sonuçta Markov modelleri basit ama denemesi oldukça eğlenceli araçlar
Yalnızca tek bir sonraki token’a sahip zincirleri kaldırmak yardımcı olabilir gibi geliyor ama bu kez dilbilgisel yapıyı da yok etme riski var
Uzun tekil zincirlerden kaçınmanın daha iyi bir yolunu arıyorum
Olası yol yalnızca bir taneyse 4 kelimeye düşürmek gibi
Ya da belki yalnızızdır ve bu, zihnin kaos içinde düzen arama eğilimidir
Ben de geçmişte benzer bir deney yapmıştım
20 yıl boyunca yazdığım fantastik ve SF metinlerinden yaklaşık 500 bin kelimeyi bir Markov modeline verip 2–5 gram kaydırıcısıyla oynamıştım
İlham gerektiğinde dönüp baktığım bir “rüya kuyusu” gibi bir araçtı
Çocukken sözlüğü rastgele bir sayfadan açıp yazı fikri arama alışkanlığımın devamı gibiydi
Böyle bir korpusla denemeler yapmak oldukça eğlenceli bir proje olabilir
Sunum videosu da var
Tüm kişisel yazılarımı eğitip bana özel bir model oluşturabilir miyim?
Hangi model ve araçları kullanmak gerekir, ayrıca sistem prompt’u olmadan da benim üslubumla yazabilir mi öğrenmek istiyorum
Hatta telefon yanıtlama ya da Discord mesajlarına da doğal biçimde karşılık verebilir mi diye düşünüyorum
Markov Chain ile üretilmiş bir Harry Potter fan fiction var
Başlığı Harry Potter and the Portrait of What Looked Like a Large Pile of Ash
botnik.org bağlantısından okunabiliyor
Daha ilk cümlede bile boş bir metin gibi hissettirdi
Bana göre insanların yazdığı en kötü kitaptan bile daha az duygu ve anlam taşıyor
“I Fed 24 Years of My Blog Posts to a Markov Model” türü denemeler, aslında birçok LLM’nin tekrar tekrar yaptığı şeyler zaten
Barbara Cartwright gibi 700’den fazla benzer aşk romanı yazmış bir yazar, sanki Markov modeliyle yeniden üretilebilir gibi görünüyor
Eşim de bazen daha önce okuduğu romanı tekrar satın alıp yeniden okuyabiliyor
2000’lerin ortasında IRC’de Markov chain botlarını gördüğümü hatırlıyorum
GPT çıkana kadar onlardan daha iyisi yoktu
Bu aslında bir Markov modelinden çok trigram modeline daha yakın
4-gram ve üstüne çıkıldığında çok daha doğal cümleler üretilecektir
Eskiden “infini-gram” denen çok büyük bir n-gram modeli üzerine araştırmalar vardı; bazı alanlarda LLM’lere yakın performans gösterdiğini duymuştum
24 yıllık deneyim ve düşüncelerinizi paylaştığınız için teşekkür ederim
Bugünkü gibi yalnızca tüketim ve uyarıcılarla dolu bir çağda böyle içten paylaşımlar gerçekten özel