Sonlu puanlardan geçersiz olasılık çıkabilir

Model iki sınıf için 1000 ve 1001 puan döndürüyor. Yapay zekânın hazırladığı hesap bu puanların üstellerini alıp toplama bölüyor; sonuç sayısal olmaktan çıkıyor. Girişler sonlu olsa da ara işlem taşmış olabilir. Bu durumda sonucu boş değere çevirmek sorunun nedenini saklar. Normalleştirmeyi aynı dağılımı koruyan daha küçük ara değerlerle yapmak, hesap zincirini kaynağında düzeltmenizi sağlar.

Bu yazıdaki puanlar sentetik logit değerleridir; eğitilmiş bir modelden alınmamıştır. İki sınıfın birbirini dışladığı ve bu görevde aynı satırdaki puanların birlikte normalleştirileceği varsayılır. Amaç sınıflandırma doğruluğunu ölçmek değil, sayısal hesabın sonlu ve tutarlı kalmasını sınamak. Softmax sonucu elde etmek, o olasılıkların gözlenen sonuçlarla kalibre olduğu anlamına gelmez.

Ortak kaydırmayı cebirle doğrulayın

SciPy softmax açıklaması, üstel değerlerin toplamlarına bölünmesini ve uygulamada taşmayı önlemek için kaydırma kullanılmasını belirtir. Her logitten aynı m sabitini çıkardığınızda pay ve paydadaki ortak exp(−m) çarpanı sadeleşir; matematiksel dağılım değişmez. En büyük logiti seçmek, kaydırılmış en büyük değeri sıfır yapar ve üstellerin birden büyük olmamasını sağlar.Kaynak: SciPy — softmax

Özgün iki sınıf eşitliği
p_i = exp(z_i) / Σexp(z_j).
p_i = exp(z_i−m) / Σexp(z_j−m), m=max(z).
z=[1000,1001], m=1001 → z−m=[−1,0].
Üsteller [exp(−1),1]≈[0,367879,1].

Burada yalnız çıktıdan bir sabit çıkarmıyoruz; üstel hesap yapılmadan önce girdileri kaydırıyoruz. Önce exp(1000) değerini hesaplayıp taşmış sonucu sonradan küçültmeye çalışmak bilgi kaybını geri almaz. İşlem sırasının bu noktası önemlidir. Aynı sonlu puanlar kullanılır, fakat ara işlemler makinenin temsil edebildiği aralıkta kalacak biçimde düzenlenir.

Payı ve paydayı birlikte hesaplayın

Sentetik kararlı hesap
SınıfLogitKaydırılmışÜstelNormalleştirilmiş
A1000−1≈0,367879≈0,268941
B100101≈0,731059
Elle hazırlanmış kontrol sonucu
Payda 1+exp(−1)≈1,367879.
pA=exp(−1)/(1+exp(−1))≈0,268941.
pB=1/(1+exp(−1))≈0,731059.
Toplam 1; iki değer de sonlu ve [0,1] aralığında.
Puan farkı 1 olduğu için pB/pA=exp(1).

Son oran kontrolü aynı hesabı başka bir açıdan sınar. pB/pA yaklaşık 2,71828 olmalıdır. Toplamın bir olması tek başına doğru dağılımı kanıtlamaz; 0,5 ve 0,5 de toplamda bir eder. Puan farkının oluşturduğu oranı ve hangi sınıfın daha büyük olduğunu da kontrol edin. Böylece yalnız normalleşmiş görünen ama sınıf sırasını veya farkı bozan bir hesap yakalanabilir.

Doğrudan üstel hesap bazı çalışma ortamlarında sonsuz değer, bazılarında taşma hatası üretebilir. JavaScript Number ile Math.exp(1000) sonsuzdur; sonsuzun sonsuza bölümü NaN verir. Bu sonuç JSON’a taşınırsa başka bir katmanda boş gibi görünebilir. Bu makalenin düzeltmesi aktarım etiketini değiştirmek değil, geçerli sonlu girişler için üstel normalleştirmeyi baştan kararlı kurmaktır.

Her satırı kendi sınıflarıyla normalleştirin

Açıklama amaçlı JavaScript
function softmaxRow(values) {
  if (!values.length || !values.every(Number.isFinite)) throw Error("Invalid logits");
  const m = Math.max(...values);
  const terms = values.map(v => Math.exp(v - m));
  const total = terms.reduce((a,b) => a+b, 0);
  return terms.map(v => v / total);
}
// softmaxRow([1000,1001]) ≈ [0.268941,0.731059]

Bu kısa kod küçük satırlar için öğretim örneğidir. Çok büyük dizilerde yayma operatörünün sınırları veya farklı sayısal türler ayrıca ele alınır. Burada önemli olan her satırın kendi maksimumunu ve toplamını kullanmasıdır. İki farklı gözlemi tek bir toplamla normalleştirirseniz her gözlemin sınıf olasılıkları bir etmez. Sayısal kararlılık ile doğru normalleştirme ekseni iki ayrı kontrol olarak tutulmalıdır.

Örneğin ikinci satır [0,0] olsun. İlk satır kendi içinde yaklaşık 0,268941/0,731059, ikinci satır 0,5/0,5 vermelidir. Dört sayıyı tek bir liste gibi işlemek, iki ayrı sınıflandırma görevini aynı seçim evrenine dönüştürür. Bu yüzden toplu çıktı şekli, satır kimlikleri ve sınıf sırası da hesap sözleşmesinde bulunur. Modelden gelen sütunların adlarını sonradan değiştirerek bu hatayı düzeltemezsiniz.

Değişmezlik ve sınır testlerini isteyin

Softmax doğrulama istemi
Sentetik iki sınıf logitleri [1000,1001]. Her satır sonlu ve boş değil. En büyük değeri üstel işlemden önce çıkar; pay/payda hesabını ve toplam1 kontrolünü göster. Aynı girdilere ortak +500 ekleyerek dağılım değişmezliğini sına. [0,0] satırını bağımsız normalleştir. Boş veya sonsuz girişte sonucu uydurma. Olasılığı modelin doğruluğu, güven garantisi veya kalibrasyon başarısı diye yorumlama.

Ortak sabit ekleme testi bu örnekte güçlü bir kontroldür: [1500,1501] ile ilk puanların farkı aynıdır, dolayısıyla sonuçlar aynı kalmalıdır. Buna karşılık yalnız ikinci puanı yükseltmek dağılımı değiştirir ve bu beklenen davranıştır. Test planında ortak kaydırmayı, puan farkı değişimini ve sınıf sırası değişimini ayrı deneyler olarak yazın. Aksi halde sonuç değişmemeli ifadesi yanlış koşullarda uygulanabilir.

  • Girdiler boş olmayan sonlu sayılar mı?
  • Maksimum, üstel hesap öncesinde mi çıkarılıyor?
  • Her satırın toplamı ayrı mı?
  • Ortak kaydırmada sonuç ve sınıf sırası korunuyor mu?

Çok küçük katkı kaybolabilir

En büyük değeri çıkarmak bütün duyarlılık sorunlarını ortadan kaldırmaz. Bir logit diğerinden çok küçükse exp(z−m) makine hassasiyetinde sıfıra inebilir. Bu durumda toplam yine sonlu olabilir, fakat küçük olasılığın sayısal temsili kaybolmuştur. Böyle değerlerin logaritması gereken görevlerde başka sayısal yöntemler kullanılabilir. Bu yazının küçük farkı bir olan örneği, aşırı küçük olasılıkların bütün kullanım durumlarını doğrulamaz.

Sınıfları ters çevirip eşitliği deneyin

Önce [1001,1000] için sonucu yazın; hangi iki değer yer değiştirmelidir? Sonra [1000,1000] için dağılımı bulun. Son olarak ilk satırın yalnız ikinci logitini 1002 yapın. Bu son değişiklikte ortak kaydırma değişmezliğinin neden uygulanmadığını açıklayın. Hesabı her satırda ayrı yapın ve sonucu sınıf adlarıyla birlikte koruyun.

Alıştırmanın cevabı
[1001,1000] → yaklaşık [0,731059;0,268941]. [1000,1000] → [0,5;0,5]. [1000,1002] → yaklaşık [0,119203;0,880797]. Son çiftte fark2 olduğu için dağılım değişir; iki değere aynı sabit eklenmemiştir.

Model çıktısı incelemesinde son olasılığın yanında hangi eksende ve hangi sayısal yöntemle hesaplandığını da kaydedin. AI’ın ürettiği kodu bu küçük karşı örneklerle sınamak, taşmayı sessizce gizleyen bir akış yerine hesabı ve yorum sınırını açık tutan bir değerlendirme sağlar.

Kaynaklar ve doğrulama

  • SciPy — softmax

    Üstel değerleri toplamla normalleştirme ve taşmayı önlemek için kaydırma kullanımı.

    Erişim ve kontrol:

İlgili okumalar

Üretimde Yapay Zekâ

Üretimde Yapay Zekâ eğitiminde model çıktısının hesap ve yorum sınırlarını kendi görevlerinize bağlayabilirsiniz. Bu küçük logit örneğini farklı satır boyutları ve beklenen sınıf düzeniyle genişletin.

  • Kuruma özel planlanır