30 Temmuz 2019 Salı

Üretmek İsteyen Gençler İçin Destek Bulma Yolları

Merhabalar. Bu yayınımda sizlere, genç yaştaki bir kişinin projeleri için gerekli olan maddi desteği nasıl bulabileceğinden bahsetmek istiyorum.
Hayalini kurduğu projeleri üretmek için kendi şansını kendi yaratmış bir Türk genci olarak sizlere deneyimlerimi anlatmak isterim.

Bu yazım özellikle lise öğrencilerine ithafen olacaktır çünkü okuduğum, dinlediğim ve deneyimlediğim kadarıyla lise zamanlarının üretkenlik açısından en verimli ve destek bulmanın da kolay olduğu zamanlar olduğunu düşünüyorum.

Bir fikrinizin veya yapmaya başlamış olduğunuz bir projenizin olduğunu düşünelim, bu projeyi makale veya ürün haline getirebilmeniz için gerekli olan maddi desteği bulabilmeniz için öncelikle bu projeyi destekleyecek kişilere veya kurumlara ulaşmanız; projenizi ve kendinizi en iyi şekilde açıklamanız gerekmektedir.

Soru 1: Beni destekleyecek kişileri nasıl bulurum?

Cevap:
Destek bulacağınız 4 yer bulunmaktadır:

1. Devlet Kurumları

A. TÜBİTAK

Lise öğrencilerinin bilim ve mühendislik projelerinin desteklenmesi diyince aklımıza ilk gelecek yer TÜBİTAK'ın düzenlediği "Lise Öğrencileri Araştırma Projeleri Yarışması"dır. Bu yarışma her sene düzenlenmektedir ve ulusal derece almanız durumunda Uluslarası ISEF (Dünya'nın en büyük bilim ve mühendislik olimpiyatı olarak bilinir) yarışmasına gönderildiğiniz yarışmadır.

Sizlere katacakları:
1. Sizlere akademik makale ve rapor yazmayı öğretir.
2. Kendiniz gibi istekli insanlarla tanıştırır.
3. Dışarıdan katılamayacağınız Dünya çapında büyük uluslarası yarışmalara göndererek gerçek vizyonunuzun genişlemesini sağlar.

Not: Bu 3 iyi yön küçümsenmeyecek kadar önemli şeylerdir.

Ödüller (maddi ödül) lise öğrencileri için yeterli olmasa da bu sene önerimiz üzerine hem ödüllerin arttırılacağı hem de projeye destek sunma (mentorluk gibi) çalışmaları yapılacağı haberini almış bulunmaktayız.

B.

Çok isterdim buraya başka bir madde ekleyebilmek ve bizlere destek olan bir devlet kurumu göstermek ama gençlere destek konusunda maalesef çok yetersiziz. Bu durumu da yine bizler kurtaracağız:
2 senedir TÜBİTAK, MEB ve Sanayi Ve Teknoloji Bakanlığı gibi devlet kurumlarına öneri ve istek raporları sundum, sunduk ve yeniliklerin takibini yapmaktayım. Bu tür kurumlarımızda gerekli yenilikler için desteklerinizi bekliyor olacağım.
Umarız ekonomiyi gerçekten düzeltebilecek kişiler olan bilim, teknoloji ve sanat üreten gençler (özellikle lise öğrencileri) hak ettikleri gerçek değeri görecekler.

https://i.sozcu.com.tr/wp-content/uploads/2019/05/18/ataturk-depo.jpg
"Bütün ümidim gençliktedir"
- Mustafa Kemal Atatürk

3 yıl ulusal (TÜBİTAK'dan 2 bölge 2.'liği, 1 Türkiye 1.'liği) ve 1 yıl uluslarası (ISEF Dünya 4.'lüğü) derece aldığım projelerim ile 4 yıllık lise eğitimimi bitirmeme rağmen şu ana kadar hiç devlet desteği almadığımı üzülerek bildirmek isterim. (Özellikle uluslarası derecemde bu durumun değişeceğini düşünmeme rağmen.)


Peki bu açığı nasıl kapattım?
Hem Türkiye'de hem Dünya çapında gençlere karşılıksız destek sunabilecek birçok özel firma ve vakıf bulunmaktadır.

2. Özel Firmalar

Projenizin alanında (yazılım, telefon uygulaması, tıp, kimya vb.) çalışan firmaları internetten araştırarak tanışma ve destek talebi e-postaları atabilirsiniz. Aradığınız destek maddi açıdansa büyük firmalara, gönüllü çalışma isteği için ise üniversitelerimizin teknokentlerindeki (ODTÜ Teknokent, ITU Arı Teknokent, Bilkent Cyberpark vb.) firmalara ulaşabilirsiniz.

 Özel bir firmadan aldığım ilk destek.
"Sıfırdan Bilgisayar Yapımı" çalışmam içindi.

3. Vakıflar

Bazı vakıflarımızda zaman zaman proje yarışmaları düzenlenmektedir. Bu yarışmalara vakıfların kendi sayfalarından ulaşabilirsiniz.
Örnek gösterebileceğim vakıflar: Mehmet Zorlu Vakfı, Türkiye Teknoloji Geliştirme Vakfı, Hacı Ömer Sabancı Vakfı.
Vakıfların içerisinde gençlerle ilgilenen mutlaka birkaç kişi bulabilirsiniz ve bu kişilere e-posta yolu ile ulaşabilirsiniz. Onlara ulaşıp kendinizi ve projenizi anlatırsanız en kötü olasılıkla sizleri ilgilenebilecek bir yere yönlendirebilirler.

4. Destekleyici İnsanlar

Sizlerin projesini desteklemek için firma ve vakıfların dışında insanlar da olabilir. Bunlar akrabalarınız, o alana ilgi duyan ya da gençleri desteklemeyi seven insanlar olabilir.
Peki bu insanlara nasıl ulaşabiliriz?
A. İnsanlarla tanışmak için en iyi yerler, alanınızdaki ücretsiz etkinliklerdir. Özellikle üniversitelerimiz, özel firmaların ve vakıfların içerisinde her yıl herkese açık sayısız etkinlik ve eğitim düzenlenmektedir bunları takip etmenizi önereceğim.
B. Firmalara staj başvurusu yaparsanız mülakatlarda oradaki insanlarla tanışma fırsatınız da olacak ve bu sizler için müthiş bir deneyim kapısı.
C. Üniversitelerimizdeki öğretim görevlilerinin kapıları genellikle gençlere açık olmaktadır, takip ettiğiniz yayınları olan akademisyenler ile tanışmaya gidebilir ya da e-posta atabilirsiniz.
D. Sosyal medya. Profesyonel  ağınızı oluşturmak için LinkedIn hesabı açabilirsiniz. Twitter da sizleri destekleyebilecek insanlara ulaşabilmeniz konusunda başarılı bir ortam oluşturacaktır.

Not: Dışardan aldığınız yorumlar, sizler için her zaman birer yorum olmalıdır. Bu yorumlar bazen kararlarınızı doğrudan değiştirebilirler ama süzgecinizden geçirmeyi de unutmayın.

Kendi yolunuzu çizmekten korkmayın!

Ek Başlık: İletişim Yeteneğinin Geliştirilmesi

İnsanlara ulaşmak istiyorsanız iletişim yeteneğinizi de geliştirmeniz şart olacak. Özellikle e-postalarınızda dil bilgisi ve yazım kurallarına uymanız çok önemli bir rol oynamaktadır. Aksi takdirde ciddiye bile alınmayabilirsiniz.


Soru 2: Bu kişilerden nasıl destek alırım?

Cevap:
Öncelikle özgeçmişinizi çıkarmanız gerekmektedir. Sizlere destek sunabilecek kişilere ve kurumlara kendinizi ve amacınızı iyi bir şekilde iletmeniz gerekmektedir.
Bu ilk projeniz ise iyi bir niyet yazısı yazabilirsiniz. Niyet mektubu içerisinde hayallerinizden ve destek ihtiyacınızdan bahsedebilirsiniz.

Not: Projeleriniz Dünya çapında yenilik sunacak şeyler olmak zorunda değildir. Bir ürünü Türkiye içerisinde üretebilmek, kendinizi eğitirken kullandığınız bir çalışma yapmak da oldukça önemlidir.

Özgeçmiş Hazırlamak:
Eğer alanınızda öğrenim görmeye yeni başladıysanız, kendinizi eğitirken yaptığınız çalışmaları; yaptığınız çalışmalar varsa bu çalışmaları ve de yine varsa çalıştığınız yerleri (stajlarlar sayılır) özgeçmişinize yazarak deneyimelerinizi ve isteğinizi sunabilir ve kendinizi karşı tarafa tanıtabilirsiniz.

Ek Başlık: Gönüllü Çalışma

Çalışma deneyimi hem sizleri eğitir hem de bir sonraki fırsatlar için sizlere referans olur. Şansınız varsa gönüllü çalışmak (staj) faydalı olabilir.

Stajlar için mutlaka meslek lisesinde olacaksınız diye bir şey yoktur. Ben de anadolu lisesindeydim. Alanında bir şeyler üretebilmeye giriş yapmış öğrencilerimize stajları ısrarla öneririm.
Bazı üniversitelerimiz içerisinde lise öğrencileri için yaz staj programları bulunmaktadır, üniversitelerin kültürünü ve alanınızdaki akademisyenleri tanımak için çok iyi bir yöntem olacaktır.

Özel firmalar genellikle genç stajyerlere açık oluyorlar. Kendinizden ve amacınızdan bahseden bir e-posta hazırlayıp ilgili kişilere, firmalara (firmalarda sizlerle ilgilenebilecek çalışanlara veya insan kaynakları bölümlerine) ve bazı üniversitelerimizin açtığı yaz programlarına ulaşabilirsiniz.

İlk staj yerim, ODTÜ Teknokent'ten bir görüntü.

Projeyi Tanıtabilmek:
Projenizi kısa ve öz bir şekilde insanlara tanıtabilmeniz destek bulabilmenizi kolaylaştıracaktır.
Destek bulmak için attığınız e-postaları kısa tutarak ilk başta amacınızı belirtmeniz sizin için daha verimli olacaktır çünkü bu tür firma ve vakıflar günde sayısız e-posta almaktadırlar.

İleriki zamanlarda da bir proje planı oluşturmak oldukça destekleyici olacaktır. Çalışma akışı ve yönteminizi burada belirtebilir ve destekleyen kişiye sizleri takip etme fırsatı sunabilirsiniz.

Eğer bu ilk projeniz değilse eski projeleriniz hakkında bilgiler sunmak sizleri destekleyecektir.
Daha önceki projelerinizi bir blog sayfası açıp anlatarak veya yaptığınız yazılım projelerini açık kaynak olarak GitHub gibi platformlarda paylaşarak insanlara inceleyebilmeleri için güzel bir fırsat sunmuş olursunuz.


Umarım yararlı olmuştur.
Öneri ve yorumlarınızı bekliyorum.
İyi çalışmalar, iyi günler dilerim.


Teşekkür
Blog sayfamdaki yazım hatalarını düzeltmemde yardımcı olarak daha iyi bir kaynak oluşturmamı sağlayan arkadaşım Kadir Efe DİLEK'e teşekkürlerimi sunarım.

13 Haziran 2018 Çarşamba

Röportaj - Hakkımda Ve Yapay Zeka Hakkında

Merhabalar, bu yayınımda sizlerle teknoloji yazarı Şule Güner ile 25 Mayıs 2018 tarihinde yaptığım röportajımı paylaşacağım.

Şule Hanım, Para Dergisi'nin 23. sayısı (3-9 Haziran 2018) ve Daily Sabah Gazetesi'nin 13 Haziran 2018 tarihli baskısındaki Yapay Zeka konulu yazıları altında bana da yer verdi:
Daily Sabah - Şule Güner - 13 Haziran 2018
Para Dergisi - Şule Güner - 23. Sayı (3-9 Haziran 2018)

Röportaj:

Şüle Güner: Kodlamaya ne zaman başladın, nasıl heveslendin?Kendini zeki mi, çalışkan mı olarak tanımlıyorsun? Ya da ikisi de mi?


Arda Mavi: İlk okuldan beri kodlama ile ilgileniyorum.
Teknoloji her yerimizi sarmışken merak etmemek; bilgiye ulaşmak bu kadar kolayken öğrenmemek elde değil.
Kendimi meraklı biri olarak görmekteyim, özellikle de çevremde gördüğüm şeylere karşı. Elektronik cihazlar da bunların içerisindedir.

Kendimi çalışkan biri olarak tanımlıyorum. Çalışarak elde edemeyeceğimiz hiçbir şey olmadığına inanıyorum.

“Hiçbir şeye ihtiyacımız yok, yalnız bir şeye ihtiyacımız vardır; çalışkan olmak.” -Mustafa Kemal Atatürk

Şüle Güner:  17 yaşına kadar kimden yardım aldın? Kendini nasıl yönlendirdin? Online, offline nasıl eğitimler aldın? Ailen ve Deep Learning Turkey sana nasıl destek oldu?

Arda Mavi: İlk soruda da belirttiğim gibi günümüzde bilgiye ulaşmak çok kolay. Her gün kullandığımız telefon üzerinden internete, dolayısıyla bilgiye ve tüm Dünya’ya ulaşabilmekteyiz.

Hem online hem de offline eğitimler aldım. Ücretli eğitimlerde öğrenmeye olan merakımı göstererek destek istedim. Öğrenmeye meraklı genç bir kişi genellikle reddedilmiyor.

Eğitim sistemi dışında okulum ve ailem bani engellemek istemiyor.

Deep Learning Türkiye; makine öğrenmesi alanında her yaşta ilgili kişileri toplamaya çalışmakta bu sayede kendiniz gibi kişilerle projeler ve çalışmalar yapabiliyorsunuz. Gruptaki herkes bildiği ve öğrendiği şeyleri paylaşabiliyor, bu sayede birlikte bilgilerimizi geliştirebiliyoruz.


Şüle Güner: Nasıl işler çıkardın? Projelerini kaç kişi kullandı? Yaptığın projelerin önemi ne? Projelerinle ilgili herhangi bir şirket sana geldi mi?


Arda Mavi: “Bilgi paylaştıkça çoğalır.” sözünü destekliyorum. Projelerimin çoğu açık kaynak durumda bu sayede Dünya’daki herkese projemi inceleme ve geliştirme imkanı sunmuş oluyorum. Böylece projelerimden herkes yararlanabiliyor ve destek bulmam da kolaylaşmış oluyor.

Projelerimin; öğrencilerin(özellikle eğitim içeriği barındıranların), özel firmaların ve yatırımcıların dikkatini çektiğini söyleyebilirim.


Şüle Güner: Tübitak yarışmalarına ne zamandır katılıyorsun? Nasıl dereceler aldın? İddialı olduğun alan ne? Yapay zekayı niye seçtin?



Arda Mavi: Ortaokuldan beri Tübitak yarışmalarına katılıyorum. Ortaokulda fen bilgisi öğretmenimle bir proje yapıp yarışmaya başvurmuştuk ama ilk elemeden geçememiştik. Şu an(2017-2018 eğitim dönemi) lise 3. sınıf öğrencisiyim. Üç yıldır da liseliler için olan “Tübitak Lise Öğrencileri Araştırma Projeleri Yarışması”na katılıyorum. 1 ve 2. sınıfta üst üste “Kodlama” kategorisinde bölge 2.’si olduk. Bu sene ise arkadaşım Zeynep Dikle ile birlikte "Sesgoritma" projemiz ile Türkiye 1.’si olduk.

Şu anda da yapay zeka üzerinde çalışmaktayım ve uzun bir süre daha böyle kalacakmış gibi gözüküyor.

Makineleri bizlere yardım etmeleri yanında bilim yapmaları için de kullanacağımızı düşünüyorum.
Yapay zekaya uzun süredir ilgim bulunmaktadır. Yapay zeka projeleri yapmaya ise, ilgim olan bilgisayar mühendisliği hakkında deneyim edinmek için gönüllü çalışma yaptığım TechNarts firmasında başladım. Oradaki mühendislerden iyi bir yönlendirme aldığımı düşünüyorum. Yaşıtlarıma ve daha genç arkadaşlarıma ilgilendikleri alanlarla ilgili firmalara ulaşarak onlardan öneriler almalarını tavsiye ederim.

Arkadaşım Zeynep Dikle ile 2018 Tübitak Bölge Finali'nde

Şüle Güner: Hedefin ne? Nerde, ne okumak istiyorsun? Kendini nerede görüyorsun ileride?



Arda Mavi: Öğrenmeyi ve öğrendiklerimi çevremle paylaşmayı çok seviyorum. Yapay zeka, programlama eğitimleri ve çalışmalarımı yayınladığım bir blogum var(ardamavi.com).
Araştırmalarıma, çalışmalarıma ve bilgi paylaşımı yapmaya devam etmek istediğim için akademisyen olmak istiyorum.
Şu anki hedefim ise eğitimime ve çalışmalarıma devam edebileceğim bir üniversiteye girmek. Biliyorsunuz ki üniversite sınavı gibi bir sistem söz konusu dolayısıyla sizin ne istediğiniz pek önemli olmuyor hatta yaptıklarınızı bırakmaya bile zorlayabiliyor.
Bu konuda desteklere de açık olduğumu belirtmek istiyorum.

Şüle Güner:  Yapay zeka konusunda birkaç yılda nereye varacağımız konusunda bir öngörün var mı? Genel yapay zeka anlamında dünya önümüzdeki birkaç yılda nereye gider?


Arda Mavi: Günümüzde bilgiye eş zamanlı ulaşabilme ve geliştirebilme söz konusu. Bir konuda bilgiye internetten rahatça ulaşabiliyor ve geliştirip tekrar tüm Dünya ile paylaşabiliyoruz. Bu yüzden bilgi sürekli gelişiyor ve çoğalıyor. Bir gün sonra neler olacağını tahmin etmemiz oldukça zor. Ama ben özellikle “Tıp” ve “Yapay Zeka” alanlarının birleşiminin müthiş derecede ilerleyeceğini hatta ilerlemek zorunda da olduğunu düşünüyorum. Bende bu alana odaklanmış durumdayım.

Şüle Güner: Türkiye’de önümüzdeki yıllarda hangi alanlarda yapay zeka kullanımı gelişir?

Arda Mavi: Yenilikçi makine öğrenmesi yöntemleri Türkiye’ye biraz geç giriş yapsada oldukça hızlı yayıldı ve büyüdü. Benim gördüğüm kadarıyla birçok firma ve üniversite bu yenilikçi alana yönlenmeye çalışmakta.

Günümüzde yapay zeka insanların yapabileceği şeyleri yapmakta oldukça mesafe katetti şimdi ise insanların yapamayacağı şeyleri yapmaya başladı. Düşünen ve üreten makinelerin doğuşunu görebiliyoruz.

Şule Hanım'a bu güzel soruları için çok teşekkür ederim.

Umarım beğenmişsinizdir.
Öneri ve yorumlarınızı bekliyorum.
İyi çalışmalar, iyi günler dilerim.

29 Ekim 2017 Pazar

Derin Öğrenme Başlangıç Seti - Donanım Ve Yazılım

Merhabalar dostlarım. Bu yayınımda Derin Öğrenme'ye(Deep Learning)  başlamak için yazılımsal ve donanımsal olarak nelere neden ihtiyacımız var detaylı bir şekilde anllatmaya çalıştım.
Bu yayını Deep Learning'e giriş seti olarak görebilirsiniz.

Hatırlarsanız daha önceki yayınlarımızda makine öğrenmesi ve deep learning(DL) hakkında konuşmuştuk. DL'e teorik olarak bir giriş yaptıktan sonra bunları uygulama vaktimizin geldiğini düşündüm.

Öncelikle makine öğrenmesi yayınımda elimizdeki verinin artmasından ve bu veriyi işleyecek donanımın güçlenmesinden bahsetmiştik.
Daha hızlı veri işlememiz, matematiksel hesaplamaların daha hızlı yapıldığı anlamına gelmekte. Nasıl mı?
Bilgisayarımızdaki CPU(Central Processing Unit) yani Merkezi İşlem Birimi bu hesaplamaları yapmakla görevlidir. Hesaplamalar Core(çekirdek) ile yapılmaktadır ve her bir Core bir zamanda sadece bir hesaplama yapabilir. CPU'da ki Core'ların sayısı az olsada oldukça güçlüdürler.
Örnek bir CPU fotoğrafı:

GPU(Graphics Processing Unit) yani Grafik İşlemci Ünitesi ise CPU'dan daha zayıf Core'lar içerse de sayıca çok fazla olduğu için hesaplamaları farklı Core'lara bölerek yapar ve dolayısıyla CPU'dan daha hızlı hesaplama yapabilir.
Bu olayı daha iyi anlamak için şöyle yapalım:
Örneğin bir kazan çorba düşünelim. Sizce bu koca kazanı hızlı(bir saniyede 2 kaşık) içen bir adam mı önce bitirir yoksa normal hızda(bir saniyede 1 kaşık) içen 20 kişi mi ? Tabiki normal hızda içen 20 kişi daha hızlı bitirecektir.

Örnek bir GPU fotoğrafı:

Örnek bir CPU ve GPU'daki Core sayısı karşılaştırma görseli:


Bizlerde DL çalışmalarımızda daha hızlı hesaplama yapabilmek için GPU'ları tercih etmekteyiz. DL hesaplamalarını hızlandırmak için yapılmış alternatif makineler tabiki de bulunmaktadır. Örneğin Google'un çıkardığı TPU'lar oldukça iyi gözüküyor. Yazımızın ilerleyen bölümlerinde tekrar bahsedeceğiz. Başka bir örnek olarak da VPU verilebilir.
Örnek bir TPU:

Peki bu güçlü makineleri neye göre seçeceğiz ?

İki iyi seçeneğiniz var, projenize bu makinelerden birini alabilir ya da projenizi internete bağlayarak uzaktaki makineye erişmek. Bu konuda ne alanda çalıştığınızın önemli olduğunu belirtmek isterim. Gelin bu durumları biraz inceleyelim.

Örneğin bir otonom araç yapacaksınız bu örneğimizde dron ya da bir araba düşünelebilir.
Aracın kendi kendine gidebilmesi için sensörlerinden aldığı veriyi(fotoğraf ve radar verileri gibi) makineye taşıyıp yön ve hız gibi verileri hesapladıktan sonra donanıma geri dönüt(dönme açısı ve hız verisi gibi) vermesi gerekmektedir. Buradaki veri aktarımın hızı nereye döneceğine karar vermesi kadar önemli bir yer tutmaktadır. Yoksa veri aktarımı yaparken araç kaza yapabilir veya yanlış yola sapabilir. Dolayısıyla veri işlemenin aracın içinde(local) yapılması gerekir.
Eş zamanlı işlem yapabilmesi veri akışına ve verinin işlenişine bağlıdır.


Peki nasıl bir makine ?

Arabalar için düşünecek olursak. Araba büyük olduğu için yer sorununuzun olmadığını biliyoruz. Bu nedenle normal boyutta GPU'lu makine kullanabiliriz.
Otonom araçlarda kullanılan NVIDIA Drive PX2 kartı:


Fakat dron gibi küçük, uçabilen ve enerji deposu küçük olan bir araç düşündüğümüzde bu boyutta bir kart kullanamayacağımızı görebiliriz.
Örnek dron fotoğrafları:

Peki bunlar için nasıl bir ürün kullanılabilir ?
Aklınıza hemen fiyatı ucuz olan, kredi kartı boyutundaki bilgisayar Raspberry Pi gelmiş olabilir fakat bu geliştirme kartı bizim büyük DL algoritmalarını işleyecek güce(hıza) sahip değil.
Örnek bir Raspberry Pi Zero fotoğrafı:


Peki ya ne kullanabilirim ?
Bu konuda birçok çözüm yolu bulunabilsede ben size popüler olan iki tanesinden bahsedeceğim.

NVIDIA Jetson
Bu da kredi kartı kartı boyutunda bir bilgisayar fakat bu bir GPU yani DL algoritmalarınızı gönül rahatlığıyla çalıştırabileceğiniz bir makine.
Jetson TX1 fotoğrafı:

Jetson TX2 Developer Kit ise tamamen bir bilgisayar. Üzerinde USB, HDMI, SD kart bağlantıları ve hatta Wi-Fi anteni ve bir kamerası bile var. Üzerine rahatlıkla Ubuntu kurabilir; klavye, fare ve ekran bağlayarak bir bilgisayar gibi de kullanabilirsiniz. NVIDIA JetPack yazılımını kurarak da hızlı bir başlangıç yapabilirsiniz. JetPack kurulumu ile DL için en popüler yazılım ve kütüphaneler otomatik olarak kurmuş da olacaksınız.
Jetson TX2 Developer Kit:

Jetson ile yapılmış küçük bir robot:


İkinci seçenek ise bir USB Stick. İntel'in çıkardığı bilgisayarınıza takarak DL algoritmanızı daha hızlı çalıştırabileceğiniz ürünün adı: Movidius Neural Compute Stick
Bu ürünü isterseniz Raspberry Pi'nize takarak kullanabilirsiniz:


Apple bu yıl(2017) çıkarttığı yeni iPhone'lar ile birlikte, telefonların içerisinde kullandığı ve daha verimli nöral işleme yapabilecek A11 Bionic adlı işlemcisini de tanıttı:
Donanımın ne kadar önemli olduğunu görebiliyoruz.


Peki ya bir donanım almak istemiyorsanız ?

Bu seçenekte ise eş zamanlı bir işleme yapmadığımız ya da sadece modeli eğitmek için kullandığımız donanımları inceleyeceğiz. Yani hesaplama hızı(modelin eğitimi daha ön planda) yine önemli olsun fakat veri alışverişi hızı önemli olmasın. Diyelim ki DL modelinizi eğiteceksiniz ve daha sonra kullanacaksınız.
Yani kısa süre için ihtiyacınız var ve bir donanım alıp bir sürü para vermek istemiyorsunuz.
O zaman sizlere bir Cloud lazım. İnternet üzerinden bağlanıp yazılımınızı güçlü bir makinede çalıştırabilir ve işiniz bittikten sonra makineyi kapatabilirsiniz. Ve kullandığınız kadar ödersiniz.
Not: Cloud uzun süreli kullanımlarda günümüzde pahalı bir seçenek olacaktır.

Cloud Sağlayıcıları:

En popüler üç Cloud servisine örnek verecek olursak, Amazon'un AWS'i, Google'un kendi TPU'larını kullanabileceğiniz Google Cloud Platform'u ve Floyd Hub'u örnek verebiliriz.

Donanımı tamamladık peki ya şimdi ?

Öncelikle DL modellerimizi oluşturabileceğimiz bir programlama dili seçelim.
Biliyorsunuz ki Python programlama dili oldukça popüler. Özellikle de yapay zeka, makine öğrenmesi ve derin öğrenme gibi konularda. Yapılan akademik ve ticari çalışmalarda bunu görmekteyiz.
Bunun en büyük nedeni, temiz bir syntax'ı olması ve kolay okunabilir olması. Önemli bir diğer neden ise, Python ile birçok platforma uygulama geliştirebiliyor olmamız. Masaüstü bilgisayarlardan tutun web uygulamalarına kadar birçok alana yayılmış durumda. Blogumda kısa bir tur ile bunu rahatça görebilirsiniz.

Ayrıca yaptığımız matematiksel işlemlerdeki kodlamayı kolaylaştırmak için, Python ile birlikte bazı kütüphaneler de kullanılmakta. Bunlardan en popülerlerinden biri de Numpy kütüphanesidir.
Numpy hakkında daha fazla bilgi almak için buraya tıklayınız.

Daha önce "İnsanda Ve Makinede Öğrenme" yayınımda da anlattığımız gibi Deep Learning alanında çok büyük matematiksel işlemler yapılmaktadır. Bu hesaplamaların daha optimize(hızlı ve verimli) çalışması için bazı kütüphaneler de kullanılmakta.
Örneğin Google'ın yayınladığı TensorFlow kütüphanesi bunlardan biri.

Yukarıda anlattığımız Google'un TPU'su(Tensor Processing Unit) yine Google'ın kendi kütüphanesi TensorFlow ile daha verimli çalışması için çıkartılmıştır.
TensorFlow hakkında daha fazla bilgi almak için buraya tıklayınız.
TensorFlow içerisinde bir de TensorBoard bulunmaktadır. TensorBoard bir görselleştirme uygulamasıdır modelinizi eğitirken, modelin başarı durumunu canlı bir şekilde grafikile izlemenizi sağlaması başta olmak üzere birçok getirisi daha bulunmaktadır.

TensorBoard ekran görüntüsü:


Sizlere Keras kütüphanesinden bahsetmek isterim. En popüler ve en sevdiğim kütüphanelerdendir.
Keras kütüphanesi arka planda TensorFlow, Theano ve CNTK gibi kütüphaneler kullanmaktadır. Bu kütüphaneler hakkında da yazımızın devamında konuşacağız.
Keras ile modelinizi basit ve hızlı bir şekilde oluşturduktan sonra arkaplanda hangi kütüphaneyi kullanacağınızı seçiyorsunuz ve o kütüphaneyi arkaplanda kullanarak DL modelinizi çalıştırıyor. Model oluşturma konusunda sizlere müthiş bir kolaylık sağlıyor.
Keras'da diğer kütüphaneler gibi başlı başına bir konu dolayısıyla bu konuyu başka yayınlarıma bırakıyorum.
Keras hakkında daha fazla bilgi almak için buraya tıklayınız.

New York Üniversitesi ve FaceBook'un desteklediği Torch'da popüler DL kütüphaneleri içerisinde. Torch, Lua dili ile kullanılmakta. Lua dili ile kullanılması nedeniyle şu anda durumu pek iyi değil.
PyTorch adında Python ile kullanılan bir kütüphane daha piyasaya sürüldü ve şu an FaceBook bu kütüphanenin arkasında. Çok yeni bir kütüphane fakat dokümantasyon ve örnek proje sayısı hızla artmakta özellikle de akademik alanda.
Bir diğer en popüler kütüphaneye bakacak olursak da Berkeley, Kaliforniya Üniversitesi'in çıkardığı Caffe'dir.
Piyasaya sürülen Caffe2, FaceBook'un kolları altında destek görüyor.

Montréal Üniversitesi'nin çıkardığı Theano ise oldukça başarılı bir kütüphaneydi özellikle tek GPU çalışmalarda fakat şu anda canlılığını bitirdi ve desteklerini kaybetti.

Microsoft'un CNTK kütüphanesi ve Amazon'un MXNet kütüphanesi de popüler kütüphaneler arasında.


Ayrıca sizlere son olarak NVIDIA'nın DIGITS'inden de bahsetmek istiyorum.
Eğer ellerimi kodlara değmek istemiyorum diyorsanız bu program tam size göre.

Kısaca özetleyecek olursak DIGITS web sayfasında çalışan bir arayüz ve bu program ile modellerinizi eğitebiliyor, anlık donanım durumunu ve model başarısını grafikli bir arayüzde izleyebiliyorsunuz.
Grafik arayüzü üzerinden modeller oluşturuyor ve görsel olarak inceleyebiliyorsunuz. İsterseniz kod yazarak da erişim sağlayabilirsiniz. Veri setlerini ve modelleri düzenli bir şekilde izleyebiliyorsunuz.
Bol görselli ve temiz bir arayüz.


DIGITS'ın şu anda desteklediği Deep Learning kütüphaneleri: Caffe, Torch, ve Tensorflow.

Aktif olarak GitHub'da projelerimi açık kaynak olarak yayınlamaktayım: GitHub - Arda Mavi
DL projelerimi inceleyebilirsiniz, isterseniz geliştirebilirsiniz ve kaynak gösterdiğiniz sürece kendi projelerinizde de kullanabilirsiniz.

Bu yayın ile birlikte Deep Learning'e giriş çatal-bıçak setimizi de hazırlamış olduk.

Umarım yararlı bir yayın olmuştur.
Sorularınızı, isteklerinizi ve önerilerinizi bekliyorum.
Daha fazla insana ulaşabilmem için yayınımı paylaşırsanız sevinirim.
İyi çalışmalar dilerim.

4 Eylül 2017 Pazartesi

Yapay Zeka - Düşünen Ve Üreten Makinelerin Doğuşu

Merhabalar dostlarım. Günümüzde adını sürekli duymuş olduğumuz yapay zekanın son durumu ve geleceği hakkında biraz bahsetmek ve yorumlarımı paylaşmak istiyorum.

Biliyorsunuz ki Deep Learning (DL) ile birlikte yapay zeka çok büyük bir güç kazandı ve yapay zeka ile ilgili beklentimizi oldukça arttırdı.

Şu an için DL birçok soruna çözüm üretebilecek gibi gözüküyor. Bununla birlikte birçok mesleğin de makinelere bırakılacağını da görebiliyoruz. Bu konuda detaylı olarak yazımda bahsedeceğim.

Deep Learning, yurt dışında üniversitelerin ve firmaların ilgisini fazlasıyla çekmiş olsada maalesef Türkiye'de yeterince farkındalık yaratmadığını gördüm. Bunun nedeninin ise DL'in Türkiye'de yeterince tanınmamasından kaynaklı olduğunu düşünüyorum. Bu farkındalığı yaratmak için sayfam üzerinden Türkçe DL kaynağı oluşturmaya başladım.
Yapay Zeka yayınlarım: ardamavi.com - Yapay Zeka

Yapay zeka ve robotlar şu an neler yapabiliyor ?

- Ulaşımımızı sağlıyor:
Vaktimizin çoğunu trafikte harcıyoruz ve kazalarda birçok kayıp veriyoruz.
Ulaşımın hem daha güvenli hemde de daha verimli(daha az enerji harcayarak, daha hızlı) olmasını sağlıyor.


Eğer direksiyonu bırakmak istemiyorsanız(hobi olarak araba kullanan biriyseniz), size asistanlık yapıyor ve daha güvenli araba kullanmanızı sağlıyor.
Bkz: TESLA, TOMTOM, PACCAR

- Doktorluk yapabiliyor:
En deneyimli doktorlardan daha iyi teşhis koyabiliyor.
İlaç üretebiliyor. (İlaç üretiminde ve testinde insanların görev almasından daha hızlı olduğunu görebiliyoruz.)
Daha hızlı ve daha güvenli ameliyatlar yapabiliyor.
Bkz: LUMIATA, ATHELAS

- Evinizi yönetebiliyor:
Evinizi daha kullanışlı ve güvenli tutabiliyor. Güvenlik kamerasıyla sürekli tetikteler ve akıllı nesneler ile evinizi daha kullanışlı hale getiriyor(Akıllı buz dolapları gibi).
Sizlere asistanlık yapıyor. Sizi iyice rahata alıştırıyor gibi gözükebiliyor ama evde tek başına yaşayamayanlara yardım ettiğini unutmamamız gerekiyor.
Bkz: TOYOTA HSR

- Bilimin ve teknolojinin gelişmesine katkı sağlıyor:
Çok hızlı hesaplama yapabiliyorlar ve insanların çözemediği formülleri çözebiliyor.
Bkz: ETH ZURİCH, NCSA

- Sanat üretebiliyor:


Resim yapıp, müzik besteleyebiliyor.
Bkz: AIVA Technologies , CLOUDPAINTER

- Verileri inceleyebilir ve yorum yapabilirler:
Bizim anlamadığımız verileri anlayıp yorumlayabiliyor.
Sıralı diziler arasındaki bağlantıyı insanlardan daha iyi çözebiliyor.
Bkz: ICEBERG HOCKEY ANALYTICS SYSTEM, DEEPMIND


Yukarıda verdiğim birkaç örnek ile yapay zeka alanının ne kadar güçlendiğini görebiliyoruz. Bunun nedenlerinden biri elimizdeki donanımın daha güçlü olması(daha hızlı işlem yapabilme yeteneği kazanması) ve elimizdeki verinin artması(İnternette her konu ile ilgili bilgi alabiliyoruz ve sürekli, güncel bir veri artışı var).


Yapay zeka ve robotlar gelecekte neler yapabilecek ?
Hayal gücünüze kalmış. Yapay zeka alanının önünün açık olduğunu belirtmek istiyorum. Yapabileceklerimizin hayal gücümüzle sınırlı olduğunu düşünüyorum.

Makineleri bize yardım etmesi yanında daha fazla bilimsel araştırma yapması ve yeni projeler üretmesi için kullanacağımızı düşünüyorum.
Düşünen ve üreten makinelerin doğuşunu görebiliyoruz.
Umarım yararlı olmuştur.
İyi çalışmalar diliyorum.

14 Temmuz 2017 Cuma

Deep Learning: Convolutional Neural Networks

Merhabalar arkadaşlarım bu yazımda sizlerle Derin Öğrenme(Deep Learning) ve Konvolüsyonel Sinir Ağları(Convolutional Neural Network) kavramlarını öğreneceğiz.

Derin öğrenme kavramından kısaca bahsedecek olursak:
Derin öğrenme = Büyük Veri + Büyük Hesaplama

Başlamadan önce belirtmeliyim ki bu konuların daha iyi anlaşılabilmesi için sırasıyla İnsanda Ve Makinede Öğrenme, Bilgisayarda Görüntü Ve Sayı Dizileri, Sinir Ağları yazılarımıda okumanızı öneriyorum.

Aşağıda örnek bir convolution ağı görebilirsiniz:


Bu örnekte el yazısı rakamları algılayan bir mimari gösterilmektedir.
Şimdi gelin bu ağların nasıl çalıştığını öğrenelim.

Convolution Katmanı

Bu katmanda filtreler(Filter, Kernel) görev alır.
Filtreler görsel boyunca kaydırılır. Kaydırma sırasında görselin değerleri ile filtredeki değerler çarpılır ve elde edilen değerler toplanır ve net sonuç bulunur. Bu işlemi tüm görsele uyguladığımızda yeni bir görsel elde etmiş oluruz. Aşağıda bu işlemin görselleştirilmiş hali bulunmakta:


Yukarıdaki örnekte elimizde 5x5 boyutunda bir görselimiz ve 3x3 boyutunda bir filtremiz bulunmaktadır. Filtre görsel boyunca 1 adım sağ ve her yeni satırda bir adım aşağı kaydırılarak yeni görsel elde edilir.
Gördüğünüz üzere 5x5 boyutunda bir görsele, 1x1 kaydırma(stride) ile 3x3'lük bir filtre uygularsak elde edeceğimiz yeni görselin boyutu 3x3 olmaktadır.

Fark ettiyseniz her bir filtre aslında Sinir Ağları yazımızda bahsettiğimiz bir nörondur. Filtre içerisindeki değerler ise ağırlıklardır.

Nasıl Çalışıyor?
Bir örnek ile açıklayalım:
Elimizde aşağıdaki gibi bir filtre olsun:


Sol tarafta filtre değerleri, sağ tarafta bu değerlerin görselleştirilmiş hali bulunmakta.
Aşağıdaki fare görselinde işaretlenen yere(Sarı renkte kare ile gösterilmiştir) bu filtremizi uygulayalım:


Görselin altında yapılan işemler belirtilmiştir. Sonuç olarak büyük bir veri elde edilmiştir yani aradığımız özelliğin bu bölgede olduğunu anlayabiliriz.
Peki filtremizi başka bir yere uygulamış olsaydık:


İşlem sonucumuzda elde ettiğimiz değer 0 olmuş yani aradığımız özelliğin bu bölgede olmadığını anlamaktayız.
Örneğin kaynağı: https://adeshpande3.github.io/A-Beginner's-Guide-To-Understanding-Convolutional-Neural-Networks/
Farklı filtrelerle farklı özellikler yakalayabiliriz.
Basitçe convolution katmanının nasıl çalıştığını öğrenmiş olduk.

Pooling Katmanı

Aşağıda bir Max-Pooling örneği görmekteyiz:


Bu örnekte 2x2 boyutunda bir çerçeve, 4x4 boyutunda bir görselde gezdirilmiştir(2'şer adım atlamış, 2x2 stride) ve çerçeve içindeki en büyük değer alınmıştır. Bu işlem tüm görsele uygulandıktan sonra daha küçük(2x2 boyutunda) bir görsel elde edilmiştir.

Activation Katmanı

Hatırlarsanız Sinir Ağları yazımda aktivasyon fonksiyonlarından bahsetmiştik bu katmanda da bu fonksiyonlar kullanılmaktadır.

Dropout

Bu katmanda ağımızdaki bazı nöronlar rasgele olarak etkisiz hale getirilmektedir.
Aşağıdaki görselde dropout örneği gösterilmiştir:


Bu özelliğin en önemli noktası eğitim sırasında nöronlara bağımsızlık kazandırarak sistemin daha iyi verim elde etmesini sağlamasıdır.

Bu yazımızda konvolüsyonel sinir ağları ile tanışmış olduk.
Umarım yararlı olmuştur.
Sorularınızı, isteklerinizi ve önerilerinizi bekliyorum.
İyi çalışmalar dilerim.

11 Temmuz 2017 Salı

Sinir Ağları

Merhabalar arkadaşlarım bu yazımda sizlere sinir ağlarından ve yapay sinir ağlarından bahsedeceğim.

Sinir Ağları
Sinir sistemi kısaca, çevreden alınan bilgiye karşılık bir tepki oluşturulmasını sağlayan sistemdir.
Yukarıda bir sinir hücresini(nöron) görmekteyiz.

Örneğin masada duran kalemi elimizle tutup kaldırmak istediğimizde ona dokunuruz ve yeteri kadar sıkarız. Eğer çok fazla sıkarsak kalem zarar görebilir ya da yeteri kadar sıkmazsak da bu sefer kalemi kaldıramayız, elimizden kayar. İşte tam burada sinir ağlarımız görev alır.
Önce kalemi ne kadar sıktığımız bilgisi sinir ağlarımıza gider ve belli bir değere(kalemin elimize uyguladığı basınç) gelene kadarda kaleme uyguladığımız kuvveti arttırırız.
Başka bir örnek verecek olursak odamızda otururken ellerimizde havayı hissetmeyiz ama hareket halindeki bir arabanın camından elimizi çıkardığımızda havayı(rüzgarı) hissedebiliriz. Bu örnekte havanın elimize uyguladığı basıncı hissederiz çünkü basınç istenilen değere ya da fazlasına ulaşmıştır.
Not: Bu örnekteki hissetmemiz için gereken minimum basınç değeri kişiden kişiye göre değişiklik göstermektedir.
Başka bir örnekte de sinir sistemimiz görmemizi sağlamaktadır.

Yapay Sinir Ağları (Artificial Neural Network)
Yapay sinir ağları(ysa) bir makine öğrenmesi yöntemidir. Ysa'da amaç insan sinir sistemini taklit ederek karar verebilen ve yorum yapabilen makineler oluşturmaktır.
Aşağıdaki grafikte bir yapay sinir ağı gösterilmektedir:


Gördüğünüz gibi yapay sinir ağı sistemi üç katmandan oluşmaktadır.
Not: Giriş katmanında herhangi bir hesaplama gerçekleşmez. Bu katmanda sinir ağlarına verilerin girişi sağlanır.
Göreceğiniz üzere hücreler birbirlerine bağlıdır, bu bağlantılar bizim sinir sistemimizdeki sinapsları temsil etmektedir. Bu bağlantılara konunun devamında weight(ağırlık) diyeceğiz.
Şimdi gelin sinir ağlarında nasıl bir hesaplama gerçekleşiyor tüm ayrıntılarıyla inceleyelim.

Aşağıdaki grafikte bir yapay sinir hücresi gösterilmektedir:


Gördüğünüz gibi hücremize n adet veri(girdiler X ile gösterilir) giriyor. Sonra giren veriler ağırlıklarla(weights) çarpılıyor. Daha sonra tüm veriler toplanıyor ve Bias değeri ekleniyor, bu sayede net girdi elde ediyoruz. Net girdi aktivasyon fonksiyonumuzdan geçiyor ve bir çıktı(çıktılar Y ile gösterilir) elde etmiş oluyoruz.

Aktivasyon fonksiyonları
İnternette birçok aktivasyon fonksiyonu görebilirsiniz. Bunlardan en popüleri ReLu fonksiyonudur.
ReLu (Pozitif doğrusal): Girdi 0 ya da 0'dan küçük ise 0 dönen değilse giren veriyi dönen fonksiyonlardır.
Aşağıdaki grafikte popüler aktivasyon fonksiyonlarını görebilirsiniz:


Sinir Ağlarında Eğitim
Sinir ağlarında eğitim yukarıda bahsettiğimiz ağırlıkların ve bias değerlerinin güncellenmesiyle sağlanır.
Amaç en iyi ağırlıkları ve bias değerlerini elde etmektir.
En iyi ağırlık değerlerini bulmak için, çıkması gereken sonuç ve sinir ağlarının verdiği sonuç karşılaştırılarak hata oranı bulunur ve bu orana göre optimizasyon yani en iyi ağırlıkları bulma işlemi yapılır.

Eğitimde önemli noktalar:
- Eğitim en iyi sonuca(istenilen sonuca, test doğruluk oranının en yüksek olduğu sonuca) ulaşana kadar devam etmektedir. İstenilen sonuca bazen hiç ulaşılamayabilir bu düşünülerek eğitim için bir sınır koyulması önemlidir.
- Veri setinin de yeterli olması performans için oldukça önemlidir.

Epoch:
Tüm veri setinin sinir ağları boyunca bir kere gidip gelmesine(ağırlıkların güncellenmesi) epoch denir.
Epoch'un arttırılması daha iyi verim sağlamayabilir tam tersine eğitim verisini ezberlemeye başlamasına neden olabilir ve yeni bir veride(eğitim verisinde olmayan) sonuçları istenilen performansta olmayabilir. Epoch'un az olması da istenilen performansa ulaştırmayabilir.

Batch:
Bir epoch içerisinde,  veri seti içerisindeki bir veri dizisi sinir ağlarında sona kadar gider daha sonra orada bekler batch boyutu kadar veri sona ulaştıktan sonra hata oranı hesaplanır ve optimizasyon işlemi yapılır(ağırlıklar güncellenir).

Aşağıdaki animasyonda örnek bir sinir ağı eğitimi gösterilmiştir:

Umarım yararlı olmuştur.
Sorularınızı, isteklerinizi ve önerilerinizi bekliyorum.
İyi çalışmalar dilerim.