🏷️sec_prob
Bir şekilde, makine öğrenmesi tamamen tahminlerde bulunmakla ilgilidir. Klinik geçmişi göz önüne alındığında, bir hastanın önümüzdeki yıl kalp krizi geçirme olasılığını tahmin etmek isteyebiliriz. Anormallik tespitinde, bir uçağın jet motorundan bir dizi okumanın uçak normal çalışıyor olsaydı ne kadar muhtemel olacağını değerlendirmek isteyebiliriz. Pekiştirmeli öğrenmede, bir etmenin bir ortamda akıllıca hareket etmesini istiyoruz. Bu, mevcut eylemlerin her birinin altında yüksek bir ödül alma olasılığını düşünmemiz gerektiği anlamına gelir. Ayrıca tavsiye sistemleri oluşturduğumuzda, olasılık hakkında da düşünmemiz gerekir. Örneğin, varsayımsal olarak büyük bir çevrimiçi kitapçı için çalıştığımızı söyleyelim. Belirli bir kullanıcının belirli bir kitabı satın alma olasılığını tahmin etmek isteyebiliriz. Bunun için olasılık dilini kullanmamız gerekiyor. Birçok ders, anadal, tez, kariyer ve hatta bölüm olasılığa ayrılmıştır. Doğal olarak, bu bölümdeki amacımız konunun tamamını öğretmek değildir. Bunun yerine sizi ayaklarınızın üzerine kaldırmayı, ilk derin öğrenme modellerinizi oluşturmaya başlayabileceğiniz kadarını öğretmeyi ve dilerseniz konuyu kendi başınıza keşfetmeye başlayabilmeniz için bir tutam bilgi vermeyi umuyoruz.
Daha önceki bölümlerde, tam olarak ne olduklarını açıklamadan veya somut bir örnek vermeden olasılıkları zaten çağırmıştık. Şimdi ilk vakayı ele alarak daha ciddileşelim: Fotoğraflardan kedi ve köpekleri ayırmak. Bu basit gelebilir ama aslında zorlu bir görevdir. Başlangıç olarak, sorunun zorluğu görüntünün çözünürlüğüne bağlı olabilir.
Gösterildiği gibi :numref:fig_cat_dog
, insanlar için kedileri ve köpekleri
Şimdi ikinci bir durumu düşünün: Bazı hava durumu izleme verilerini göz önüne alarak yarın Taipei'de yağmur yağma olasılığını tahmin etmek istiyoruz. Yaz mevsimindeyse, yağmur 0.5 olasılıkla gelebilir.
Her iki durumda da, bir miktar ilgi değerimiz var. Her iki durumda da sonuç hakkında emin değiliz. Ancak iki durum arasında temel bir fark var. Bu ilk durumda, görüntü aslında ya bir köpektir ya da bir kedidir ve hangisi olduğunu bilmiyoruz. İkinci durumda, eğer bu tür şeylere inanıyorsanız (ve çoğu fizikçi bunu yapıyor), sonuç aslında rastgele bir olay olabilir. Dolayısıyla olasılık, kesinlik seviyemiz hakkında akıl yürütmek için esnek bir dildir ve geniş bir bağlam kümesinde etkili bir şekilde uygulanabilir.
Bir zar attığımızı ve başka bir rakam yerine 1 rakamını görme şansının ne olduğunu bilmek istediğimizi düşünelim. Eğer zar adilse, altı sonucun tümü
Bir fabrikadan aldığımız gerçek bir zar için bu oranları bilmeyebiliriz ve hileli olup olmadığını kontrol etmemiz gerekir. Zarı araştırmanın tek yolu, onu birçok kez atmak ve sonuçları kaydetmektir. Zarın her kullanımında,
Doğal bir yaklaşım her değer için, o değerin bireysel sayımını almak ve bunu toplam atış sayısına bölmektir. Bu bize belirli bir olayın olasılığının tahminini verir. Büyük sayılar yasası bize, atışların sayısı arttıkça bu tahminin gerçek temel olasılığa gittikçe yaklaşacağını söyler. Burada neler olup bittiğinin ayrıntılarına girmeden önce bunu deneyelim.
Başlamak için gerekli paketleri içeri aktaralım.
%matplotlib inline
from d2l import mxnet as d2l
from mxnet import np, npx
import random
npx.set_np()
#@tab pytorch
%matplotlib inline
from d2l import torch as d2l
import torch
from torch.distributions import multinomial
#@tab tensorflow
%matplotlib inline
from d2l import tensorflow as d2l
import tensorflow as tf
import tensorflow_probability as tfp
import numpy as np
Sonra, zarı atabilmeyi isteyeceğiz. İstatistikte bu olasılık dağılımlarından örnek alma sürecini örnekleme olarak adlandırıyoruz. Olasılıkları bir dizi ayrık seçime atayan dağılıma katlıterimli (multinomial) dağılım denir. Daha sonra dağılımın daha resmi bir tanımını vereceğiz, ancak üst seviyede, bunu sadece olaylara olasılıkların atanması olarak düşünün.
Tek bir örneklem çekmek için, basitçe bir olasılık vektörü aktarırız.
Çıktı aynı uzunlukta başka bir vektördür:
fair_probs = [1.0 / 6] * 6
np.random.multinomial(1, fair_probs)
#@tab pytorch
fair_probs = torch.ones([6]) / 6
multinomial.Multinomial(1, fair_probs).sample()
#@tab tensorflow
fair_probs = tf.ones(6) / 6
tfp.distributions.Multinomial(1, fair_probs).sample()
Örnekleyiciyi birkaç kez çalıştırırsanız, her seferinde rastgele değerler çıkardığını göreceksiniz. Bir zarın adilliğini tahmin ederken olduğu gibi, genellikle aynı dağılımdan birçok örneklem oluşturmak isteriz. Bunu bir Python for
döngüsüyle yapmak dayanılmaz derecede yavaş olacaktır, bu nedenle kullandığımız işlev, aynı anda birden fazla örneklem çekmeyi destekler ve arzu edebileceğimiz herhangi bir şekile sahip bağımsız örneklemler dizisi döndürür.
np.random.multinomial(10, fair_probs)
#@tab pytorch
multinomial.Multinomial(10, fair_probs).sample()
#@tab tensorflow
tfp.distributions.Multinomial(10, fair_probs).sample()
Artık zar atışlarını nasıl örnekleyeceğimizi bildiğimize göre, 1000 atış benzetimi yaparız. Daha sonra, 1000 atışın her birinden sonra, her bir sayının kaç kez atıldığını inceleyebilir ve sayabiliriz. Özellikle belitirsek, göreceli frekansı gerçek olasılığın tahmini olarak hesaplarız.
counts = np.random.multinomial(1000, fair_probs).astype(np.float32)
counts / 1000
#@tab pytorch
# Bölme için sonuçları 32-bitlik virgüllü kazan sayı olarak depolarız
counts = multinomial.Multinomial(1000, fair_probs).sample()
counts / 1000 # Relative frequency as the estimate
#@tab tensorflow
counts = tfp.distributions.Multinomial(1000, fair_probs).sample()
counts / 1000
Verileri adil bir zardan oluşturduğumuz için, her sonucun gerçek olasılığının
Ayrıca bu olasılıkların zaman içinde gerçek olasılığa doğru nasıl yakınsadığını da görselleştirebiliyoruz. Her grubun 10 örnek çektiği 500 adet deney yapalım.
counts = np.random.multinomial(10, fair_probs, size=500)
cum_counts = counts.astype(np.float32).cumsum(axis=0)
estimates = cum_counts / cum_counts.sum(axis=1, keepdims=True)
d2l.set_figsize((6, 4.5))
for i in range(6):
d2l.plt.plot(estimates[:, i].asnumpy(),
label=("P(die=" + str(i + 1) + ")"))
d2l.plt.axhline(y=0.167, color='black', linestyle='dashed')
d2l.plt.gca().set_xlabel('Deney Gruplari')
d2l.plt.gca().set_ylabel('Tahmini Olasilik')
d2l.plt.legend();
#@tab pytorch
counts = multinomial.Multinomial(10, fair_probs).sample((500,))
cum_counts = counts.cumsum(dim=0)
estimates = cum_counts / cum_counts.sum(dim=1, keepdims=True)
d2l.set_figsize((6, 4.5))
for i in range(6):
d2l.plt.plot(estimates[:, i].numpy(),
label=("P(die=" + str(i + 1) + ")"))
d2l.plt.axhline(y=0.167, color='black', linestyle='dashed')
d2l.plt.gca().set_xlabel('Deney Gruplari')
d2l.plt.gca().set_ylabel('Tahmini Olasilik')
d2l.plt.legend();
#@tab tensorflow
counts = tfp.distributions.Multinomial(10, fair_probs).sample(500)
cum_counts = tf.cumsum(counts, axis=0)
estimates = cum_counts / tf.reduce_sum(cum_counts, axis=1, keepdims=True)
d2l.set_figsize((6, 4.5))
for i in range(6):
d2l.plt.plot(estimates[:, i].numpy(),
label=("P(die=" + str(i + 1) + ")"))
d2l.plt.axhline(y=0.167, color='black', linestyle='dashed')
d2l.plt.gca().set_xlabel('Deney Gruplari')
d2l.plt.gca().set_ylabel('Tahmini Olasilik')
d2l.plt.legend();
Her katı eğri, zarın altı değerinden birine karşılık gelir ve her deney grubundan sonra değerlendirildiğinde zarın bu değerleri göstermesinde tahmin ettiğimiz olasılığı verir.
Kesikli siyah çizgi, gerçek temel olasılığı verir.
Daha fazla deney yaparak daha fazla veri elde ettikçe,
Bir zarın atışları ile uğraşırken,
Biçimsel olarak, olasılık, bir kümeyi gerçek bir değere eşleyen bir işlev olarak düşünülebilir.
- Herhangi bir
$\mathcal{A}$ olayı için, olasılığı asla negatif değildir, yani,$P(\mathcal{A}) \geq 0$ ; - Tüm örnek alanın olasılığı
$1$ 'dir, yani$P(\mathcal{S}) = 1$ ; - Birbirini dışlayan sayılabilir herhangi bir olay dizisi için ($\mathcal{A}_i \cap \mathcal{A}j = \emptyset$ bütün $i \neq j$) için, herhangi bir şeyin olma olasılığı kendi olasılıklarının toplamına eşittir, yani, $P(\bigcup{i=1}^{\infty} \mathcal{A}i) = \sum{i=1}^{\infty} P(\mathcal{A}_i)$.
Bunlar aynı zamanda 1933'te Kolmogorov tarafından önerilen olasılık teorisinin aksiyomlarıdır.
Bu aksiyom sistemi sayesinde, rastlantısallıkla ilgili herhangi bir felsefi tartışmayı önleyebiliriz; bunun yerine matematiksel bir dille titiz bir şekilde akıl yürütebiliriz.
Örneğin,
Bir zar atma rastgele deneyimizde, rastgele değişken kavramını tanıttık. Rastgele bir değişken hemen hemen herhangi bir miktar olabilir ve deterministik değildir. Değişken rastgele bir deneyde bir dizi olasılık arasından bir değer alabilir.
Değeri bir zar atmanın
Bir zarın yüzleri gibi kesikli rastgele değişkenler ile bir kişinin ağırlığı ve boyu gibi sürekli olanlar arasında ince bir fark olduğunu unutmayın. İki kişinin tam olarak aynı boyda olup olmadığını sormanın pek bir anlamı yok. Yeterince hassas ölçümler alırsak, gezegendeki hiçbir insanın aynı boyda olmadığını göreceksiniz. Aslında, yeterince ince bir ölçüm yaparsak, uyandığınızda ve uyuduğunuzda da boyunuz aynı olmayacaktır. Dolayısıyla, birinin 1,80139278291028719210196740527486202 metre boyunda olma olasılığını sormanın hiçbir amacı yoktur. Dünya insan nüfusu göz önüne alındığında, olasılık neredeyse 0'dır. Bu durumda, birinin boyunun belirli bir aralıkta, örneğin 1,79 ile 1,81 metre arasında olup olmadığını sormak daha mantıklıdır. Bu durumlarda, bir değeri yoğunluk olarak görme olasılığımızı ölçüyoruz. Tam olarak 1,80 metrelik boyun olasılığı yoktur, ancak yoğunluğu sıfır değildir. Herhangi iki farklı boy arasındaki aralıkta sıfır olmayan bir olasılığa sahibiz.
Bu bölümün geri kalanında, olasılığı ayrık uzayda ele alıyoruz.
Sürekli rastgele değişkenler üzerindeki olasılık için, şuraya başvurabilirsiniz :numref:sec_random_variables
.
Çok sık olarak, bir seferde birden fazla rastgele değişkeni dikkate almak isteyeceğiz. Örneğin, hastalıklar ile belirtiler arasındaki ilişkiyi modellemek isteyebiliriz. Bir hastalık ve bir belirti verildiğinde, örneğin "grip" ve "öksürük", bir olasılıkla bir hastada ortaya çıkabilirler veya çıkmayabilirler. Her ikisinin de olasılığının sıfıra yakın olacağını umarken, bu olasılıkları ve bunların birbirleriyle olan ilişkilerini tahmin etmek isteyebiliriz, böylece daha iyi tıbbi bakım sağlamak için çıkarımlarımızı uygulayabiliriz.
Daha karmaşık bir örnek olarak, görüntüler milyonlarca piksel, dolayısıyla milyonlarca rastgele değişken içerir. Ve çoğu durumda resimler, resimdeki nesneleri tanımlayan bir etiketle birlikte gelir. Etiketi rastgele bir değişken olarak da düşünebiliriz. Tüm meta (üst) verileri konum, zaman, diyafram, odak uzaklığı, ISO, odak mesafesi ve kamera türü gibi, rastgele değişkenler olarak bile düşünebiliriz. Bunların hepsi birlikte oluşan rastgele değişkenlerdir. Birden çok rastgele değişkenle uğraştığımızda, ilgilendiğimiz birkaç miktar vardır.
İlki, bileşik olasılık
Bu bizi ilginç bir orana getiriyor:
Koşullu olasılıkların tanımını kullanarak, istatistikteki en kullanışlı ve ünlü denklemlerden birini türetebiliriz: Bayes teoremi.
Aşağıdaki gibidir.
Yapısı gereği,
Burada,
Bayes teoremi, bir şeyi diğerinden çıkarmak istiyorsak, neden ve sonuç mesela, çok kullanışlıdır, ancak bu bölümde daha sonra göreceğimiz gibi, yalnızca özellikleri ters yönde biliyoruz. Bunun işe yaraması için ihtiyacımız olan önemli bir işlem, marjinalleştirmedir.
bu aynı zamanda toplam kuralı olarak da bilinir. Tümleştirmenin bir sonucu olan olasılık veya dağılım, marjinal (tümsel) olasılık veya marjinal (tümsel) dağılım olarak adlandırılır.
Kontrol edilmesi gereken diğer bir yararlı özellik, bağımlılık ve bağımsızlıktır.
İki rastgele değişken olan
🏷️subsec_probability_hiv_app
Becerilerimizi test edelim. Bir doktorun bir hastaya HIV testi uyguladığını varsayalım. Bu test oldukça doğrudur ve yalnızca %1 olasılıkla hasta sağlıklı olduğu halde hasta olarak bildirme hatası yapar. Dahası, eğer hastada gerçekten varsa HIV'i asla tespit etmemezlik yapmaz. Teşhisi belirtmek için conditional_prob_D1
bu tür koşullu olasılıkları listeler.
:$P(D_1 \mid H)$ koşullu olasılığı:
Koşullu olasılık | ||
---|---|---|
1 | 0.01 | |
0 | 0.99 | |
🏷️conditional_prob_D1
|
Koşullu olasılığın, olasılık gibi 1'e toplanması gerektiğinden, sütun toplamlarının hepsinin 1 olduğuna dikkat edin (ancak satır toplamları değildir). Test pozitif çıkarsa hastanın HIV'li olma olasılığını hesaplayalım, yani
Böylece bunu elde ederiz,
Diğer bir deyişle, çok doğru bir test kullanmasına rağmen, hastanın gerçekten HIVli olma şansı yalnızca %13.06'dır. Gördüğümüz gibi, olasılık sezgilere ters olabilir.
Böylesine korkunç bir haber alan hasta ne yapmalıdır? Muhtemelen hasta, netlik elde etmek için hekimden başka bir test yapmasını isteyecektir. İkinci testin farklı özellikleri vardır ve şu şekilde gösterildiği gibi birincisi kadar iyi değildir :numref:conditional_prob_D2
.
:$P(D_2 \mid H)$ koşullu olasılığı:
Koşullu olasılık | ||
---|---|---|
0.98 | 0.03 | |
0.02 | 0.97 | |
🏷️conditional_prob_D2
|
Maalesef ikinci test de pozitif çıkıyor. Koşullu bağımsızlığı varsayıp Bayes teoremini çağırarak gerekli olasılıkları bulalım:
Şimdi marjinalleştirme ve çarpım kuralını uygulayabiliriz
En sonunda, her iki pozitif testin de verildiği hastanın HIVli olma olasılığı
Böylece ikinci test, her şeyin yolunda olmadığına dair çok daha yüksek bir güven kazanmamızı sağladı. İkinci test, birincisinden çok daha az doğru olmasına rağmen, tahminimizi önemli ölçüde iyileştirdi.
Olasılık dağılımlarının temel özelliklerini özetlemek için bazı ölçülere ihtiyacımız var.
Çoğu durumda
Varyansın kareköküne standart sapma denir.
Rastgele değişkenin bir fonksiyonunun varyansı, fonksiyonun beklentisinden ne kadar saptığını ölçer, çünkü rastgele değişkenin farklı değerleri
- Olasılık dağılımlarından örnekleme yapabiliriz.
- Bileşik dağılım, koşullu dağılım, Bayes teoremi, marjinalleştirme ve bağımsızlık varsayımlarını kullanarak birden çok rastgele değişkeni analiz edebiliriz.
- Beklenti ve varyans, olasılık dağılımlarının temel özelliklerini özetlemek için yararlı ölçüler sunar.
- Her grubun
$n = 10$ örnek çektiği$m = 500$ deney grubu yürüttük.$m$ ve$n$ değerlerini değiştirin. Deneysel sonuçları gözlemleyin ve analiz edin. -
$P(\mathcal{A})$ ve$P(\mathcal{B})$ olasılığına sahip iki olay verildiğinde,$P(\mathcal{A} \cup \mathcal{B})$ ve$P(\mathcal{A} \cap \mathcal{B})$ için üst ve alt sınırları hesaplayın (İpucu: Durumu bir Venn Şeması kullanarak görüntüleyin.) -
$A$ ,$B$ ve$C$ gibi rastgele değişkenlerden oluşan bir dizimiz olduğunu varsayalım, burada$B$ yalnızca$A$ 'ya bağlıdır ve$C$ yalnızca$B$ 'ye bağlıdır,$P(A, B, C)$ birleşik olasılığı basitleştirebilir misiniz? (İpucu: Bu bir Markov Zinciri'dir.) - :numref:
subsec_probability_hiv_app
'da, ilk test daha doğrudur. Hem birinci hem de ikinci testleri yapmak yerine neden ilk testi iki kez yapmıyorsunuz?
:begin_tab:mxnet
Tartışmalar
:end_tab:
:begin_tab:pytorch
Tartışmalar
:end_tab:
:begin_tab:tensorflow
Tartışmalar
:end_tab: