TR |Siber Güvenlik Teknolojileri Yapay Zeka Tarafından Nasıl Şekillendirilecek? — Bölüm 1: Matematik… Daha Çok Matematik!
Bu serimde yapay zekanın Siber güvenlik teknolojileri ve araçlarını nasıl şekillendirebileceğini, geliştirebileceğini ve rafa kaldırabileceğini inceleyeceğim. ilk bölümde öncelikle günümüzde yapay zeka sistemlerinin nasıl çalıştığına detaylı olarak göz atacağız; Derin öğrenme ve yapay sınır ağının katmanları, katmanlar arası veri girdilerinin oluşumunu, ReLU ve Softmax aktivasyon fonksiyonlarını, ağırlık akışını, forward ve backward pass’i ayrıca bir girdinin hangi matematik işlemlerden geçirilip olasılık hesaplaması yapıldığını göreceğiz.
Yapay zekânın (YZ) arkaplanında ki yapısı, insan zekâsının belirli yönlerini bilgisayar sistemleri aracılığıyla taklit ve simüle etmeye veya otomatikleştirmeye yönelik işlemlerin gerçekleştiği bir dünyadır. Bilinen evrenin en kompleks ve karmaşık yapısı olan insan beyni, matematik işlemler ve teorik yaklaşımlarla idrak edip cevap üretebilen bir yapıya evriltilmeye çalışılıyor. Ama nasıl?
Son yıllarda yapay zekâ alanındaki en çok kullanılan ve gelişmiş yapı derin öğrenmedir. Derin öğrenme, birbiri ardına dizilmiş çok katmanlı yapay sınır ağlarının kullanımıyla karmaşık fonksiyonları öğrenmeyi sağlar.
Buradaki yapı Lineer Cebir, Matris Hesaplamaları ve Türev Alma, Optimizasyon Teorisi, Diferansiyellenebilirlik, Konveks Olmayan Optimizasyon gibi matematiksel yapı taşlarından oluşur.
Bu işleyişin detaylarına inmeden önce ilk adımda katmanlara bir bakalım. Yapay sınır ağlarını, bir dizi nöron dediğimiz hesaplama birimlerinin katmanlar halinde bir araya getirilerek organize edilmesiyle oluşur.
- Input layer: Ham veriyi (resim pikselleri, metin, sayısal değerler vb.) modele veren katmandır.
- Hidden layers: Bu katmanda ise verinin anlamlı veri setlerine dönüştürülmesi gerçekleşir. Derin öğrenme modellerinde özellikle bu katmanların sayısı yüzlerce hatta binlerce katmana kadar çıkabilir. Her katman, bir önceki katmandan aldığı veriyi işler, ardından bir dizi weight ve aktivasyon fonksiyonu aracılığıyla dönüştürür.
- Output layer: Son olarakta dönüştürülen veriden nihai tahmin, sınıflandırma veya çıktı değerleri bu katmanda üretilir.
Genellikle yapay sınır ağlarındaki katmanlarda akış iki yönde ilerler: ilki forward pass ve diğeri backward pass’dir. Bu akışların her biri modelin sınır ağlarının nasıl çalıştığı ve modelin nasıl öğrendiği konusunda kritik rol ve öneme sahiptir. İleri yönlü akış, ham verinin katmanlar boyunca giriş katmanından çıkış katmanına kadar ilerlediği yapıdır. Akışta öncelikle giriş katmanına ham veriler yani bir resmin pikselleri, bir metin dizisi gibi veriler gelir. Gelen bu veri, her katmandaki nöronlarda saklı olan ağırlıklar ve aktivasyon fonksiyonları aracılığıyla işlenirler. Gelen bu veri her bir noronda ilgili ağırlıklarla çarpılır ve sonuçlar toplanarak bir bias (yanlılık) değeri ekler. Çıkan değeri, aktivasyon fonksiyonu doğrusal olmayan bir dönüşüme tabi tutar. Ortaya çıkan çıktı değerleri bir sonraki katmanın girdi değerine dönüşerek katman boyu bu şekilde sırasıyla gizli katmanlar boyunca ilerler. Her gizli katman, veriyi daha soyut ve anlamlı özelliklere dönüştürerek işlemlerine devam eder. En sonunda işlenmiş veriler, çıkış katmanına ulaştığında ağın tahmini, sınıflandırma sonucu veya regresyon çıktısı elde edilir. İleri yönlü akış sürecinde aslında bir “öğrenme” olmuyor, mevcut ağırlık değerlerine göre bir hesaplama (tahmin) yapılıyor. Bunu birde bir örnekte matematiksel olarak inceleyelim. Örnek bir metnimiz olsun. Mesela “Alican Kiraz” bu girdinin örneğin 5 katmanda nasıl ilerlediğine ve çıkışa ulaştığına bakalım.
Beş katmandan oluşan; 4 gizli katman ve 1 çıkış katmanı olan basit bir tam bağlantılı yapay sınır ağı içindeki ilerleyiste orneklendirelim. Bu arada bu teorik olarak bir gösterme olacak çünkü gerçek bir ağda metnin sayısal temsilini elde etmek için embedding, kelime-vektör dönüştürmeleri veya dil modelleri kullandığından daha farklıdır. Ama teori aynı sayılabilir.
Girdimiz olan (“Alican Kiraz”)’in → Sayısal vektör temsilinde farz edelim ki metnimiz bir on işlemden geçti ve 3 boyutlu bir vektörle temsil edilmiş olsun:
Ağımız 5 katmanlı olan; 1 giriş katmanı, 3 gizli katman ve 1 çıkış katmanindan oluşuyor. Giriş boyutu: 3. Gizli katmanların her biri: 4 nöron ve aktivasyonu ReLU. Çıkış katmanı ise 2 nöron ve aktivasyonu Softmax olsun.
ReLU ve Softmax birer aktivasyon fonksiyonudur. ReLU(z)=max(0,z) şeklinde tanımlanan; negatif değerleri sıfıra sabitleyip, pozitif değerleri ise olduğu gibi bırakan bir fonksiyondur. Bu sayede sınır ağlarında doğrusal olmayanlık sağlanır ve büyük, derin ağların eğitimi daha verimli hale gelir. Softmax fonksiyonu, bir vektör içindeki her öğeye üstel fonksiyon uygulayarak, sonuçları bu üstel değerlerin toplamına bölerek bir olasılık dağılımı üretir aslında. Bir çıktı vektörü olan z=(z1,z2,…,zK)z=(z1,z2,…,zK) için Softmax fonksiyonu aşağıdaki gibi tanımlanır;
Her bir çıkış sınıfı için 0 ile 1 arasında bir olasılık elde edilir ve tüm olasılıkların toplamı 1'e eşit olur. Softmax fonksiyonu, sınıflandırma problemlerinin son katmanında kullanılır.
Geri dönecek olursak özetle; Giriş (3 boyut) → Katman 1 (4 nöron) → Katman 2 (4 nöron) → Katman 3 (4 nöron) → Katman 4 (4 nöron) → Çıkış Katmanı (2 nöron) kullanacağız. Ve Aktivasyon fonksiyonlarımız olarakta ReLU(z) = max(0, z) ve Çıkışta Softmax kullanacağız.
Aşağıda her katman için örnek olarak ağırlık matrislerini (Wl) ve bias vektörlerini (bl) hayali değerlerle veriyoruz. Medium yazı formatı uymadigindan asagidada görebilirsiniz. (Burada oldukça kapsamlı bir matematik bilgisi istediğinden ve bende biraz matematikte paslandigimdan ChatGPT’den ve Matematik Hesaplama uygulamalarından faydalanalim.
Ağırlık matrisi W1 (boyut 4x3), bias b1 (4x1) ve İleri geçiş hesaplamamizda z1=W1x0+b1z1=W1x0+b1 olduğundan Önce W1x0:
Sonrada bias ekleyelim:
ReLU aktivasyonu uygulanır ve ReLU(z) negatif değerleri 0 yapar:
Bu 3 aşama daha devam ederek çıkış katmanına gelir. Çıkış katmaninda W5x4'e tekrar uygulandığında aşağıdaki gibi olur:
Bias eklenip softmax’da uygulandığında:
bu çıktı da ağın “Alican Kiraz” girdisi için iki çıkış sınıfına ilişkin olasılık dağılımını temsil ettiğini görürüz. Tabi burda örnek tamamen kurgusal ağırlıklara dayanıyor. Gerçekte, ağ eğitilirken ağırlıklar veriden öğrenilir. Yani siz her ağı egittiginizde farklı agirliklarla düşünmeyi öğretirsiniz. Son değerlerde bu yüzden, ağın yapılandırıldığı amaca göre yorumlanır. Softmax aktivasyonuda, her sınıf için bir “olasılık” değeri üretir. Bu değerler 0 ile 1 arasında yer alır ve hepsinin toplamı 1 olur. Ornegimizde [0.5145,0.4855] gibi bir sonuç çıktı, yani hayali modelimiz ilk sınıfa %51.45, ikinci sınıfa %48.55 olasılık verdiğini gördük. İşte bu olasılıkta, yapay zekanın karar mekanizmasında bir çıktı tahmini olarak rol oynar. Mesela bir sınıflandırma görevi varsa, bu çıktı en yüksek olasılığa sahip sınıfın seçilmesiyle bir “karara” dönüştürülür. Örneğin, 0.5145 değeri 0.4855'ten büyük olduğu için yapay zeka “Alican Kiraz” girdisini ilk sınıfa ait olarak etiketleyebilir. Yani ağımız, isimleri ilk değerde “Kişi İsimleri” ve ikinci değerde”Ürün İsimleri” olarak iki sınıfa ayırmaya çalışıyor olsaydı ilk değer fazla olduğundan “Kişi İsimleri” olarak girdimi tahmin edecekti. İşte tam da bu yüzden ağ eğitilirken; sınıflandırma, tahmin, karar verme gibi bir amacı yerine getirebilmesi için parametreleri ayarlanır. Eğitimin sonunda da çıktılar sayesinde, yapay zeka probleme ilişkin tahminini, kararını veya sınıflandıracagini anlar.
Birde akış olarak Backward Pass vardır. Bu akışta ağın ürettiği çıktının hatasını temel alarak ağırlıkların ayarlanması için yapılan bir akışdır. Bu süreç sadece eğitim aşamasında kullanılır bu arada. Bu akış sonunda ağın ürettiği tahmin, gerçek etiket yani doğru cevap ile karşılaştırılır ve bir hata yani kayıp değeri hesaplanır. Bu hatanın ağın ağırlıklarına etkisi de matematiksel türev hesapları ile belirlenir. Gradient descent veya benzeri bir optimizasyon algoritması vasıtasıyla ağırlıklar küçük miktarlarda ayarlanır. Bu yüzden gelecekte benzer verileri modelimiz işlediğinde hatayı azaltacak yönde bir güncelleme yapmış olur.
Tamam sıkıldıysanız matematik detaylarindan biraz uzaklaşalım. Ama belirtmeliyim ki AI=Math ve Math=Life. Bu yüzden biraz daha derine inelim :D
Her bir noronda ne vardır? Bu yapay noronlar insan beynindeki biyolojik nöronlara benzetilir. Biyolojik nöronlar, dendrit, soma ve akson’dan oluşur. Dendrit giriş uçlarıyla sinyalleri alır, soma bu sinyalleri işler ve akson ciktiyi diğer nöronlara iletir. Yapay nöronda bu şöyle matematiklestirilmistir. Her nöron ağ giriş katmanından veya önceki katmanın nöronlarından bir dizi sayısal değer alır. Bu girişler, x1,x2,x3,…x1,x2,x3,… gibi sembollerle gösterilip her birine bir ağırlık değeri (w1,w2,w3,…w1,w2,w3,…) atanır. Bu ağırlıklar, nöronun hangi girdi sinyaline ne kadar önem verdiğini belirler. Nöron, aldığı her girdiyi ilgili ağırlığıyla çarpar ve bunların toplamını alır. Yani yapılan hesaplama z=w1x1+w2x2+⋯+wnxn+bz=w1x1+w2x2+⋯+wnxn+b şeklindeki bir doğrusal kombinasyondur. Bu arada b değeri norona sabit bir kaydırma değeri katan ve yukarıda da incelediğimiz bias (yanlılık) teri midir. Nöronun çıktısı doğrusal olmayan bir haritalamaya ihtiyaç duyarsa aktivasyon fonksiyonları olan Sigmoid, Tanh, ReLU (Rectified Linear Unit), Leaky ReLU, ELU, Softmax gibi fonksiyonlar devreye girer. Bu fonksiyonların amacı, ağın doğrusal olmayan ilişkileri öğrenebilmesini sağlayıp karmaşık problemlerin çözmesini mümkün kılar.
Okudugunuz icin teşekkür ederim. Artik verinin matematiksel yolculugunu gorduk. Ama bu daha baslangic, tavsan deligine dalmaya devam edecegiz…
Referanslar:
- https://neptune.ai/blog/backpropagation-algorithm-in-neural-networks-guide
- https://iq.opengenus.org/purpose-of-different-layers-in-ml/#google_vignette
- https://math.mit.edu/~gs/learningfromdata/siam.pdf
- https://www.mathworks.com/discovery/deep-learning.html
- https://www.ibm.com/topics/deep-learning
- https://cloud.google.com/discover/what-is-deep-learning
- https://builtin.com/machine-learning/relu-activation-function
- https://thegradient.pub/the-limitations-of-visual-deep-learning-and-how-we-might-fix-them/