
Sinir Ağı (Neural Network) Nedir?
Yapay zeka çağına hızlıca giriş yaptığımız şu son yıllarda literatüre birçok yeni terim girdi. Geçmişten beri var olan ama fazla ön plana çıkmayan bazı konular ise daha fazla ön plana çıkmaya başladı. “Neural Network (Sinir Ağı)” kavramı herhangi bir yerden kulağınıza çalınmış olmalı. Gelecekte daha fazla duyacaksınız.
Son 10 yılda teknoloji dünyasında ön plana çıkan otomatik çeviri ve konuşma tanımlama gibi yapay zeka sistemleri “derin öğrenme” adı verilen bir teknikten yararlanmakta. Derin öğrenme aslında 70 yılı aşkın süredir bilinen, sinir ağı adı verilen yapay zeka yaklaşımının yeni adı. Tam olarak nedir bu sinir ağı diyorsanız mümkün oldukça detaylı şekilde açıklamaya çalışacağız.
Neural Network dediğimiz şey, bilgisayarın eğitim örneklerini analiz ederek bazı görevleri yapmayı öğrendiği (makine öğrenimi) bir yöntem. Yani bilgisayarlara verileri insan beyninden esinlenerek işlemesi öğretiliyor. Genellikle örnekler önceden elle etiketleniyor. Misal olarak, bir nesne tanıma sistemine binlerce etiketli telefon, futbol topu vb. birçok şeyin görüntüsü verilebilir ve resimlerde belirli etiketlerle tutarlı bir şekilde ilişkili görsel desenler tespit edilebilir.
Neural Network (Sinir Ağı) Nedir?
Şimdi konuyu biraz daha açalım. Neural network, olguları tanımlamak, seçenekleri tartmak ve sonuçlara varmak için biyolojik nöronların birlikte çalışma şeklini taklit eden süreçleri kullanarak insan beynine benzer şekilde karar veren bir makine öğrenme modeli. Sinir ağları bazen yapay sinir ağı (artificial neural network, ANN) veya simüle edilmiş sinir ağı (simulated neural network, SNN) olarak da adlandırılabilir. Makine öğreniminin bir alt kümesidir, derin öğrenme modellerinin merkezinde yer alır.
Her sinir ağı, düğüm katmanlarından veya yapay nöronlardan, bir giriş katmanından, bir veya daha fazla gizli katmandan ve bir çıkış katmanından oluşuyor. Her düğüm diğerleriyle bağlantılıyken kendi ilişkili ağırlığına ve eşiğine sahip. Herhangi bir düğümün çıktısı belirlenen eşik değerinin üzerindeyse bu düğüm etkinleştirilmekte, ağın bir sonraki katmanına veri gönderilmekte. Aksi takdirde ağın bir sonraki katmanına hiçbir veri aktarılmaz.
Sinir ağları, zamana yayılacak şekilde doğrulukları öğrenmek ve geliştirmek için eğitim verilerine dayanır. Doğruluk için ince ayar yapıldıktan sonra ise bilgisayar bilimi ve yapay zeka tarafında güçlü araçlar haline gelir. Verilerin çok hızlı şekilde sınıflandırılmasına, kümelendirilmesine olanak tanınıyor. Sinir ağlarının en bilinen örneklerinden biri de Google’ın arama algoritması.
Sinir Ağları Nasıl Çalışır?
Farklı bir dilde anlatacak olursak, bu ağlar insan beyninin çalışma şeklini taklit eden bir süreç aracılığıyla verilerdeki kalıpları ve ilişkileri tanımak için tasarlanmış bir dizi algoritmadır. Özünde bir sinir ağı, beyin hücrelerine benzeyen temel birimler olan nöronlardan oluşur. Bu nöronlar girdileri alır, işler ve bir çıktı üretir. Nöranlar farklı katmanlar halinde organize ediliyor: Gerileri alan bir Giriş Katmanı (Input Layer), elde edilen verileri işleyen birkaç Gizli Katman (Hidden Layers ) ve son olarak nihai kararı ya da tahmini sağlayan Çıkış Katmanı (Output Layer).
Nöronlardaki ayarlanabilir parametreler ağırlık ve önyargı olarak adlandırılıyor. Ağ öğrendikçe, yani geliştikçe bu ağırlıklar ve önyargılar ayarlanarak giriş sinyallerinin gücünü belirler. Bu ayarlama süreci ağın gelişen bilgi tabanına benzer. Eğitim başlamadan önce hiperparametreler olarak bilinen belirli ayarlar değiştirilebilir. Böylece öğrenme hızı ve eğitim süresi gibi faktörler belirlenir. Yani bir sisteme optimum performans için ayar çekmek gibi.
Eğitim aşamasında sinirsel ağa veriler sunulurken, mevcut bilgisine (ağırlıklar ve önyargılar) dayanarak bir tahminde bulunur ve ardından tahmininin doğruluğunu değerlendirir. Bu değerlendirme, ağın “skor tutucusu” olarak hareket eden bir kayıp fonksiyonu kullanılarak yapılmakta. Bir tahminde bulunduktan sonra, kayıp fonksiyonu tahminin gerçek sonuçtan ne kadar uzak olduğunu hesaplar. Nihayetinde eğitim, kaybı veya hatayı en aza indirmeye odaklanır. Yani birincil amaç hataları minimize etmek.
Geri yayılım (backpropagation) öğrenme sürecinde çok önemli bir rol oynuyor. Hata veya kayıp belirlendikten sonra, geri yayılım bu hatayı azaltmak için ağırlıkların ve önyargıların ayarlanmasına yardımcı olur. Başka bir deyişle, hangi nöronların hataya en çok katkıda bulunduğunu belirleyen ve gelecekteki daha iyi tahminler için onları iyileştiren bir geri bildirim mekanizması görevi görüyor.
Ağırlıkları ve önyargıları verimli bir şekilde ayarlamak için “gradyan iniş” gibi tekniklere yer veriliyor. Gradyan inişi en basit haliyle küçük adımlarla en alt noktaya yaklaşma yöntemi olarak tanımlayabiliriz. Engebeli bir arazide gezindiğinizi ve amacınızın en alçak noktayı bulmak olduğunu düşünün. Her zaman daha alçak bir noktaya doğru ilerlerken izlediğiniz yol, gradyan inişi tarafından yönlendiriliyor.
Son olarak, sinir ağlarının önemli bir bileşeni de aktivasyon fonksiyonu. Bu fonksiyon, bir nöronun girdilerinin ağırlıklı toplamına ve bir önyargıya dayalı olarak etkinleştirilip etkinleştirilmeyeceğine karar veriyor.
Derin Öğrenmede Sinir Ağları
Ağlar önceden tanımlanmış kurallar olmaksızın doğrudan verilerden örüntüleri öğrenme ve tanımlama yeteneğine sahip. Bu ağlar birkaç temel bileşenden oluşuyor:
- Nöronlar: Girdileri alan temel birimler, her nöron bir eşik ve bir aktivasyon fonksiyonu tarafından yönetilmekte.
- Bağlantılar: Nöronlar arasında bilgi taşıyan, ağırlıklar ve yanlılıklar tarafından düzenlenen bağlantılar.
- Ağırlıklar ve Önyargılar: Bu parametreler bağlantıların gücünü ve etkisini belirliyor.
- Yayılma Fonksiyonları: Verilerin nöron katmanları arasında işlenmesine ve aktarılmasına yardımcı olan mekanizmalar.
- Öğrenme Kuralı: Doğruluğu artırmak için zaman içinde ağırlıkları ve önyargıları ayarlayan yöntem.
Sinir ağlarında öğrenme, yapılandırılmış üç aşamalı süreçten oluşuyor:
- Girdi Hesaplama: Veriler ağa besleniyor, yani sistemin öğrenmesi her türden veri sağlanıyor.
- Çıktı Üretimi: Mevcut parametrelere dayanarak ağ bir çıktı üretiyor.
- Yinelemeli İyileştirme: Ağ, ağırlıkları ve önyargıları ayarlayarak çıktısını iyileştiriyor ve çeşitli görevler üzerindeki performansını kademeli olarak geliştiriyor.
Kısa Geçmişi
Sinir ağları ilk olarak 1944 yılında, 1952 yılında MIT’ye taşınan ve bazen ilk bilişsel bilim bölümü olarak adlandırılan bölümün kurucu üyeleri Warren McCullough ve Walter Pitts tarafından (Chicago Üniversitesi araştırmacıları) önerildi.
Nöral ağlar, 1969 yılına kadar hem sinirbilim hem de bilgisayar bilimlerinde önemli bir araştırma alanıydı. Ancak sonra bu alan pek rağbet görmemeye başladı. Bilgisayar bilimleri literatürüne göre, bir yıl sonra yeni MIT Yapay Zeka Laboratuvarı’nın eş direktörleri olacak olan MIT matematikçileri Marvin Minsky ve Seymour Papert tarafından tarihin tozlu sayfalarına karıştırıldı.
Teknik daha sonra 1980’lerde yeniden canlandı. 2000’li yılların ilk döneminde tekrar düşüşe geçti, ancak GPU’ların artan işlem gücü sayesinde son dönemde bir kez daha parladı. Bu kez gerçek bir yükseliş dönemi yaşanıyor.
Sinir ağlarının tarihi çoğu insanın düşündüğünden daha uzun. “Düşünen bir makine” fikri Antik Yunanlılara kadar uzanıyor lakin biz yakın tarihteki önemli olaylara bir bakalım:
- 1943: Warren S. McCulloch ve Walter Pitts “A logical calculus of the ideas immanent in nervous activity” (Sinirsel aktiviteye içkin fikirlerin mantıksal hesabı) adlı çalışmayı yayınladı. Bu araştırma, insan beyninin birbirine bağlı beyin hücreleri ya da nöronlar aracılığıyla nasıl karmaşık örüntüler üretebildiğini anlamaya çalışıyordu. Bu çalışmadan çıkan ana fikirlerden biri, nöronların ikili eşik ile Boole mantığı (yani 0/1 veya doğru/yanlış ifadeleri) ile karşılaştırılmasıydı.
- 1958: Frank Rosenblatt, “The Perceptron” adlı araştırmasında belgelediği perceptronun geliştirilmesiyle tanınıyor: Beyinde Bilgi Depolama ve Organizasyon için Olasılıksal Bir Model” adlı bir araştırma mevcut. Bir bakıma McCulloch ve Pitt’in çalışmaları bir adım öteye taşındı. IBM 704’ten yararlanan Rosenblatt, bir bilgisayarın solda işaretli kartlarla sağda işaretli kartları nasıl ayırt edeceğini öğrenmesini sağladı.
- 1974: Çok sayıda araştırmacı geri yayılım fikrine katkıda bulunmuş olsa da, Paul Werbos ABD’de doktora tezinde sinir ağları içindeki uygulamasını not eden ilk kişi oldu.
- 1989: Yann LeCun, geri yayılımda kısıtlamaların kullanımının ve bunun sinir ağı mimarisine entegrasyonunun algoritmaları eğitmek için nasıl kullanılabileceğini gösteren bir makale yayınladı. Bu araştırma, ABD Posta Servisi tarafından sağlanan elle yazılmış posta kodu rakamlarını tanımak için bir sinir ağından başarıyla yararlandı.
Sinir Ağları Türleri
Belirli görevler ve uygulamalar için tasarlanmış birkaç farklı sinir ağı türü var:
- İleri Beslemeli Sinir Ağları: Bilginin sadece tek bir yönde hareket ettiği en basit tür.
- Tekrarlayan Sinir Ağları (RNN): Bilginin kalıcılığını sağlamak için döngüleri bulunduğu tür. RNN’ler geri bildirim döngüleriyle tanımlanır. Bu öğrenme algoritmaları, borsa tahminleri veya satış tahminleri gibi gelecekteki sonuçlar hakkında tahminlerde bulunmak için zaman serisi verileri için öncelikli olarak kullanılmakta.
- Evrişimli Sinir Ağları (CNN): Öncelikle görüntü tanıma görevleri için kullanılmakta. CNN’ler ileri beslemeli ağlara benziyor, ancak genellikle görüntü tanıma, örüntü tanıma ve/veya bilgisayarla görme için kullanılıyor. Bu ağlar, bir görüntüdeki desenleri tanımlamak için doğrusal cebirden, özellikle de matris çarpımından ilkeleri kullanmakta.
- Radyal Tabanlı Fonksiyon Sinir Ağları: Fonksiyon yaklaştırma problemleri için kullanılmakta.
Sinir Ağlarının Kullanım Alanları
Görüntü tanıma, sinir ağlarının başarıyla uygulandığı ilk alanlardan biriydi. Ancak zamanla kullanım kapsamı çok hızlı genişledi:
- Sohbet robotları, bilgisayarlı görü, NLP (Doğal Dil İşleme), çeviri ve dil üretimi, konuşma tanıma, öneri motorları, borsa tahminleri, teslimat sürücüsü rota planlaması ve optimizasyonu, ilaç keşfi ve geliştirme, sosyal medya, kişisel asistanlar, örüntü tanıma, regresyon analizi, süreç ve kalite kontrolü, sosyal ağ filtreleme, davranışsal veri içgörüleri aracılığıyla hedefli pazarlama, üretken yapay zeka, kuantum kimyası ve veri görselleştirme gibi.
Derin Öğrenme (Deep Learning) Nedir?
Derin öğrenme, bilgisayarlara tıpkı insanların yaptığı gibi örneklerden öğrenerek görevleri yerine getirmeyi öğreten bir makine öğrenimi türü. Bilgisayarlar nasıl bir şeyleri öğrenebiliyor? Oldukça kapsamlı veri kümeleriyle besleme yapılarak. Küçük yaştaki bir çocuk görerek, duyarak ve koklayarak, özetle duyu organlarıyla dünyada gerçekleşen bazı şeyleri kapar. Bilgisayardaki algoritmalar da benzer, tam olarak insan bir insan gibi düşünemese de görsel ve ses verileri gibi birçok veriyi tanımlayacak şekle getirilebiliyor.
Deep learning olarak anılan süreçte bilgisayarlar, insanın bilişsel süreçlerini simüle edecek şekilde kapsamlı veri kümelerinden öğrenmeleri için eğitiliyor. Derin öğrenme modelleri, sınıflandırma görevlerini yerine getirmek ve fotoğraf, metin, ses ve diğer veri türlerindeki kalıpları tanımak üzere öğretilebilir. Ayrıca görüntüleri tanımlamak veya ses dosyalarını yazıya dökmek gibi normalde insan zekası gerektiren görevleri otomatikleştirmek için de kullanılabilir.
İnsan beyinlerinde bilgileri öğrenmek için birlikte çalışan milyonlarca birbirine bağlı nöron bulunur. Derin öğrenme ise birlikte çalışan birden fazla yazılım düğümü katmanından oluşturulmuş sinir ağlarını içeriyor. Modeller, büyük etiketli veri kümeleri ve sinir ağı mimarileri kullanılarak eğitilmekte.
Deep learning metodu özetle bir bilgisayarın örneklerle öğrenmesini sağlar. Biraz önce verdiğimiz örneğe benzer şekilde, yeni yürümeye başlayan ve bir köpeğin ne olduğunu öğrenen çocuğu hayal edin. Yürümeye başlayan çocuk, nesneleri işaret ederek ve köpek kelimesini söyleyerek köpeğin ne olduğunu ve ne olmadığını öğrenir. Ebeveynler, yeni şeylerle tanışan çocuğa “Evet, bu bir köpek” veya “Hayır, bu bir köpek değil” gibi cevaplar verir. Küçük çocuk nesneleri işaret etmeye devam ettikçe, tüm köpeklerin sahip olduğu özelliklerin farkına varmaya başlar. Küçük çocuğun farkında olmadan yaptığı şey, karmaşık bir soyutlamayı açıklamaktır: köpek kavramı.
Bir bilgisayara “arabanın” nasıl bir şey olduğunu öğretiyoruz diyelim. Tekerlek, aynalar ve kaput gibi şeyleri söylemek yerine çok sayıda araba resmi gösterirsiniz. Bilgisayar ortak kalıpları kendi kendine bulabilir ve arabayı nasıl tanımlayacağını öğrenir. Bu da derin öğrenmenin özüdür.
Teknik anlamda derin öğrenme, insan beyninden esinlenen “sinir ağları” adı verilen bir yöntem kullanır. Bu ağlar, bilgiyi işleyen birbirine bağlı düğümlerin katmanlarından oluşmakta. Daha fazla katman, ağın daha karmaşık özellikleri öğrenmesine ve daha sofistike görevleri yerine getirmesine olanak tanıyacak şekilde “daha derin” olmasını sağlar.
Sinir Ağları vs Derin Öğrenme
Tüm derin öğrenme modelleri sinir ağları olsa da, tüm sinir ağları derin öğrenme değildir. Derin öğrenme, üç veya daha fazla katmana sahip sinir ağlarını ifade eder. Bu sinir ağları, insan beyninin davranışını simüle etmeye çalışıyor ve beynin büyük miktardaki verilerden “öğrenmesine” olanak tanıyor. Tek katmanlı bir sinir ağı yaklaşık tahminler yapabilirken, ek gizli katmanlar doğruluğu iyileştirmeye yardımcı olabilir.
NPU (Neural Processing Unit) Nedir?
Sinirsel işlem birimi anlamına gelen NPU’nun piyasaya sürülmesiyle birlikte yapay zeka görevlerinin hızlandırılması amaçlanıyor. Apple aslında yıllardır çiplerinde NPU kullanıyor, yani bu yeni bir şey değil. Ancak tüm markaların yapay zeka süreçlerini benimsemesi, yapay zeka araçlarının yaygınlaşmasıyla birlikte yeni bir furya başladı.
Özünde NPU, makine öğrenimi algoritmalarını yürütmek için tasarlanmış özel bir işlemci. Geleneksel CPU ve GPU’ların aksine, NPU’lar yapay sinir ağlarının ayrılmaz bir parçası olan karmaşık matematiksel hesaplamaları yürütmek için optimize ediliyor. Özel tasarlanan nöral işlemciler büyük miktarda veriyi paralel olarak işleme konusunda mükemmel işler çıkarabiliyor. Böylelikle görüntü tanıma, doğal dil işleme ve yapay zeka ile ilgili diğer işler çok daha kolay şekilde halledilebiliyor. Örnek olarak GPU içine bir GPU entegre edilseydi, NPU nesne algılama veya görüntü hızlandırma gibi belirli bir görevden sorumlu olabilirdi.
NPU’ya Neden İhtiyaç Duyuyoruz?
Yapay zeka kullanan araçlar ayrıyeten iş gücüne ihtiyaç duyuyor. Sektöre, kullanım alanına ve yazılıma bağlı olarak farklı gereksinimler ve hesaplama ihtiyaçları var. Üretken yapay zeka kullanım alanlarına yönelik artan taleple birlikte, yapay zeka için özel olarak tasarlanmış yenilenmiş bir bilgi işlem mimarisine ihtiyaç duyuldu.
Merkezi işlem birimi (CPU) ve grafik işlem birimi (GPU) bir kenara, tüm yapay zeka görevleri için sıfırdan nöral işlem birimi (NPU) adı verilen yongalar tasarlandı. Bir NPU ile birlikte uygun bir işlemci kullanıldığında, yeni ve gelişmiş üretken yapay zeka deneyimleri kullanılabiliyor, kullanılan uygulamaların performansı ve verimliliği en üst düzeye çıkarılıyor. Ayrıca bu süreçte güç tüketimi düşerken pil ömrü de olumlu etkileniyor.