
Bir miktar her adımda aynı sayı kadar değişmek yerine aynı oranla çarpılarak büyüyebilir ya da azalabilir. Üstel ve logaritmik fonksiyonlar bu tür değişimleri anlamamıza yardımcı olur. Birikim, nüfus, ilaç miktarı ve çok geniş ölçüm aralıklarıyla ilgili sorularda karşımıza çıkarlar. Yapay zekâda da olasılıkları işlemek ve model çıktılarını olasılık dağılımlarına dönüştürmek için kullanılırlar. Bu makalede üstel büyüme ve azalmayı gündelik örneklerden başlayarak kuracağız. Ardından logaritmanın hangi soruyu yanıtladığını görecek ve iki fonksiyonun yapay zekâdaki kullanımını adım adım inceleyeceğiz.
Toplamak ile Çarpmak Arasındaki Büyük Fark
Bir önceki Polinom Fonksiyonları makalemizde \(x\), \(x^2\) ve \(x^3\) gibi kuvvetlerin farklı grafikler oluşturduğunu görmüştük. Şimdi değişkeni üste taşıyıp \(x^3\) ile \(3^x\) arasındaki farkı inceleyeceğiz.
Önce iki farklı büyüme biçimini karşılaştıralım. Her ikisi de \(2\) ile başlasın.
Birinci miktara her saat 2 ekleyelim:
İkinci miktarı ise her saat 2 ile çarpalım:
İlk iki değer aynı olsa da birkaç adım sonra araları açılır. Birinci dizide artış her saat \(2\)'dir; ikinci dizideyse miktar her saat iki katına çıkar.
| Saat | Her Saat 2 Ekle | Her Saat 2 ile Çarp |
|---|---|---|
| 0 | 2 | 2 |
| 1 | 4 | 4 |
| 2 | 6 | 8 |
| 3 | 8 | 16 |
| 4 | 10 | 32 |
Aynı miktarı tekrar tekrar eklediğimiz değişime doğrusal değişim, aynı çarpanı tekrar tekrar uyguladığımız değişime ise üstel değişim deriz:
Üstel Fonksiyon Nasıl Doğar?
Uygun koşullarda her bir bakterinin saatte bir kez bölünerek iki bakteri oluşturduğu bir tür düşünelim. Başlangıçta \(2\) bakteri bulunsun. Bir saat sonra sayı iki katına, iki saat sonra bir kez daha iki katına çıkacaktır.
Burada \(N(t)\), \(t\) saat sonraki bakteri sayısını göstersin. Her satırda yeniden \(2\) ile çarpmak yerine tekrar sayısını üs olarak yazabiliriz:
Formüldeki ilk \(2\), başlangıçtaki bakteri sayısıdır. Üslü ifadenin tabanındaki \(2\) ise her saatte uygulanan çarpandır. \(t\) de bu çarpmanın kaç kez uygulanacağını söyler.
Başlangıç miktarına \(A_0\), her adımda uygulanan çarpana \(b\), geçen adım sayısına da \(t\) dersek aynı ilişkiyi genel olarak yazabiliriz:
- \(A(t)\), \(t\) adım sonraki miktardır.
- \(A_0\), başlangıç miktarıdır. Altındaki \(0\), “başlangıç anı” anlamına gelir.
- \(b\), her adımda uygulanan çarpandır.
- \(t\), geçen zaman veya adım sayısıdır.
Bağımsız değişken \(t\) üste yerleştiği için bu yapıya üstel fonksiyon (exponential function) denir. \(x^3\) ile \(3^x\) arasındaki ayrım da buradadır. \(x^3\)'te değişken tabanda, \(3^x\)'te ise üstedir.
Üs Yalnızca Pozitif Tam Sayı Değildir
\(2^3\) ifadesini \(2\cdot2\cdot2=8\) olarak okumak kolaydır. Fakat üstel fonksiyon yalnızca \(1,2,3\) gibi pozitif tam sayılarda çalışmaz. Sıfır, negatif ve kesirli üslerin de anlamı vardır.
| Üs | İşlem | Sonuç |
|---|---|---|
| \(2\) | \(2^2\) | \(4\) |
| \(1\) | \(2^1\) | \(2\) |
| \(0\) | \(2^0\) | \(1\) |
| \(-1\) | \(2^{-1}=1/2\) | \(0.5\) |
| \(-2\) | \(2^{-2}=1/2^2\) | \(0.25\) |
| \(1/2\) | \(2^{1/2}=\sqrt{2}\) | Yaklaşık \(1.414\) |
Neden \(2^0=1\) olduğunu dizinin düzenini geriye doğru izleyerek görebiliriz. Üs bir azalırken sonuç \(2\)'ye bölünür:
Yani \(2^3,2^2,2^1,2^0\) sırasıyla \(8,4,2,1\) olur. Aynı düzeni sürdürürsek negatif üslerde kesirlere ulaşırız. Kesirli üsler ise köklerle ilişkilidir. Örneğin \(2^{1/2}\), karesi \(2\) olan pozitif sayıdır.
Bu genişletmeler sayesinde \(b^x\) fonksiyonunu yalnızca tam sayılarda değil, bütün gerçek \(x\) değerlerinde inceleyebiliriz. Reel sayılarla çalışırken tabanın \(b>0\) olması gerekir. Ayrıca \(b=1\) seçersek \(1^x=1\) sabit fonksiyonunu elde ederiz; bu nedenle gerçek bir büyüme veya azalma modelinde \(b\ne1\) koşulunu kullanırız.
Büyüme mi, Azalma mı?
Üstel fonksiyonun büyüyüp büyümeyeceğini taban belirler.
- \(b>1\) ise miktar her adımda büyür.
- \(0<b<1\) ise miktar her adımda küçülür.
Örneğin \(2^x\) için \(b=2\)'dir. Her bir adımda önceki değer ikiye katlandığı için grafik yükselir. \((1/2)^x\) için ise her adımda önceki değerin yarısı kaldığından grafik düşer.
Başlangıç miktarı \(A_0>0\) olduğunda bu modellerin çıktıları her zaman pozitiftir. Üstel azalma gösteren bir değer sıfıra gittikçe yaklaşabilir; fakat sonlu bir \(t\) değeri için tam olarak sıfır olmaz. Grafikte \(y=0\) doğrusu yaklaşılabilen ama kesilmeyen bir yatay kılavuz gibidir. İleride bu tür doğrulara asimptot diyeceğiz.
Temel \(b^x\) fonksiyonu için:
- Her gerçek sayı girdi olarak kullanılabilir.
- Çıktı daima pozitiftir.
- \(x=0\) olduğunda sonuç \(1\)'dir.
- Grafik \(x\) eksenine yaklaşabilir ama onu kesmez.
\(A_0b^x\) modelinde \(x=0\) yazarsak \(A(0)=A_0\) çıkar. Bu nedenle \(A_0\)'a başlangıç değeri dememiz yalnızca bir isim seçimi değildir; formül gerçekten başlangıç anındaki miktarı verir.
Yüzdeyi Çarpana Dönüştürmek
Gerçek hayatta bize çoğu zaman “her yıl \(1.08\) ile çarpılıyor” denmez. Bunun yerine “her yıl yüzde 8 artıyor” denir. Bu iki cümle aynı şeyi anlatır.
Bir miktar yüzde \(r\) artıyorsa eski miktarın tamamı ile artış miktarını birlikte tutarız:
Burada yüzdeyi ondalık sayıya çevirmemiz gerekir. Yüzde 8 için \(r=0.08\) olur; dolayısıyla çarpan \(1+0.08=1.08\)'dir.
Başlangıçta \(5.000\) TL bulunan ve her yıl yüzde 10 arttığını varsaydığımız bir birikimi inceleyelim:
Üç yıl sonra birikim:
olur. Her yıl \(500\) TL eklemedik: İkinci yılın yüzde 10'u, ilk yıl artmış olan miktar üzerinden hesaplandı. Bileşik büyümede artışın kendisi de sonraki artışa katılır.
Yüzde \(r\) azalma olduğunda ise miktarın \(r\) kadarı gider, \(1-r\) kadarı kalır:
Vücutta başlangıçta \(800\) miligram ilaç bulunduğunu ve her saat ilacın yüzde 25'inin atıldığını varsayalım. Her saat yüzde 75'i kaldığı için çarpanımız \(0.75\)'tir:
Sabit atılım oranı varsayımıyla dört saat sonra yaklaşık \(253\) miligram ilaç kalır.
Üstel Modellerin Varsayımları ve Sınırları
Bakteri örneğimizde her saatte ikiye katlanma, yeterli besin ve alan ile uygun sıcaklık bulunduğunu varsayar. Bakteri sayısı arttıkça kaynaklar tükenebilir; o zaman aynı büyüme oranı sürmez.
Benzer biçimde sabit faiz, sabit nüfus artışı veya sabit ilaç atılım oranı yalnızca belirli koşullarda uygun olabilir. Üstel model kullanmadan önce şu soruları sormak yararlıdır:
- Değişim miktara mı bağlı, yoksa her adımda sabit bir sayı mı ekleniyor?
- Yüzde değişim gerçekten yaklaşık olarak sabit mi?
- Zaman adımları eşit mi?
- Kaynak, kapasite veya alt sınır gibi büyümeyi değiştirecek bir engel var mı?
- Modeli kısa bir aralıkta mı, çok uzak bir gelecekte mi kullanıyoruz?
Sınırlı bir aralıkta bir polinom da üstel veriye yakın sonuçlar verebilir. Süreç mevcut miktarın sabit bir yüzdesi kadar değişiyorsa üstel model bunu doğrudan ifade eder. Tahmini çok uzak bir zamana taşıdığımızda iki modelin sonuçları iyice ayrılabilir.
Üs Kuralları Neden Çalışır?
Logaritmaya geçmeden önce üslü ifadelerin temel kurallarını hatırlayalım. Bu kuralları ezberlemek yerine çarpmanın yapısına bakarsak neden doğru olduklarını görebiliriz.
Örneğin \(2^3\cdot2^2\) ifadesi:
olur. Solda üç, sağda iki tane \(2\) çarpanı vardır; toplamda beş tane \(2\) elde ederiz. Bu nedenle aynı tabanlı kuvvetler çarpılırken üsler toplanır.
| Kural | Anlamı |
|---|---|
| \(b^m b^n=b^{m+n}\) | Aynı tabanlar çarpılırsa üsler toplanır. |
| \(\displaystyle\frac{b^m}{b^n}=b^{m-n}\) | Aynı tabanlar bölünürse üsler çıkarılır. |
| \((b^m)^n=b^{mn}\) | Kuvvetin kuvvetinde üsler çarpılır. |
| \((ab)^n=a^nb^n\) | Çarpımın kuvveti iki çarpana da dağılır. |
| \(b^{-n}=\displaystyle\frac{1}{b^n}\) | Negatif üs tersini alır. |
Logaritmanın çarpımı nasıl toplamaya dönüştürdüğünü bu kurallarla açıklayacağız. Önce bir sınırı görelim: Kuvvet, toplamın üzerine aynı biçimde dağılmaz. Genel olarak:
Örneğin \((2+3)^2=25\), fakat \(2^2+3^2=13\)'tür.
Özel Bir Taban: Euler Sayısı \(e\)
Matematikte \(2\), \(10\) veya başka bir pozitif sayıyı üstel fonksiyonun tabanı olarak kullanabiliriz. Buna rağmen yaklaşık \(2.71828\) değerindeki bir sayı, doğal büyüme ve değişim problemlerinde özel bir yere sahiptir. Bu sayıya Euler sayısı denir ve \(e\) harfiyle gösterilir.
\(e\)'nin nereden geldiğini görmek için bir liralık hayali bir birikime yıl boyunca yüzde 100'lük bir artış payı ayırdığımızı düşünelim. Bu pay yıl sonunda tek seferde uygulanırsa:
olur. Aynı yıllık oranı iki parçaya bölüp altı ayda bir uygularsak her seferinde yüzde 50 artış olur:
Artışı daha sık, fakat her seferinde daha küçük parçalar halinde uygularsak sonuçlar şöyle ilerler:
| Yıldaki Uygulama Sayısı \(n\) | \(\left(1+\frac{1}{n}\right)^n\) |
|---|---|
| 1 | 2 |
| 2 | 2.25 |
| 4 | Yaklaşık 2.4414 |
| 12 | Yaklaşık 2.6130 |
| 365 | Yaklaşık 2.7146 |
Uygulama sayısı arttıkça değer yaklaşık \(2.71828\)'e yaklaşır. Limit konusunda bu yaklaşmayı kesin olarak tanımlayacağız. Şimdilik \(e\)'yi sürekli büyüme ve azalma modellerinde karşımıza çıkan taban olarak tanıyalım.
Sürekli değişim gösteren pek çok model şu biçimde yazılır:
Burada \(k\), değişimin yönünü ve hızını belirleyen sabittir. \(k>0\) olduğunda miktar büyür, \(k<0\) olduğunda azalır. Türev konusuna geldiğimizde \(e^x\)'in anlık değişim hızının yine \(e^x\) olduğunu göreceğiz.
Logaritma Hangi Soruyu Cevaplar?
Başlangıç miktarını, çarpanı ve adım sayısını biliyorsak üstel fonksiyonla sonucu buluruz. Sonucu bildiğimizde ise kaç adım geçtiğini sorabiliriz. En basit örnek şu:
“\(2\)'yi kaçıncı kuvvete yükseltirsek \(8\) olur?” sorusunun cevabı \(3\)'tür. Çünkü \(2^3=8\). Logaritma, tam olarak bu bilinmeyen üssü bulur:
Bu ifade “2 tabanında 8'in logaritması 3'tür” diye okunur. Üstel ve logaritmik gösterim aynı bilgiyi iki farklı yönden söyler:
Burada:
- \(b\), tabandır.
- \(x\), elde edilen pozitif sonuçtur.
- \(y\), aradığımız üstür.
Reel sayılarla çalıştığımız bu eşdeğerlikte \(b>0\), \(b\ne1\) ve \(x>0\) olmalıdır. Aradığımız \(y\) ise negatif, pozitif veya sıfır olabilir.
Logaritma, üstel ifadede üssü soran işlemdir.
| Üstel Cümle | Aynı Cümlenin Logaritmik Hali |
|---|---|
| \(10^3=1000\) | \(\log_{10}1000=3\) |
| \(2^5=32\) | \(\log_2 32=5\) |
| \(5^0=1\) | \(\log_5 1=0\) |
| \(3^{-2}=1/9\) | \(\log_3(1/9)=-2\) |
Üstel ve Logaritmik Fonksiyonlar Birbirini Geri Alır
Fonksiyonlar makalemizde bir işlemi tersine çeviren fonksiyonlara ters fonksiyon demiştik. Toplamanın tersinin çıkarma, çarpmanın tersinin bölme olması gibi logaritma da üs alma işlemini geri alır.
Örneğin önce \(2^4=16\) hesaplayıp ardından \(\log_2 16\) alırsak yeniden \(4\)'e döneriz:
Ters yönde de aynı ilişki vardır:
Bu iki fonksiyonun grafikleri de \(y=x\) doğrusu boyunca birbirinin ayna görüntüsüdür. Üstel fonksiyon bütün gerçek sayıları girdi olarak alıp yalnızca pozitif sonuçlar üretirken, logaritma yalnızca pozitif girdileri alıp bütün gerçek sayıları sonuç olarak üretebilir.
| Özellik | \(b^x\) | \(\log_b x\) |
|---|---|---|
| İzin verilen girdiler | Bütün gerçek sayılar | Yalnızca \(x>0\) |
| Olası çıktılar | Yalnızca pozitif sayılar | Bütün gerçek sayılar |
| Temel eşleşme | \(b^0=1\) | \(\log_b1=0\) |
Reel sayılar içinde sıfırın veya negatif bir sayının logaritmasını alamayız. Çünkü pozitif bir tabanın hiçbir gerçek kuvveti sıfır veya negatif sonuç vermez. Örneğin \(2^y=-4\) denklemini sağlayan gerçek bir \(y\) yoktur.
En Sık Kullanılan Logaritma Tabanları
Logaritmanın tabanı, hangi sayıyı kaçıncı kuvvete yükselttiğimizi belirler. En sık şu tabanlarla karşılaşırız:
- 10 tabanı: \(\log_{10}x\), sayının 10'un kaçıncı kuvveti olduğunu sorar. Onluk sayı sistemimiz nedeniyle günlük ölçülerde kullanışlıdır.
- 2 tabanı: \(\log_2x\), sayının 2'nin kaçıncı kuvveti olduğunu sorar. İkili sistemle çalışan bilgisayarlarda sık görülür.
- \(e\) tabanı: \(\log_e x\), doğal logaritma olarak adlandırılır ve \(\ln x\) biçiminde yazılır.
Bazı kitaplar ve hesap makineleri \(\log x\) yazdığında 10 tabanını, bazı matematik ve yazılım ortamları ise doğal logaritmayı kasteder. Bu nedenle taban açıkça yazılmamışsa kullanılan kaynağın kabulünü kontrol etmek gerekir. Bu makalede \(\ln x\) her zaman \(e\) tabanındaki logaritmayı gösterecektir.
Logaritma Kuralları: Çarpımı Toplama Dönüştürmek
Logaritma çarpımı toplamaya dönüştürür. Bunun nedenini üslü ifadeler üzerinden görebiliriz.
\(x=b^m\) ve \(y=b^n\) olsun. Bu iki sayıyı çarparsak:
elde ederiz. \(xy\)'nin \(b\) tabanındaki logaritması, yani onu oluşturmak için gereken üs, \(m+n\)'dir:
Benzer düşünceyle temel logaritma kuralları ortaya çıkar. Aşağıdaki kurallarda \(x>0\), \(y>0\), \(b>0\) ve \(b\ne1\) olmalıdır:
| İşlem | Logaritma Kuralı |
|---|---|
| Çarpım | \(\log_b(xy)=\log_bx+\log_by\) |
| Bölüm | \(\displaystyle\log_b\left(\frac{x}{y}\right)=\log_bx-\log_by\) |
| Kuvvet | \(\log_b(x^r)=r\log_bx\) |
Örneğin:
Gerçekten de \(8\cdot4=32\) ve \(2^5=32\)'dir.
Taban Değiştirme Kuralı
Hesap makinemizde yalnızca \(\ln\) ve \(\log_{10}\) tuşları bulunabilir. Peki \(\log_2 7\) gibi başka bir tabanı nasıl hesaplayacağız?
Herhangi bir geçerli \(c\) tabanını kullanarak:
yazabiliriz. Özellikle doğal logaritmayı seçersek:
olur. Örneğin:
\(2^2=4\) ve \(2^3=8\) olduğundan sonuç 2 ile 3 arasında olmalı. Bulduğumuz \(2.807\) bu aralıkta.
Üstel Denklemleri Logaritmayla Çözmek
Bilinmeyen üst kolayca görülebiliyorsa logaritma yazmadan da çözüm bulabiliriz:
Çünkü \(2^3=8\)'dir. Her sonuç böyle tanıdık bir kuvvet vermez. Başlangıçta \(1.000\) TL bulunan ve her yıl yüzde 6 büyüyen bir birikim ne zaman \(1.500\) TL'ye ulaşır?
Önce iki tarafı \(1000\)'e bölelim:
Bilinmeyen \(t\) üstte olduğu için iki tarafın doğal logaritmasını alalım:
Kuvvet kuralı sayesinde \(t\)'yi logaritmanın önüne indirebiliriz:
Son olarak iki tarafı \(\ln(1.06)\)'ya böleriz:
Bu sade modele göre miktar yaklaşık \(6.96\) yıl sonra \(1.500\) TL'ye ulaşır.
Aynı yöntem iki katına çıkma süresini de verir. Her adımda yüzde 8 büyüyen bir miktarın iki katına çıkması için:
adım gerekir. Azalan bir miktarın yarıya düşme süresi de benzer biçimde hesaplanır. Her adımda yüzde 25 azalan, yani \(0.75\) ile çarpılan bir miktar için:
buluruz. İki katına çıkma süresinde de yarı ömürde de sonucu biliyor, o sonuca ulaşmak için kaç kez çarpmamız gerektiğini logaritmayla hesaplıyoruz.
Veriden Üstel Model Kurmak
Bazen başlangıç miktarını ve birkaç ölçümü bilir, fakat her adımda uygulanan çarpanı bilmeyiz. Örneğin bir miktar başlangıçta \(200\), üç adım sonra \(345.6\) olsun. Sürecin üstel olduğunu varsayarak:
yazarız. Üçüncü adımdaki değeri yerine koyalım:
Çarpan \(1.2\) olduğuna göre miktar her adımda yüzde 20 büyümektedir. Modelimiz:
olur. Burada küpkökü doğrudan hesaplayabildik; daha karmaşık sayılarda çarpanı logaritmayla da bulabiliriz.
Çok Büyük Aralıkları Sıkıştırmak
Logaritma, farklı büyüklükteki sayıları daha dar bir aralıkta karşılaştırmamıza da yardım eder.
| Sayı | 10 Tabanındaki Logaritması |
|---|---|
| \(1\) | \(0\) |
| \(10\) | \(1\) |
| \(1000\) | \(3\) |
| \(1.000.000\) | \(6\) |
Asıl sayılar \(1\) ile \(1.000.000\) arasında dağılırken logaritmaları \(0\) ile \(6\) arasındadır. Bu yüzden büyüklükleri çok geniş bir aralığa yayılan verilerde logaritmik ölçek kullanmak yararlı olabilir.
Logaritmik ölçekte eşit aralıklar, eşit farkları değil eşit oranları temsil eder. \(1\)'den \(10\)'a geçmek ile \(100\)'den \(1000\)'e geçmek arasında sayısal fark bakımından büyük ayrım vardır; fakat her ikisi de on kat artıştır. 10 tabanındaki logaritma bu iki hareketi birer birimlik artış olarak gösterir.
Bu dönüşüm verideki büyük değerlerin etkisini azaltabilir ve çarpımsal ilişkileri daha görünür hale getirebilir. Ancak sıfır ve negatif değerlerin reel logaritması olmadığı için veri dönüştürürken alanı dikkatle kontrol etmek gerekir.
Yapay Zekâda Neden Logaritma Kullanılır?
Yapay zekâ modelleri bir olay dizisinin olasılığını hesaplarken çok sayıda küçük olasılığı çarpabilir. Dizi uzadıkça sonuç hızla küçülür.
Basit bir örnek olarak aynı \(0.8\) olasılığını tekrar tekrar çarpalım:
On çarpımdan sonra sayı hâlâ okunabilir durumdadır. Fakat bin çarpımdan sonra:
gibi son derece küçük bir sayı oluşur. Daha uzun çarpımlarda bilgisayarın sınırlı sayı hassasiyeti bu değeri sıfır sanabilir. Buna sayısal alt taşma (underflow) denir.
Logaritma çarpımı toplama dönüştürdüğü için aynı hesabı daha güvenli bir biçimde yapabiliriz:
\(10^{-97}\) büyüklüğündeki bir sayıyı saklamak yerine \(-223.14\) gibi yönetilebilir bir sayıyla çalışırız. Bu nedenle olasılıksal modellerde çoğu zaman doğrudan olasılık değil, logaritmik olasılık (log probability) hesaplanır.
Böylece küçük olasılıkları doğrudan çarpmak yerine logaritmalarını toplarız.
Doğru Cevaba Verilen Olasılık ve Kayıp
Bir sınıflandırma modelinin bir görsel için “kedi yüzde 90, köpek yüzde 10” dediğini düşünelim. Gerçek cevap kedi ise doğru sınıfa verilen olasılık \(p=0.9\)'dur. Modeli eğitirken doğru cevaba yüksek olasılık vermesini isteriz.
Bu amacı ölçmenin yaygın yollarından biri doğru sınıf olasılığının negatif doğal logaritmasını almaktır:
Burada \(L\), modelin tek örnekteki kayıp değerini; \(p\) ise doğru cevaba verdiği olasılığı gösterir.
| Doğru Sınıf Olasılığı \(p\) | Kayıp \(-\ln(p)\) |
|---|---|
| 0.90 | Yaklaşık 0.105 |
| 0.50 | Yaklaşık 0.693 |
| 0.10 | Yaklaşık 2.303 |
| 0.01 | Yaklaşık 4.605 |
Model doğru cevaba yüksek olasılık verdiğinde kayıp küçüktür. Doğru cevaba çok düşük olasılık verdiğinde kayıp büyür. Özellikle model yanlış cevabından çok emin olduğunda, yani doğru sınıf olasılığı sıfıra yaklaştığında ceza sınırsız büyür.
İleride işleyeceğimiz çapraz entropi (cross-entropy) kaybı da bu fikre dayanır. Negatif logaritma, doğru sınıfa verilen olasılığı eğitimde kullanılacak bir kayıp değerine dönüştürür.
Üstel Fonksiyon Olasılığa Nasıl Dönüşür? Sigmoid
Bir yapay zekâ modeli karar vermeden önce \(-3\), \(0.7\) veya \(12\) gibi herhangi bir gerçek sayı üretebilir. Olasılık ise \(0\) ile \(1\) arasında olmalıdır. Üstel fonksiyonla, bu ham puanları söz konusu aralığa taşıyan bir dönüşüm kurabiliriz.
İki sınıflı problemlerde sık kullanılan sigmoid fonksiyonu şöyledir:
Buradaki \(z\), modelin ham puanıdır. \(\sigma\) ise Yunanca sigma harfidir ve fonksiyona verilen kısa addır.
| Ham Puan \(z\) | \(\sigma(z)\) |
|---|---|
| \(-2\) | Yaklaşık 0.119 |
| \(0\) | 0.500 |
| \(2\) | Yaklaşık 0.881 |
Negatif ham puanlar \(0\)'a yakın, pozitif ham puanlar \(1\)'e yakın sonuç üretir. \(z=0\) olduğunda:
olur. Sigmoid tek başına bir tahminin doğru olduğunu garanti etmez; yalnızca modelin ham puanını olasılık gibi yorumlanabilecek bir aralığa dönüştürür.
Birden Fazla Sınıfta Softmax
Şimdi modelin kedi, köpek ve kuş sınıflarına sırasıyla \(2\), \(1\) ve \(0\) ham puanlarını verdiğini düşünelim. Bu puanların toplamı \(1\) olmak zorunda değildir; dolayısıyla doğrudan bir olasılık dağılımı oluşturmazlar.
Softmax fonksiyonu her puanın üstelini alır ve sonra her birini toplam üstel değere böler:
Burada \(z_i\), \(i\) numaralı sınıfın ham puanı; \(p_i\) ise aynı sınıfa verilen olasılıktır. Paydadaki \(\sum\) işareti bütün sınıfların üstel değerlerini toplamamız gerektiğini söyler.
Örneğimizde:
ve toplam yaklaşık \(11.107\)'dir. Bölme işlemlerini yaptığımızda:
| Sınıf | Ham Puan | Softmax Olasılığı |
|---|---|---|
| Kedi | 2 | Yaklaşık 0.665 |
| Köpek | 1 | Yaklaşık 0.245 |
| Kuş | 0 | Yaklaşık 0.090 |
Olasılıkların toplamı \(1\)'dir. En büyük ham puan en yüksek olasılığı alır; diğer sınıflar da sıfır olmayan paylara sahip olur.
Çok büyük ham puanların üstelini hesaplamak bilgisayarda taşmaya yol açabilir. Softmax, bütün puanlardan aynı sayıyı çıkardığımızda değişmez. Bu yüzden \(2,1,0\) puanlarından en büyük değer olan \(2\)'yi çıkarıp \(0,-1,-2\) kullanabiliriz:
Olasılıklar aynı kalırken hesaplanan üstel değerler küçülür; bu da taşma riskini azaltır.
Bir Sonraki Yazıya Hazırlık: Üstel Fonksiyon ve Hiperbolik Tanjant
Bir sonraki makalemizde Trigonometri konusuna geçeceğiz. Sinüs ve kosinüs gibi çemberle ilişkili fonksiyonların yanında, yapay sinir ağlarında kullanılan hiperbolik tanjant fonksiyonuna da kısa bir pencere açacağız.
Hiperbolik tanjant, üstel fonksiyonlarla şöyle kurulabilir:
Formülü şimdilik hesaplamalarda kullanmayacağız. Üstel ifadelerin ileride farklı fonksiyonların içinde de karşımıza çıkacağını gösteriyor.
Sık Yapılan Hatalar
- Üstel büyümeyi yalnızca hızlı büyüme sanmak: Matematiksel ölçüt hız değil, eşit adımlarda aynı çarpanın uygulanmasıdır.
- Başlangıç değerini unutmak: Genel model yalnızca \(b^t\) değil, \(A_0b^t\)'dir. \(b^t\), başlangıç değeri \(1\) olan özel durumdur.
- Yüzdeyi doğrudan taban yapmak: Yüzde 8 büyümede taban \(0.08\) değil \(1.08\), yüzde 8 azalmada ise \(0.92\)'dir.
- Üstel azalma sıfıra ulaştı demek: Pozitif başlangıç değerli temel model sonlu zamanda sıfır olmaz; sıfıra yaklaşır.
- Negatif tabanı genel üstel fonksiyon sanmak: \((-2)^x\) her gerçek \(x\) için reel sonuç üretmez. Bu nedenle reel üstel fonksiyonlarda taban pozitiftir.
- Logaritmanın tabanını unutmak: \(\log_2 8\) ile \(\log_{10}8\) farklı sorular sorar ve farklı sonuçlar verir.
- Sıfırın veya negatif sayının reel logaritmasını almak: \(\log_bx\) için \(x>0\) olmalıdır.
- Logaritmayı toplamın üzerine dağıtmak: Çarpım için kural vardır; \(\log(x+y)=\log x+\log y\) doğru değildir.
- Bir modeli sınırsız geleceğe taşımak: Sabit yüzde varsayımı kaynaklar, kapasite ve koşullar değiştiğinde bozulabilir.
- Bilgisayardaki küçük ve büyük sayıları önemsememek: Çok sayıda olasılığı çarpmak alt taşmaya, çok büyük üsler almak taşmaya yol açabilir. Logaritmik hesap ve kararlı softmax düzenlemeleri bu nedenle kullanılır.
Hangi Soruda Hangi Araç?
- Her adımda aynı miktar ekleniyorsa doğrusal bir ilişki düşün.
- Her adımda aynı yüzde veya çarpan uygulanıyorsa üstel bir model düşün.
- Başlangıç, çarpan ve adım sayısı biliniyorsa \(A(t)=A_0b^t\) ile sonucu hesapla.
- Sonuç biliniyor ama kaç adım gerektiği bilinmiyorsa logaritma kullan.
- Çok geniş büyüklük aralıklarını karşılaştırıyorsan logaritmik ölçeğin oranları görünür hale getirip getirmediğine bak.
- Çok sayıda küçük olasılığı çarpıyorsan logaritmik olasılıklarla toplamaya geçmeyi düşün.
- Model ham puanlarını olasılığa çevirmek istiyorsan problemin yapısına göre sigmoid veya softmax gibi üstel temelli dönüşümlerle karşılaşacağını hatırla.
Bir model seçmeden önce değişimin nasıl gerçekleştiğine bakmalıyız: Her adımda aynı sayı mı ekleniyor, aynı oran mı uygulanıyor, yoksa oran zamanla değişiyor mu? Grafiğin görünüşü kadar, veriyi üreten süreç de önemlidir.
Sonuç
Bu makalede doğrusal değişim ile üstel değişim arasındaki temel ayrımdan başladık. Aynı miktarı eklemek ile mevcut miktarı aynı oranla çarpmanın birkaç adım sonra neden çok farklı sonuçlar doğurduğunu gördük. Başlangıç değeri, çarpan ve zamanı \(A(t)=A_0b^t\) modelinde bir araya getirdik; sıfır, negatif ve kesirli üslerin anlamını inceledik.
Yüzde büyümesini \(1+r\), yüzde azalmasını \(1-r\) çarpanına dönüştürdük. Euler sayısı \(e\)'nin sürekli büyüme fikrinden nasıl doğduğuna baktık. Ardından logaritmayı “hangi üs?” sorusunun cevabı olarak tanıdık ve üstel fonksiyonun ters işlemi olduğunu gördük. Logaritma kurallarıyla çarpımların toplama, bölümlerin çıkarmaya ve kuvvetlerin katsayıya dönüştüğünü adım adım kurduk.
Yapay zekâdaki örneklerde logaritma, çok küçük olasılıklarla hesap yapmayı ve model kaybını hesaplamayı kolaylaştırdı. Üstel fonksiyonu da sigmoid ve softmax dönüşümlerinde, ham model puanlarını olasılık aralığına taşırken kullandık.
Büyüyen ve azalan süreçleri, geniş sayı aralıklarını ve “bu sonuca kaç adımda ulaşılır?” sorusunu artık matematiksel olarak ifade edebiliyoruz. Bir sonraki Trigonometri makalemizde açılara, dönüşlere ve tekrar eden hareketlere geçeceğiz. Sinüs, kosinüs ve tanjantın geometrik ilişkileri ve yapay zekâdaki bazı dönüşümleri nasıl anlattığını inceleyeceğiz.
Yazar: Levent KARAGÖL

