Jedi Güçleri Edinmeye Uzak Değiliz

Source: Deep Learning on Medium

Koordinatlar

Drone, bu kareli defteri alıyor. Bir dizi işlemden geçiriyor. Öyle güzel işlemlerden geçiriyor ki, yaptığı işlemler sonrasında, bu kareli defterdeki sayılar, dört tane “koordinata” dönüşmüş oluyor.

Nasıl yaptığını anlamadınız mı? Çok normal, sizden ricam, şu anlık sadece koordinat kısmına odaklanın.

Amiral battı oynadıysanız koordinat derken ne demek istediğimi anlamışsınızdır. Bir koordinat, resimde bir noktanın nerede olduğunu anlatır.

Mesela, koordinatı (4,9) olan bir olan noktayı şöyle hayal edebiliriz:

  • Parmağını kareli defterin (resmin) sol alt köşesine koy.
  • Parmağını 4 çizgi (4 piksel) sağa götür.
  • Dur.
  • Parmağını 9 çizgi (9 piksel) yukarı götür.
  • Artık, (4,9) noktasındasın.
https://www.mathswithmum.com/find-coordinates-point-maths/

Tekrardan Drone’un yaptığı şey:

Kareli defterin karelerine yazılmış sayıları alıyor. Bu sayıları öyle bir işlemden geçiriyor ki, işlemin sonucu olarak 4 tane koordinat çıkıyor.

Bu 4 koordinat, 4 noktayı temsil ediyor.

  • Bir resim düşünün, içinde bir el olsun.
  • Resimdeki elin etrafına bir dikdörtgen çizin. El, dikdörtgenin tam içinde olsun.
Nöral ağ, bu videodaki her resim için ayrı ayrı işlem yapıp dikdörtgenin köşelerini buluyor.

İşte drone, bu dikdörtgenin köşelerinin koordinatlarını buluyor. Bu köşeleri bulunca, elin nerede olduğunu bulmuş oluyor.

Drone’un bulduğu dikdörtgen resmin sağ tarafında kalıyorsa, drone sağa doğru gidiyor. Dikdörtgen resmin solunda kalıyorsa drone sola gidiyor. Ortasında kalıyorsa, drone hareket etmiyor.

Dikdörtgenin köşelerini bulmayı Nasıl Öğrendi?

Drone’un köşeleri kendi kendine bulabilmek için iki şeye ihtiyacı var:

1- Boş ve doğru yapıda bir beyin. (Bir nöral ağ.)

2- Beynini doğru şekillendirmesini sağlayacak bilgi. (Bir veri seti.)

Beyin mi?

İnsan beyni değil. Ama şekli şemali benziyor, o yüzden beyin diyorum. Aslında şöyle bir şey:

Kaynak: 3Blue1Brown

Elinizde böyle bir yapı, böyle bir Nöral Ağ olduğu zaman:

  • İçine kareli defterdeki sayıları atabiliyorsunuz.
  • Sonra bu nöral ağdan, doğru cevabın çıkmasını umabiliyorsunuz.

Bir cevabın çıkmasını umabiliyoruz. Ama o cevap nasıl doğru çıkıyor?

Üstteki nöral ağdan, neden 3 değil de, 7 cevabı çıkıyor?

Drone’un ihtiyacı olan şeyleri hatırlayın:

1- Boş ve doğru yapıda bir beyin. (Bir nöral ağ.)

2- Beynini doğru şekillendirmesini sağlayacak bilgi. (Bir veri seti.)

Yani bir beyne sahip olmak yeterli değil. O beynin nöronlarının her birinin doğru miktarda elektrik üretmesi gerekiyor.

Üstteki o nöral ağ, ilk yapıldığında, saçma sapan cevaplar veriyordu. Doğru cevaplar vermiyordu.

Yavaş yavaş doğru cevabı vermeye yönelik olarak kendini değiştirdi, geliştirdi.

Kendini değiştirmek için veri setini kullandı. Veri seti şuna benziyordu:

https://neurohive.io/en/datasets/researchers-expanded-the-popular-mnist-dataset-with-50-000-new-images/
  • Veri seti, binlerce resim, ve o resimlerin hangi sayılar olduklarına dair doğru cevapları içeriyordu.
  • Drone, başta, sallamasyon şekilde resimlerin hangi sayı olduğunu tahmin etti.
  • Drone’un tahminleri ile doğru cevaplar arasındaki fark hesaplandı. (Basitçe çıkarma işlemi yapıldı.)
  • Bu farkı küçültmek için, nöral ağdaki nöronların her birini nasıl değiştirmeliyiz? Bu hesaplandı. (türev alarak, gradient descent, backpropagation)
  • Hesaplara uygun olarak nöronlar (nöron ağırlıkları) değiştirildi. (updating neuron weights)
  • Az önce saydığım üç adım, binlerce resim için, yüzbinlerce kez tekrar edildi. (eğitim, training)
  • En sonunda nöronları o kadar eğitmiş, o kadar kez doğru yönde geliştirmiş olduk ki, nöral ağ, doğru sonuçlar çıkarmaya başladı.

(Teknik detay: Tahminler ile gerçek cevap arasındaki fark terimsel sözlükte “yitim” olarak geçer.[1] İngilizcesi: “loss”.)

(Teknik detay: Türev işleminde, yitimin (lossun), nöron ağırlıklarına göre türevi alınır.)

Yapıyı tekrardan hatırlayalım:

Yuvarlakları birbirine bağlayan her çizgi, soldaki yuvarlağın, sağdaki yuvarlağı ne kadar etkilediğini gösteren bir bağdır. Her çizgi bir nörondur.

Bağ ne kadar kalınsa, o nöron o kadar fazla elektrik üretiyor gibi düşünebilirsiniz. Aslında olan şey ise, her nöronun kendine dair bir ağırlık sayısına (değerine) sahip olması. O sayı ne kadar büyükse, o nöron o kadar kalın.

  • Bir yuvarlağa giren sayıların hepsi toplanıyor. Yuvarlağa o sayı değeri yazılıyor.
  • Herhangi bir nöronun (çizginin) kalınlığı ile nöronun solunda kalan yuvarlaktaki sayı çarpılıyor.
  • O nöronun (çizginin) sağında kalan yuvarlakta, o yuvarlağa giren tüm nöronların sonuçları toplanıyor. (1. maddede de bunu yazdım aslında.)
  • En son, biz nöral ağda sağa doğru gide gide tüm yuvarlakları bitirince, kareli defterdeki sayılarımız, “işlenmiş” şekilde nöral ağdan çıkmış oluyor. Bu “işlem” doğru öğrenilmişse, çıkan sonuç doğru oluyor.

Özetle:

  • Videolar basitçe resim yığınıdır.
  • Resimler basitçe kareli defterlerdir. (matris)
  • Bazı yapılar (nöral ağlar), bu kareli defterlerden, elin koordinat noktalarını tahmin edebilirler.
  • Başka bir örnek vermek gerekirse bu yapılar, uygun veri seti ile eğitilirlerse, el yazısıyla yazılmış rakam fotoğraflarının, hangi rakam olduğunu tahmin edebilirler.
  • Nöral Ağlar üstte gördüğünüz resme benzerler. İçlerinde nöron denen çizgiler bulunur. Nöronlar, piksel değerlerini (en soldaki yuvarlakları) çarpma ve toplama işlemleri ile işlerler, sonraki yuvarlaklara iletirler. Sıradaki yuvarlağın içinde iletilmiş sonuçların hepsi toplanır. Bir sonraki yuvarlağa iletmek üzere işleme devam edilir.
  • Bu nöral ağlar, bir verisetini alıp, sallayarak tahmin yapıp, tahminleri ile doğru sonuçların arasındaki farka bakarlar. Tahminlerini nasıl iyileştirebileceklerini hesaplarlar. Bunu yaparken türev kullanırlar.
  • Sonra hesaplarına uygun olarak kendilerini, yani içlerindeki nöron ağırlıklarını yani çizgilerin kalınlıklarını değiştirirler.
  • Bunu binlerce resim için yüzbinlerce kez tekrar ettiklerinde, o işi çok başarılı şekilde yapabilen yapılara dönüşmüş olurlar.

Peki bunun Jedi’lıkla ne alakası var?

https://www.dji.com/spark

Yazıya bununla başlamıştık.

Şu alakası var: Telekinezi, yani Jedi’lık derken kastettiğim şey, nesnelere dokunmadan onları hareket ettirmek demek.

Günümüzde, binlerce özelleşmiş fabrika sayesinde, istediğimiz tür bir nesneyi, istediğimiz şekilde üretebiliyoruz. Bu nesnelerin içine bir pil koyduğumuzda bu nesneler hareket edebiliyorlar.

Artık bu şeyleri kumandasız hareket ettirebiliyoruz. Çünkü bizi görebiliyorlar.

Elimizi sallasak ellisi sıra dizilecek yani.

İş sadece hareket ettirmekle de sınırlı değil:

  • Evinizde ışıkları açıp kaparken
  • Televizyonun kanalını değiştirirken
  • Bilgisayarda çizim yaparken
  • Oyun oynarken
  • Hoparlöre sesi kıs demek için
  • İçinde bulunduğunuz araçları yönetmek için

Elinizi sallayarak emir verebileceksiniz, bu Nöral Ağları kullanan şirketler ürünlerini piyasaya sunduklarında.

Yani teknoloji öyle bir raddeye geldi ki, şirketler telefon satmayı, bilgisayar satmayı geçti; Jedi’lık satar oldu.

Çok sevdiğim bir film karesi ile sonlandırayım yazıyı:

Thor (Film, 2011): Sizin atalarınız o şeyi büyü olarak adlandırırdı. Şimdi, siz, aynı şeyi bilim olarak adlandırıyorsunuz. Oysa benim geldiğim gezegende bu ikisi aynı şey.

Referans:

[1]: https://github.com/deeplearningturkiye/turkce-yapay-zeka-terimleri/blob/master/turkce-ingilizce.md