Küçük fark, her zaman yanlış işlem demek değil

Yapay zekânın ürettiği kısa hesap kodunda 0,1 ile 0,2 toplanıyor. Sonuç 0,30000000000000004 olunca modelden bunu düzeltmesini istiyorsunuz. Bir cevap bütün sonuçları iki basamağa yuvarlıyor, bir diğeri tam eşitlik kontrolünü kaldırıyor. İkisi de bazı hataları gizleyebilir. Önce hesap değerinin nasıl temsil edildiğini ve hangi farkın bu görev için kabul edilebilir olduğunu ayırın. Sayıyı güzel göstermek ile doğru karşılaştırma yapmak aynı iş değildir.

İkili kayan nokta gösterimi birçok ondalık kesri yaklaşık saklar. Python’un açıklaması, 0,1 gibi bir değerin makinede yakın bir ikili kesir olduğunu ve ekrandaki kısa yazımın bu farkı göstermeyebileceğini anlatır. Bu özellikten bütün farkların önemsiz olduğu sonucu çıkmaz. Aşağıdaki sentetik karşılaştırmalar, temsilden doğan küçük sapmayı gerçek veri farkını örten geniş toleranstan ayırmak için hazırlanmıştır.Kaynak: Python — Floating point arithmetic

Önce hangi yakınlığı kabul ettiğinizi yazın

Özgün yakınlık sözleşmesi
Yalnız sonlu sayılar karşılaştırılır. r=0,000001 göreli tolerans; a=0,000000001 mutlak tolerans. Fark = |x−y|. İzinli fark = max(a, r×max(|x|,|y|)). Fark izinli sınıra eşit veya küçükse yakın kabul edilir. Bu değerler eğitim içindir; genel iş standardı değildir.

Mutlak tolerans sayının birimindedir; sıfıra yakın değerleri karşılaştırmada bir taban sağlar. Göreli tolerans ise büyük değerin büyüklüğüyle orantılıdır. Python math.isclose açıklaması bu iki sınırdan büyük olanıyla karşılaştırma yapar. Burada yalnız sonlu girdiler için aynı matematiksel biçimi kullanıyoruz. NaN veya sonsuzluk bu yakınlık tablosuna alınmaz; önce veri durumu olarak ayrılır.Kaynak: Python — math.isclose

Bu bir ölçüm cihazının hata payı hesabı değildir. Örnekteki r ve a, karşılaştırmanın davranışını göstermek için önceden seçilmiştir. Gerçek görevde toleransın gerekçesi birim, veri çözünürlüğü, işlem zinciri ve kabul edilebilecek sapmayla ilişkilendirilmelidir. Modelin testleri geçirecek kadar büyük bir sayı önermesi uygun gerekçe sayılmaz. Kimlikler, adetler veya kesin sınır kuralları da otomatik olarak yaklaşık eşitliğe çevrilmez.

Aynı kural farklı büyüklüklerde ne yapıyor?

Sentetik karşılaştırma girdileri
Çiftxy
F10,1 + 0,20,3
F210000001000000,5
F300,0000000001
Açıklama için hesaplanan yakınlık
ÇiftMutlak farkİzinli farkKarar
F1Yaklaşık 5,55×10⁻¹⁷Yaklaşık 3×10⁻⁷Yakın
F20,51,0000005Yakın
F310⁻¹⁰10⁻⁹Yakın

F1’de tam eşitlik değil, iki yaklaşık ondalık hesabın yakınlığı denetleniyor. F2’de yarım birim fark vardır; seçtiğimiz göreli sınır büyük büyüklük nedeniyle bir birime yaklaşır. Bu yüzden F2 de geçer. Eğer yarım birim görev için anlamlıysa hata aritmetikte değil, seçilen tolerans sözleşmesindedir. F3’te yalnız göreli sınır çok küçük kalır; mutlak taban kararı belirler.

Tablodaki izinli farkların her biri kaynak değerlerden yeniden hesaplanabilir. Sonucu “üçü de doğru” diye özetlemeyin: üç çift verilen yakınlık kuralını sağlıyor. Verinin gerçekliği, birim tutarlılığı ve kabul standardının uygunluğu ayrıca incelenmelidir. Bir kontrolün geçmesi yalnız o kontrolün tanımladığı özelliği gösterir. Bu ayrım, küçük teknik testleri geniş bir doğruluk garantisine dönüştürmeyi engeller.

Geniş tolerans gerçek farkı silebilir

Örneğin milimetre yerine metreye geçerseniz mutlak tolerans da aynı katsayıyla çevrilmelidir. Göreli tolerans boyutsuz olduğu için aynı kalabilir. Birim dönüşümünde yalnız x ve y alanlarını değiştirip mutlak sınırı eski sayıyla bırakmak farklı bir kabul kararı yaratır.

F2 için göreli toleransı sıfır, mutlak toleransı 0,01 yapın. Yarım birim artık sınırı aşar ve çift yakın kabul edilmez. Veriler aynı kalmıştır; kabul tercihi değişmiştir. Bunu yöntem iyileşmesi diye sunmak yerine hangi görevde hangi farkın kabul edileceğini açıklayın. Birinci kuralın doğru, ikincinin yanlış olduğu sonucu sayılardan tek başına çıkmaz.

Açıklamalı karşı örnek
x=100, y=101. r=0,02 ve a=0 seçilirse izinli fark 2,02; fark 1 olduğu için yakın kabul edilir. Ancak görev en fazla 0,1 birim fark istiyorsa bu tolerans yanlış tanımlanmıştır. Kodu geçiren büyük sınır, görev koşulunu karşılamaz.

Ayrıca yakınlık genellikle tam eşitlik gibi zincirlenemez. Mutlak sınır 0,1 iken 0 ile 0,09 yakın, 0,09 ile 0,18 yakın olabilir; 0 ile 0,18 yakın değildir. Bu nedenle yakınlık sonucunu benzersiz kimlik grupları kurmak için düşünmeden kullanmayın. Grup üyeliğinin nasıl belirleneceği ayrı bir yöntem gerektirir; iki komşu karşılaştırmanın geçmesi bütün grubun aynı olduğu anlamına gelmez.

Sayının yanında tolerans hesabını da isteyin

Kopyalanabilir sayısal denetim
F1=(0.1+0.2,0.3), F2=(1000000,1000000.5), F3=(0,1e-10). Sonlu girdilerde r=1e-6, a=1e-9 ile |x−y|<=max(a,r×max(|x|,|y|)) uygula. Tam eşitlik, fark, izinli fark ve yakınlık kararını ayrı göster. F2’yi r=0,a=0.01 ile tekrar değerlendir. Toleransı değiştirme; sonuçları iki basamağa yuvarlayıp karşılaştırma. Gerçek ölçüm veya Excel çalıştırması iddia etme.

Kontrolü başka bir hesap yoluyla tekrarlayın: fark ile izinli farkı iki ayrı sütunda tutup son aşamada karşılaştırın. F1’in çok küçük sapmasını gösterim amacıyla kısaltabilirsiniz, ancak karar ham değerlerden verilmelidir. İzinli sınırın tam üzeri ve biraz dışı gibi vakaları eklemek, karşılaştırmadaki küçük veya küçük eşit seçimini de sınar.

Mutlak sınırda iki yeni çift

Göreli tolerans sıfır, mutlak tolerans 0,25 olsun. 8 ile 8,25 ve 8 ile 8,5 çiftlerini değerlendirin. Bu sayılar ikili gösterimde tam temsil edilebildiği için alıştırma sınır yönünü açıkça gösterir. Ardından “ikisi de bir ondalığa yuvarlanınca yeterince benzer” önerisinin neden yazılı kuralın yerine geçmediğini açıklayın.

Alıştırmanın cevabı
8↔8,25: fark 0,25, sınır 0,25; geçer. 8↔8,5: fark 0,5; kalır. Dahil sınır kullanıldı. Gösterim yuvarlaması yeni bir kabul kuralı yaratmaz; karar verilen ham farkla hesaplanır.

Paylaşılacak kontrol kaydı x, y, birim, r, a ve karar alanlarını birlikte taşısın. Böylece başka biri yalnız sonuca güvenmek zorunda kalmadan aynı hesabı yeniden yapabilir. Yapay zekâdan beklenen katkı farkı yok etmek değil, farkın hangi koşulda anlamlı olduğunu görünür kılmaktır.

Kaynaklar ve doğrulama

  • Python — Floating point arithmetic

    Ondalık kesirlerin ikili yaklaşık temsili ve görüntü yuvarlamasının saklanan değeri değiştirmemesi.

    Erişim ve kontrol:
  • Python — math.isclose

    Mutlak ve göreli toleransı birlikte kullanan yakınlık karşılaştırması.

    Erişim ve kontrol:

İlgili okumalar

Üretken Yapay Zekâ ile İş Verimliliği

Üretken Yapay Zekâ ile İş Verimliliği eğitimindeki hesap denetimlerine kabul edilebilir farkı açıkça ekleyebilirsiniz. Aynı örneği dar ve geniş toleranslarla sınamak, çalışan bir formülle doğru iş kuralını ayırmayı sağlar.

  • Bireysel tarih henüz açıklanmadı