2 puan yazan GN⁺ 2025-12-15 | 1 yorum | WhatsApp'ta paylaş
  • 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

 
GN⁺ 2025-12-15
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

    • “Öğrenilebilir” derken ne kastedildiğini merak ediyorum
  • 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

    • Ben de benzer bir şey denedim; çıkan sonuçların yarısı komik saçmalık, yarısı da özgün metnin kopyasıydı
      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
    • “Kuru” sonuçlardan kaçınmanın püf noktası 5 kelimelik sınırı esnek biçimde ayarlamak
      Olası yol yalnızca bir taneyse 4 kelimeye düşürmek gibi
    • Böyle sonuçlara bakınca sanki bir şey iletişim kurmaya çalışıyormuş gibi ürpertici bir his veriyor
      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

    • Acaba hiç NaNoGenMo etkinliğine katıldınız mı diye merak ediyorum
      Böyle bir korpusla denemeler yapmak oldukça eğlenceli bir proje olabilir
    • Ben de 2015’te 20 bin tweet’imi Markov modeliyle eğitip bir Twitter botu yapmıştım
      Sunum videosu da var
    • Bende de 30 yıllık tamamlanmamış roman taslakları var; bunu böyle çalıştırmak ilginç olabilir
    • Terry Davis’in de buna benzer bir şey yaptığını hatırlıyorum
    • Bunu bir LLM ile nasıl yapabileceğimi merak ediyorum
      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

    • İnsanların neden böyle bir şeyi okumak isteyeceğini anlamıyorum
      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

    • Ama gerçekten ayırt edilip edilemeyeceğinden emin değilim
      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

    • Muhtemelen MegaHAL ya da biraz daha sonraki Cobe kastediliyor
    • Ben de 2000’lerde bitlbee ile kendim yapmıştım; gerçekten çok keyifli zamanlardı
  • 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