Yapay zeka sistemlerinin temelini oluşturan matematiksel araçlar arasında, üstel ve logaritmik fonksiyonlar kritik bir role sahiptir. Bu fonksiyonlar, hızlı büyüme ve çürüme süreçlerini modellemekten, büyük veri aralıklarını yönetilebilir ölçeklere indirgemeye ve bilgi teorisinin temelini oluşturmaya kadar geniş bir yelpazede kullanılır. Bu makalede, bu iki fonksiyon ailesinin matematiksel tanımlarını, temel özelliklerini ve aralarındaki ilişkiyi inceleyeceğiz.
Üstel Fonksiyon Nedir?
Üstel fonksiyonlar, bir nicelikteki değişimin, o niceliğin mevcut değeriyle orantılı olduğu durumları matematiksel olarak ifade eder. Genel formülü aşağıdaki gibidir:
Bu denklemde:
- a - Taban: \(a>0 \land a \not = 1\) koşullarını sağlayan pozitif bir reel sayıdır.
- x - Üs: Fonksiyonun bağımsız değişkenidir.
Peki, şimdi resmiyeti bir kenara bırakalım ve soralım. Böylece bir şeye neden ihtiyacımız vardı? Polinom fonksiyonlar neyimize yetmiyordu?
Konuyu bir örnek üzerinden işleyelim. Diyelim ki, bölünerek çoğalan bir bakterinin yüzeydeki sayısını modelliyoruz. İlk başta 2 bakterimiz var. Sonra bölünüyorlar ve 4 oluyorlar. Ardından bunlar da bölünüyor ve 8 oluyor. Bu şekilde 16, 32, 64, 128, 256, 512, 1024... gittikçe gidiyor. Böyle bir grafiği poliniom fonksiyon ile modellemek mümkün değil çünkü bu grafik üstel şekilde artıyor. Artış yavaş başlıyor ve inanılmaz bir hızla yükseliyor.
Benzer şekilde diyelim ki, bu bakterilerin ortamdaki gıdayı tüketmeleri sonucu gıda miktarının değişimini modelliyoruz. Bu da ilk başlarda yavaş azalan, ama bakteri sayısı arttıkça inanılmaz bir hızla düşüşe geçip sıfırı bulan bir grafik olacaktır.
İşte bu tarz, değişimi üstel karakteristik gösteren grafiklerin modellemelerinde x bağımsız değişkenimizi tabandan alıp üste taşırız. Tabana da, her seferinde kaç kat artacağı veya azalacağı bilgisini yazarız.
Üstel fonksiyonlarda tabana yazılan pozitif reel sayı için;
- a > 1 ise: Fonksiyon üstel büyüme gösterir. \(x\) arttıkça \(f(x)\)'in değeri de hızla artar.
- 0 < a < 1 ise: Fonksiyon üstel küçülme gösterir. \(x\) arttıkça \(f(x)\)'in değeri de hızla sıfıra yaklaşır.
Euler Sayısı (e) ve Doğal Üstel Fonksiyon
Matematik ve mühendislikte en sık kullanılan taban, irrasyonel bir sayı olan Euler sayısıdır (\(e \approx 2.71828\)). \(f(x) = e^x\) fonksiyonu, "doğal üstel fonksiyon" olarak adlandırılır. Bu fonksiyonun en önemli özelliği, herhangi bir x noktasındaki türevinin (anlık değişim hızının) yine kendisine eşit olmasıdır: \(\frac{d}{dx}e^x = e^x\). Bu özellik, onu sürekli büyüme süreçlerinin modellenmesinde vazgeçilmez kılar.
Yapay sinir ağlarında çok kullanılan Sigmoid fonksiyonunun matematiksel formülünde \(e\) tabanlı üstel fonksiyon kullanılır:
\( S(x) = \frac{1}{1 + e^{-x}} \)
Benzer şekilde sınıflandırma problemlerinde sıkça kullanılan Softmax fonksiyonunda da \(e\) tabanlı üstel fonksiyon kullanılır:
\( Softmax(x_i) = \frac{e^{x_i}}{\sum_{j} e^{x_j}} \)
Üstel Fonksiyonların Temel Kuralları
Üstel fonksiyonların birbirlerine dönüşümleri ile ilgili bazı kurallar vardır. Her ne kadar hesaplamayı bizim yerimize bilgisayar yapacak olsa da, farklı formüllere kapı açması adına bu kuralları bilmekte fayda var.
Çarpma Kuralı: Tabanlar aynıysa, üsler toplanır.
Örnek: \(2^3 \cdot 2^4 = 2^{3+4} = 2^7 = 128\)
Bölme Kuralı: Tabanlar aynıysa, payın üssünden paydanın üssü çıkarılır.
Örnek: \(\frac{3^5}{3^2} = 3^{5-2} = 3^3 = 27\)
Üssün Üssü Kuralı: Bir üslü ifadenin tekrar üssü alındığında, üsler çarpılır.
Örnek: \((5^2)^3 = 5^{2 \cdot 3} = 5^6 = 15625\)
Çarpımın Üssü Kuralı: Farklı tabanların çarpımının üssü, her bir tabanın ayrı ayrı üslerinin çarpımına eşittir.
Örnek: \((2 \cdot 3)^4 = 2^4 \cdot 3^4 = 16 \cdot 81 = 1296\)
Logaritmik Fonksiyonlar
Logaritmik fonksiyon, üstel fonksiyonun tersi olarak tanımlanır. "Bir tabanı, belirli bir sonuca ulaşmak için hangi üsse yükseltmemiz gerekir?" sorusuna cevap verir. Genel formülü aşağıdaki gibidir:
Bu denklemde:
- a - Taban: Logaritmanın tabanıdır.
- y - Argüman: Logaritması alınan sayıdır ve pozitif olmalıdır (\(y>0\)).
- x - Sonuç: \(y\) sayısını elde etmek için \(a\) tabanının yükseltilmesi gereken üssü ifade eder.
Yine resmiyeti bir kenara bırakalım ve böylece bir şeye neden ihtiyacımız olduğunu sorgulayalım.
Diyelim ki az önceki bakteri çoğalım modelini grafikte gösterdik. \(2^{20}\) değerine kadar ölçüm yaptık ve sonuçları çizgi grafik formatında gösterdik. Ölçtüğümüz sayılar sırasıyla 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576 şeklindeydi.
Sorun şu ki, grafiğin üst kısmı 1 milyondan daha büyük bir sayıyı gösteriyor. Bu şartlar altında x = 1 ile x = 15 arasında gözle görülür bir fark olmayacaktır. Bu tarz üstel büyümelerde grafiğin sonu, geri kalan kısmı ayırt edilemeyecek seviyede küçültür ve anlamsızlaştırır.
Bize öyle bir gösterim lazım ki, hem küçük sayıları görebilelim, hem de grafiğin en sonunu aynı grafik üzerinde gözlemleyebilelim. İşte logaritmik gösterim böyle bir ihtiyaca cevap verir. Logaritmik gösterimde, grafiğin y eksenini logaritmik ölçekte çizeriz. Bu durumda, y eksenindeki her birim artış, y'nin tabanına göre katlanarak artması anlamına gelir. Örneğin, taban 10 ise, y eksenindeki 1 birim artış 10 kat artışı, 2 birim artış 100 kat artışı, 3 birim artış ise 1000 kat artışı ifade eder. Aynı grafikte hem 10 kat, hem de 1000 kat artışı görebilir hale geliriz.
Özellikle sınıflandırma modellerinde kullanılan Cross-Entropy Loss, modelin tahminlerinin gerçek olasılık dağılımından ne kadar farklı olduğunu ölçmek için logaritmayı kullanır. Logaritma, düşük olasılıkla tahmin edilen doğru sınıflar için kaybı üstel olarak artırır.
\( L = -\sum_i y_i \log(\hat{y}_i) \)
Benzer şekilde ikili sınıflandırma için kullanılan Binary Cross-Entropy Loss fonksiyonu da logaritmayı kullanır.
\( L = - \frac{1}{N} \sum_{i=1}^{N} [y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i)] \)
Doğal Logaritma (ln)
En yaygın kullanılan logaritma tabanları 10 (genel bilim) ve elbette \(e\)'dir. \(e\) tabanındaki logaritmaya "Doğal Logaritma" denir ve \(ln(x)\) olarak gösterilir.
Logaritmik Fonksiyonların Temel Kuralları
Üstel fonksiyonlara benzer şekilde logaritmik fonksiyonların da birbirlerine dönüşümleri ile ilgili bazı kurallar vardır. Farklı formüllere kapı açması adına bu kuralları bilmekte fayda var.
Çarpımın Logaritması (En Önemli Kural!): Bir çarpımın logaritması, çarpanların logaritmaları toplamına eşittir..
Örnek: \(\log_{10}(1000) = \log_{10}(100 \cdot 10) = \log_{10}(100) + \log_{10}(10) = 2 + 1 = 3\)
Bölümün Logaritması: Bir bölümün logaritması, payın logaritmasından paydanın logaritmasının çıkarılmasıyla bulunur.
Örnek: \(\ln\left(\frac{e^5}{e^2}\right) = \ln(e^5) - \ln(e^2) = 5 - 2 = 3\)
Üssün Logaritması: Bir ifadenin üssü, logaritmanın başına bir çarpan olarak indirilebilir.
Örnek: \(\log_2(8^3) = 3 \cdot \log_2(8) = 3 \cdot 3 = 9\)
Taban Değiştirme Kuralı: Farklı tabandaki bir logaritmayı, istediğimiz (genellikle 10 veya \(e\)) bir tabana çevirmemizi sağlar.
Örnek: \(\log_4(64)\) değerini \(e\) tabanında hesaplamak için: \(\frac{\ln(64)}{\ln(4)} \approx \frac{4.158}{1.386} \approx 3\)
Yapay Zeka Gözüyle Logaritmik Fonksiyonlar
Bu kurallar sadece lise müfredatından kalma teorik bilgiler değildir. Özellikle logaritmanın çarpımı toplama dönüştürme özelliği, modern makine öğrenmesinin temel taşlarından biridir.
Düşünelim: Bir modelin bir veri setindeki her bir veri noktası için doğru tahminde bulunma olasılığını hesaplamak istediğimizde, bu olasılıkları (genellikle 0 ile 1 arasında çok küçük sayılar) birbiriyle çarpmamız gerekir.
Binlerce küçük sayıyı çarpmak, bilgisayarlarda "sayısal alt taşma" (numerical underflow) denen bir soruna yol açar; yani sonuç o kadar küçülür ki bilgisayar onu sıfır olarak kabul eder ve tüm bilgi kaybolur.
Ancak her iki tarafın da logaritmasını alırsak ne olur?
Çarpımın logaritması kuralı sayesinde bu ifade şuna dönüşür:
Böylece tehlikeli bir çarpma işlemi, sayısal olarak çok daha kararlı ve yönetilebilir bir toplama işlemine dönüşür. Makine öğrenmesindeki "Log-Likelihood" kavramının ve birçok kayıp fonksiyonunun temelinde yatan fikir tam olarak budur.
Yazar: Levent KARAGÖL