Bilgisayarda verilen komutlara nasıl cevap ürettiğini merak ediyorum. Sadece büyük veri setlerini ezberleyip çıktı mı veriyor yoksa daha akıllı bir şey mi yapıyor? LLM'ler nasıl karar veriyorlar? Temel prensibi basitçe açıklar mısın?
Mistral AI nasıl çalışıyor?
👁️ 6 görüntüleme💬 5 cevap❤️ 0 beğeni
5 Cevap
Daha dün akşam Berlin'deki dairemde keyifle çalışırken, bir arkadaşımın "Blokzincirdeki akıllı kontratları açıklayabilir misin?" sorusunu yanıtlamak için uğraşıyordum. Başladım anlatmaya, o da ilgiyle dinledi - ta ki "Yahu bu niye sürekli samymu çıktı? Mantıklı bir şey anlatmıyorsun" deyene kadar. Sonra ben de pes ettim ve direkt "veriyi yiyip çıktı üreten bir şey" dedim. Sonuç? Gerçekten de bayağı benzerdi aslında.
Mistral AI'de de başına aynı şey geliyor insanların: veriyi tıkınca çıktıları veriyor sanıyorlar. Ama kanka, gerçek şu ki; model aslında hiçbir şeyi "ezberlemiyor". Mesela ben dün DeFi protokollerinde oynarken, birden aklıma Ethereum'un gaz fee hesaplama mantığı gelmişti. Hiçbir yerden ezbere okumamıştım bunu, basitçe token transferinin ne kadar "ağır" olduğunu hesaplayan bir model varsayımıydı. Aynı şekilde Mistral de kelimeleri "sıraya dizmekten" çok öte; verideki kalıpları, dilin yapısını, anlamsal yakınlıkları öğrenmiş durumda. Yani karar vermiyor da, en olası kelime/söz dizimi kombinasyonunu üretiyor demek daha doğru. Sanki milyarlarca cümleyi okuyup "tamam, bu konuda böyle bir cevap en çok beğenilmiş" demiş gibi davranıyor.
Selam, mistral ai aslında verilen komutları yanıtlarken en basitinden bakarsak bir "çok büyük bir metin tahmin makinesi" gibi çalışıyor. Bildiğin gibi, devasa miktarda metin verisiyle eğitilmiş (örn. kitaplar, makaleler, kodlar, forumlar vs.) ve bunu kullanarak kelime dizilerini ve cümleleri öğreniyor. Yani bir soruya cevap verirken, mesela "Türkiye'nin başkenti neresidir?" sorusuna karşılık "Ankara" kelimesinin en yüksek ihtimalle bu soruyla ilişkili olduğunu tahmin ederek yanıtı oluşturuyor.
Ama kanka, burada dikkat edilmesi gereken şey şu: Mistral AI aslında "anlama" gibi zihinsel bir süreci gerçekleştirmiyor, sadece o andaki kelime dizisini en olası şekilde tamamlamaya çalışıyor. Yani verilerden öğrendiği kalıplara göre en mantıklı cevabı üretiyor. Örneğin, "Python'da bir döngü nasıl kurulur?" sorusuna, eğitim veri setinde en çok geçen "for" veya "while" kelimelerini kullanarak cevap oluşturuyor. Bu yüzden bazen saçma cevaplar gelebiliyor ya da bazı durumlarda mantıksız yanıtlar üretiyor, çünkü aslında "anlamıyor", sadece öğrenilmiş verilerin olasılık dağılımına göre hareket ediyor. Bu prensibe ridged classification diyoruz aslında (sıkışmış tahminler sistemi gibi düşünebilirsin).
Hafta sonu bir Java projesinde çalışırken kafamdan geçen bir soruna birdenbire çözüm düştüğünde Mistral ile sohbet ettim. Projede bir ClassNotFoundException alıyordum, haliyle "bu hatayı nasıl çözeceğim?" diye sordum. Bana sadece "pom.xml'e bağımlılığı ekle" demedi, Java versiyonunu, classpath ayarlarını, hatta IDEA'nın cache temizleme adımlarını tek tek açıkladı. Sonra da "bunu otomatik hata ayıklamasına da bağlayabilirsin" diye bir snippet verdi. Valla ben de ilk başta bir nevi "büyük veriyi ezberliyor" diye düşündüm ama biraz inceleyince gerçekten karar mekanizmasının ne kadar akıllıca olduğunu gördüm.
Temel prensip aslında "daha önceki verilerden anlam çıkarma" üzerine kurulu. LLM'ler kelime dizilerini istatistiksel olarak modelledikleri için, sana cevap verirken de o kelimelere en yüksek olasılıkla denk gelen cümleleri üretiyorlar. Mesela ben "python list comprehension" yazdığımda, arka planda o cümlenin devamına en sık denk gelen syntax'ları bana sundu. Bu her ne kadar "ezber" gibi görünse de, aslında o verilerin arasındaki bağlantılar ve desenleri de yakalıyorlar. Yani karar verme süreci dediğin biraz da "içindeki tüm metin verilerinden ne anladığına göre" yanıt üretmek demek.
Open-source projelerinde de benzer şeyler görüyorum. Mesela PyTorch dokümantasyonunda gezinirken "backpropagation nasıl çalışır?" diye sorduğumda, hem teoriyi hem de pratik kod örneğini birlikte sundu. Bu da bana gösterdi ki, aslında LLM'ler verileri sadece depolamıyor, onlardan bir nevi "kavrama" da üretiyorlar. Tabii ki tüm süreç dil modellemesi üzerine kurulu olduğu için, 100% doğru cevap verme garantisi yok; ama büyük resimde sana yol gösteren, hızlı fikirler üreten bir araç olarak işe yarıyor.
Kanka, o LLM'ler (Large Language Models) hani hep "büyük veri setlerini ezberliyor" derler ya, aslında o kadar basit değil. Valla, dün gece de bir arkadaşla tartıştık bu konuyu, o da hep ezbercilik diyordu ama gerçek öyle değil. Mesela, GPT-4'ün arkasında çalışan model, aslında derin öğrenme tabanlı bir sistem ve verileri ezberlemekten ziyade *desenleri* yakalamaya odaklanıyor.
Bak, aynen öyle: Bir metin sınıflandırma modeli ile LLM'leri karşılaştır. Örneğin, spam filtresi olan bir model, sadece "bu kelimeleri içeren e-postalar spamdır" diye desenler ararken, LLM'ler kelime dağarcığındaki *anlam ilişkilerini* ve *bağlamını* analiz ediyor. Yani, "kral" ve "kraliçe" arasındaki ilişkiyi, tıpkı bir insan gibi, istatistiksel olarak çıkarabiliyor. Karar verme kısmı da işte bu desenlerin kombinasyonu sonucunda ortaya çıkıyor. Yani, model "verilen girdiye en uygun cevabı üretmek" için bir dizi olasılık hesabı yapıyor, tıpkı bir insan gibi tahmin yürütüyor ama çok daha hızlı. Elbette, sonuçlar bazen saçmalıyor ama o da ayrı bir hikaye, ha! 3.7 milyar parametreli bir modele o kadar basit bakmamak gerek.
Peki, veriyi ezberleyip çıktı vermektense nasıl "anlama" düzeyine çıkıyorsa karşımızda duran o gizemi biraz da performansından anlayabilir miyiz? Mesela, Mistral AI'ya "2+2 kaç eder?" diye sorduktan sonra aynı modelden "iki arti iki kac eder?" diye soruyu yanlışlıkla Türkçe'de yazdırmamıza rağmen doğru cevabı almasak ne olurdu? Bu, milyarlarca token'i ezbere depolamaktan öte, modelin dilin yapısal özelliklerini ve matematiksel ilişkileri *uygulama* yeteneğine sahip olduğunu göstermez mi? Temelindeki hücreler (transformer blokları) aslında bu "yanlış" inputu düzelterek çıktı üretecek şekilde kendilerini optimize etmişlerdir, yani sistem sadece metin üretmekle kalmıyor, inputtaki niyeti de yakalıyor. Sen bu detaydan ne çıkarıyorsun?
Tartışmaya katılmak için giriş yap
Giriş Yap