You are on page 1of 70

Yapay Zeka Başlangıç Rehberi

Machine Learning, Deep Learning, Computer Vision, NLP

www.cihanozhan.com

Version : 02/2020
Sunumun Hedefi
• Yapay zekanın temel felsefesine genel bir bakış atmak.
• Yapay zeka hakkında temel bir bakış açısı kazandırmak.
• Yazılım geliştiricilere yapay zeka ile ilgili temel algoritmik bakış açısını kazandırmak.
• Yapay zeka geliştirmek için kullanılabilecek açık kaynaklı çözümleri tanıtmak.
• Düzenli güncellemeler ile genel ve hızlı bir başlangıç kaynağı oluşturmak.
Taklit Nedir?
Biyomimetik
Biyotaklit & Yapay Zeka
• Yapay zeka da temel olarak bir biyotaklit ürünüdür.
• İnsan beynindeki nöronların çalışma mekanizması ve çiziminin ortaya
çıkarılmasıyla birlikte bilgisayar bilimciler tarafından ilgili çalışma yönteminin
dijital bir taklidinin oluşturulması fikriyle yapay zeka ortaya çıktı.
• Halen daha eğer computer vision’u anlamak isterseniz insan/canlı görme
yeteneğini incelemeniz, yapay zekayı anlamak için de sinir bilimi alanında en
azından temel bilgilere sahip olmanız gerekir.
Yapay Zeka Nedir?
• Bazen “Hesaplamaya Dayalı Zeka - Computational Intelligence” de adlandırılır.

• Yapay Zeka kavramı 1957 yılında Dartmouth New Hampshire’de yapılan bir
konferansta ortaya atılmıştır.

• Bu konferansta insan zekasının benzetişiminin oluşturulması ve düşünen


bilgisayarlar sorunları tartışılırdı.

• ‘Düşünme ve akıllı davranış mekanizmasının bilimsel anlatımı ve bu


mekanizmanın makinelerde somutlandırılmasıdır’ (The American Association
for Artificial Intelligence)

• ‘Yapay Zeka, insanın zekasını kullanarak yapabildiği işleri yapabilen makinenin


oluşturulması hakkında bilimdir.‘ (Marvin Minsky.)
Yapay Zeka Türleri
• Yapay Zeka temelde ikiye ayrılır:
– Dar Zeka ya da Yapay Zeka
– Güçlü Zeka ya da Yapay Genel Zeka
Yapay Genel Zeka
(AGI)
• İnsan biyolojisinin birçok gelişmiş fonksiyonunu tam olarak taşıyabilen zeka
türüdür.

• Matematiksel(hesaplama) zeka, görsel algılama, konuşma ve ses tanıma,


hareket, muhakeme gibi kabiliyetlerinin yanında kendi kendine öğrenebilen
yazılımsal ve donanımsal sistemler bütünüdür.
YSA’nın Dirilişi!
• Son diriliş 2009 ve 2012 yıllarında başladı.
• 2009’da G. Hinton ve öğrencileri konuşma tanıma problemi(speech
recognition) için yeni bir eğitme yöntemi geliştirdi.
– Eğitmensiz(unsupervised) öğrenme ile ağı ilklediler.
– Ağın sonuna eğitmenli(supervised) katmanı ekleyip geriyayılım(back-propagation) kullandılar.
– Ve en iyi sonuç veren model bu sayede geçildi!
– Bu yöntem Android telefonlarda 2012’den beri kullanılıyor.
• Yeni düzenlileştirme yöntem fix : Dropout
– Overfitting dediğimiz ezberlemeyi önleyen yeni bir yöntem.
• Tartışmasız en güçlü yapay zeka çalışma alanı Computer Vision
– ILSVRC 2012 yarışmasında işlenebilecek 1.2 milyon görüntü ve 1000 sınıf vardı.
– Problem : Verilen görüntüdeki baskın nesneyi tahmin etmeye çalışarak 5 tahmin üretmek. Bu
tahminlerden biri doğru ise model başarılı sayılır.
• G. Hinton ve öğrencisi Alex Krizhevsky, 2009’daki yöntemi kullanarak 7
katmanlı bir evrişimsel sinir ağı eğitti(CNN, Convolutional Neural Network)
– Günümüzde bu ağa AlexNet diyoruz.
Kaynak : G. Hinton’nın Royal Society’de verdiği konuşma, 22 Mayıs 2016,
https://youtu.be/izrG86jycck
Yapay Zeka
Bilimsel Temelleri
• Bilgisayar Bilimleri ve Müh. : Donanım ve Yazılım
• Felsefe : Muhakeme Kuralları
• Matematik : Mantık, Algoritma ve Optimizasyon
• Kavram Bilimi ve Psikoloji : İnsanın Düşünce Sürecinin Model.
• Sinir Bilimi : İnsanın Aşağı Seviyede Beyin Faaliyet Model.
• Biyoloji : Taklit Bilimi
• Dilbilim : Temel Bilgisayar Bilimi
Yapay Zekanın Kapsamı
• İnsan Modeli Üzerinden Yapay Zeka
– Beyin(Algı ve Öğrenme) : Machine Learning / Deep Learning
– Görü : Computer Vision
– Hafıza : BigData
– İletişim : NLP & Speech Recognition
– Fiziksel Beden : Robotics & IoT
Yapay Zeka
Alt Kavramlar
• Artificial Intelligence (AI)
• Machine Learning (ML)
• Deep Learning (DL)
• Data Science (DC)
– Machine Learning + Deep Learning + Domain
• Computer Vision (CV)
• Natural Language Processing (NLP)
• Data Engineering
– DevOps + Machine Learning
Neuron Vs Neural Network
Terminoloji
• Gözlem (Observation)
– Öğrenme ve değerlendirme süreçlerinde kullanılan veri parçalarına denir.
– Örn : Spam tespit modeli için her bir e-posta birer gözlemdir.
• Özellik (Feature)
– Gözlemi temsil eden verilere denir. Bunlar genellikle sayısal değerlerden oluşur.
– Örn : Spam tespiti için kullanılan her bir e-postanın seçilmiş kelimeleri, gönderim tarihi,
uzunluğu, başlık uzunluğu vb…
• Etiket (Label)
– Gözlemler için hazırlanmış kategorilerdir.
– Örn : Spam tespiti için spam ya da spam-degil
– Örn : Nesne tespiti için insan, hayvan ya da bunların da alt kırılımı olarak erkek, kadın,
çocuk, yaşlı, genç vb…
Training & Test
(DataSet)
Terminoloji
(Training & Test DataSets)
• Training DataSet
– Algoritmanın(modelin) öğrenmesi için sunulan gözlem verisine denir. Model bu sunulan veri
üzerinden çeşitli çıkarımlarda bulunur.
– Örn : Spam tespiti örneğinde çok sayıda spam ya da spam-degil etiketlerine sahip e-postalar.
• Test DataSet
– Gözlemler ile eğitilen algoritmanın(modelin) ne kadar doğru karar verebildiğini test etmek
için kullanılan veri setidir.
– Modelin eğitilmesinden sonra modele sunulur.
– Eğitim setinden tamamen farklı ve modele sunulmamış verilerden oluşmalıdır.
– Eğitim bittikten sonra etiketsiz olarak modele sunulur ve modelin tahminlerde
bulunması(etiketlerin) beklenir.
– Örn : Spam tespitinde spam olup olmadığı bilinen ama modele etiketlenmiş olarak verilmemiş
e-posta gözlemleridir.
Öğrenme Türleri
(Supervised Learning)
Öğrenme Türleri
(Supervised Learning)
• Bu yöntemde sistem farklı veriler ile beslenerek oluşturulan modelin sonuçları
hedef çıktılar ile karşılaştırılır. Oluşan hatalar sistem tarafından minimize
edilmeye çalışılır.
• Etiketlenmiş gözlemlerden oluşan öğrenme sürecidir.
– Etiketlenmiş ne demektir : Örn. bir spam modelini eğitmek için ipuçları vermelisin.
• Hediye kazandınız, para kazan, 1.234.567 dolar kazandınız gibi…

• Sınıflandırma (Classification)
– Her bir gözlem için bir kategori/sınıf atamasının yapılarak verinin sınıflandırılmasının sağlandığı
yöntemdir.
• Örn : bu otomobil kiralanabilecek en kötü araba (negatif)
• Örn : güzel hizmet, memnun kaldım, makine akıyor (pozitif)

• Regresyon (Regression)
– Her bir gözlem için öğrenilen verilere bakarak değer tahmini yapmaya denir.
• Örn : 2010 yılında inşa edilen, İstanbul’un X semtindeki 5. kattaki bir evin fiyatı 1.500.000 TL’dir.
• Evin balkonu, oda /banyo sayısı, denizi görüyor mu?, deprem bölgesinde mi vb ek bilgiler…
Öğrenme Türleri
(Unsupervised Learning)
Öğrenme Türleri
(Unsupervised Learning)
• Bu yöntemde hedef çıktılar verilmez, modelin kendi içinde verilen
girdilerden bir şablon oluşturması beklenir.
• Etiketsiz gözlemlerden öğrenme yapılan süreçtir.
• Algoritmanın(model) örüntü keşifleriyle kendi kendine öğrenmesinin
beklendiği bir yöntemdir.
• Kümeleme (Clustering)
– Gözlemlerin homojen bölgelere ayrıldığı algoritmadır.
– Örn : Bir şehir ya da ülkedeki sosyolojik insan gruplarını gruplamak.
• Boyut Azaltımı (Dimensionality Reduction)
– Gözlemlerin özellik sayısını sadeleştirir(az/öz) ve en iyi öğrenme imkanını sunmayı
hedefler.
Öğrenme Türleri
(Semi-Supervised Learning)
Öğrenme Türleri
(Reinforcement Learning)
• Pekiştirmeli ögr̆ enme, gözetmeli ögr̆ enmenin özel bir halidir. Modele
hedef çıktılar verilmez, onun yerine modelin çıktılarını ne ölçüde doğru
olduğunu belirten dereceler verilir.
Yapay Zeka Projesine Hazırlık
• Sorun nedir?
– Soruna göre yapay zeka alt başlığına odaklanılacak. Bu nedenle önemli.
– Örn : Bir görüntü üzerine bir sorun çözülecek ise ilgili algoritmalar, teknolojiler ve kurallar
belirlenir.
• Yapay zeka ile çözülecek sorun üzerine bir domain uzmanı var mı?
– Finans alanındaki yapay zeka sorununu sadece en iyi yazılımcılara sahip olarak çözemezsiniz.
Aynı zamanda finans alanında iyi ve teknik süreçlerden de anlayan finansçılar da gerekir.
• Başarı hedefi nedir?
– Yapay zeka ile çözülecek sorun belirlenmiş olabilir ancak hedeflenen başarı oranı nedir? Eğer
başarı oranı belirlenmediyse modelin testi sonrasında elde edilen başarı oranının bir anlamı
olmayacaktır. Karşılaştırma yapabilmek ve testin başarı oranını ölçebilmek için başarı oranı
hedefi belirlenmelidir.
• Sorunu çözmek için yeterli veriye sahip misin?
– Eğer yeterli veri yok ise veri çoğaltmak için çeşitli yollar bulunmalı ve teknikler uygulanmalıdır.
• Doğru teknolojileri seçtiğine emin misin?
– Her sorunu çözmek için farklı bakış açıları ve teknolojiler gerekebilir. Çeşitli performans ve
yeterlilik karşılaştırmalarını inceleyip daha sonra karşılaşılacak sorunlar bertaraf edilebilir.
Yapay Zeka Projesine Hazırlık
• Maliyet hesabı yapıldı mı?
– Yapay zeka da göreceli olarak en yüksek maliyet kalemlerinden biri donanımsal hesaplama
gücüdür. Özellikle resim, video, ses gibi veriler üzerinde yapılacak çalışmalarda yüksek GPU,
CPU, RAM, HDD vb. gibi birçok temel gider oluşur. Bunlar hesaplandı mı? Cloud’da yaparız
diyebilirsin! Cloud maliyetleri hesaplandı mı? Cloud daha tuzlu da olabilir…
– Yapay zeka projelerinin çoğunda geliştirme süresini tahmin etmek pek mümkün değildir.
Genellikle ve muhtemelen geliştirme sırasında ciddi ertelemeler olacak. Buna hazır mısın?
– Bir dedicated server kurup bir verimerkezine koyup yayın yaparım diyebilirsin! Ancak yüksek
hesaplama yapan bilgisayarlarda yüksek ısı oluşur ve yüksek elektrik enerjisi harcar. Bu
durumda ilgili verimerkezi senin sunucunu kendi ağına dahil etmek istemeyebilir. Alternatifin
var mı?
– API olarak sunulacak görüntü analizi yapan bir yapay zeka projesinde sunucu maliyetleri
yüksek olacaktır. Müşterinin/istemcinin client ve mobil cihazlarını kullanarak maliyeti
düşürme yöntemine gidebilirsin ancak bu sefer de birden fazla platform için ayrı ayrı
geliştirme maliyetini hesaplaman gerekir.
– Özel bir sorunu çözeceksen verisetini kendin oluşturmak zorundasın. Mesela 500 bin
resimden oluşacak bir verisetini hazırlamak için yeterli eleman kaynağın var mı? Her bir resim
üzerinde çalışılması gerekir. Ve bunun standartları belli… Süreçleri bilen ekibin var mı? Olmak
zorunda! Stratejin nedir?
Yapay Zeka Projesine Hazırlık
• Yapay zeka uygulamasını geliştirdin. Ya DevOps süreçleri?
– Yapay zeka yazılımlarının ölçeklenmesi, yüksek trafik altında optimize edilmesi ve tüm
sunucu yönetimleri diğer yazılım projelerinden epey farklıdır. Bu süreçler için tecrübeli
DevOps uzmanı/larına ihtiyacın olacak. Bunlara Data Engineer diyoruz.
Model Hazırlık Süreci
• Veri Bulma & Oluşturma (VeriSeti/DataSet)
– Metin, görüntü(araç, insan, tümör vb.), sayısal ölçümler, sosyal ağlar, genetik verisi vb…
• Veri Temizleme
– Hatalı, geçersiz ve gereksiz verilerin temizlenerek verinin kullanışlı hale getirilmesi.
• Veri Bölümlendirme
– Hazırlanan verinin eğitim ve test olmak üzere ikiye ayrılması.
– Genellikle %80-20 ya da %70-30 oranlarıyla bölünmesi önerilir.
• Özellik Çıkarımı (Feature Extraction)
– Ham veriden özellik çıkarımı yapmak
– Çıkarılan özelliklerden özellik seçimi(feature selection) yapmak
– Bu süreçte domain bilgisi önemli…
• Model Oluşturma
– Özellik çıkarımından sonra model bu matris üzerinde çalışmaya başlar ve çeşitli kurallar çıkarır.
• Değerlendirme
– Bu süreçte eğitilmiş modeli test verisiyle test ederiz.
• İyileştirme
– Bu süreç sonunda model yeterince başarılı değilse sorunlar tespit edilir ve model güncellenir.
– Veri -> Temizleme -> Özellik Çıkarımı -> Öğrenme Algoritması -> Model -> Değerlendirme -> İyileştirme ->
Temizleme -> …
• Tahmin
– Eğer eğitilen model test verisi üzerinde başarıyla çalıştıysa uygulama ortamına hazır demektir.
Etiketleme
(Labeling)
Etiketleme
(Labeling)
Etiketleme Araçları
• Etiketleme araçları için GitHub kaynakları
– github.com/heartexlabs/awesome-data-labeling
– github.com/jsbroks/awesome-dataset-tools
– github.com/rodrigofay/awesome-data-labeling
Data Augmentation
• Data Augmentation temel olarak iki amaçla kullanılabilmektedir.
– Yapay zeka uygulamalarındaki ezberleme sorununu çözme tekniklerinden biri
– Modeli eğitmek için gerekenden daha az veriye sahip olunduğu durumda veri çoğaltmak.
Data Augmentation
AI Ortamı
(Özet)
• Donanım
– CPU
• Sadece alıştırma kodları için…
– GPU
• Ürün ortamı için mecburi
– HDD
• Yüksek depolama alanı ve hızlı disk okuma-yazma kapasitesi
• Yazılım
• Cloud Computing
– Depolama hizmetleri, metinsel, görüntü ve ses gibi verilerin depolanması ve işlenmesi.
– Cloud tabanlı hazır yapay zeka servislerinin kullanılması.
• Zaman!
– Doğru algoritma seçimi, model geliştirme, model eğitme…
Donanımsal Bakış
• NVIDIA CUDA GPUs
– developer.nvidia.com/cuda-gpus
– CUDA Toolkit
• developer.nvidia.com/cuda-downloads
• PyTorch : 9.2
• TensorFlow : 10.1
– cuDNN SDK (>= 7.6) (Deep Neural Network library)
• developer.nvidia.com/cudnn
– CUPTI (CUDA Profiling Tools Interface)
• docs.nvidia.com/cuda/cupti/
• Özel ML/DL Bilgisayarı(Örnek) : lambdalabs.com/
– Bu örnek bir ML geliştiricisi için gereken bilgisayar özelliklerini anlatmak amacıyla verilmiştir.
– Bu tür bilgisayar konfigürasyonlarını inceleyerek kendiniz de toplayabilirsiniz.
– Ancak ürün ortamında yayın hizmeti verecek bir sunucuyu hazırlamanın çook daha fazla
detayı bulunmaktadır.
Hangi Model?
• CNN (Convolutional Neural Networks - Evrişimli Sinir Ağları):
– Nesne tanıma ve takip etme, stil transferi, kanser tespiti vb.
• LSTM (Long Short Term Memory – Uzun/Kısa Süreli Bellek):
– Doğal dil işleme, çeviri, chatbot, finans uygulamaları vb.
• GAN (Generative Adversarial Networks - Çekişmeli Üretici Ağlar):
– Sentetik veri üretme, sahte yüz üretme, stil transferi vb.
• RL (Reinforcement Learning - Pekiştirmeli Öğrenme):
– Kendi kendine ve az veriyle öğrenen yapay zeka sistemleri vb.
Hangi Programlama Dilleri?
• Python
– ML çalışmalarında kullanılan en yaygın dildir. Başlangıç, hızlı proje üretme amacıyla ve start-up projeleri için önerilir.
• C/C++
– İleri seviye, yapay zeka altyapı/library gibi yüksek performans gereken projelerde önerilir.
• Java
– Eğer ‘Biz Java biliyorum, hızlı bir şekilde nasıl öğrenebilirim’ diyorsan sınırlı da olsa kaynak var.
– Ancak çok tecrübeli Java ekibi yoksa önerilmez.
• R
– ‘Ben uygulama geliştirici değilim, istatistik temelim var ve bu tür uygulamalarda çalışıyorum’ diyorsan önerilir ve çok
yaygındır. Yapay zeka uygulama geliştirici girişim ya da bir yazılım odaklı girişim için faydası sınırlıdır.
• JavaScript
– Machine Learning ve Deep Learning odaklı web projelerinde bazı hesaplama yüklerini client’a yıkmak için önerilir. Ayrıca
cross-platform mobil uygulamalar için de entegre edilebilen çözümlere sahiptir.
• C#
– Performans ve dil gücü olarak yapay zeka da etkili olabilecekse de açık kaynakta amiral gemisi olmaktan şuan için uzak. Ancak
bir C# geliştiricisi olarak herhangi başka bir dil öğrenmeden machine learning, deep learning, computer vision projeleri
geliştirilebilecek kadar kaynak ve proje mevcuttur.
• Go
– Güç ve performans olarak çok iyidir. Şahsen yapay zeka uygulamalarında gelecek vadettiğini düşünsem de bu tür projelerde
kod yazma maliyeti yüksektir. Sınırlı open-source proje nedeniyle iyi bir Go geliştirici olmak ve ciddi bir proje geliştirme
süresine ihtiyaç vardır.
• Rust
– Bu listedeki en performanslı dillerden biridir. Sistem ve işletim sistemi seviyesinde çalışmalarda kullanılabilecek kadar
güçlüdür. Hesaplama gücü nedeniyle henüz ürün ortamında olmasa da AR-GE amacıyla araştırmalar yapılması tavsiye edilir.
Programlama Dilleri
• Python
– github.com/vinta/awesome-python
– slideshare.net/cihanzhan/python-programlama-dili
• C/C++
– github.com/fffaraz/awesome-cpp#machine-learning
– awesome-cpp.readthedocs.io/en/latest/README.html
– dlib.net/ml.html
– mlpack.org/
• JavaScript
– tensorflow.org/js
• C#
– scisharp.github.io/SciSharp/
– cihanozhan.com/csharp-net-makine-ogrenmesi-derin-ogrenme-kutuphaneleri/
• Go
– cihanozhan.com/golang-machine-learning-libraries/
• Rust
– arewelearningyet.com/
Programlama Dili ve Ortamlar
(Alternatif)
• Scala
• Julia
• Octave
• MatLab
Başlangıç Rehberi
(Geliştirici)
• Kişisel Bilgisayarlar
– Python, Anaconda, VSCode(Önerilir), PyCharm vb…
• Bulut Bilgisayar Çözümleri (Ücretsiz)
– Microsoft Azure Notebook (CPU Destekli)
• notebooks.azure.com/
– Google Colab (GPU Destekli)
• colab.research.google.com/

• Bulut Bilgisayar Çözümleri (Ücretli)


– Amazon Machine Learning
• aws.amazon.com/machine-learning
– Google Cloud
• cloud.google.com/ml-engine/
– MS Azure ML Studio
• studio.azureml.net/
– IBM Watson
• ibm.com/tr-tr/cloud/machine-learning
Kütüphaneler
(Genel)
• TensorFlow : tensorflow.org/
– Google’ın, karmaşık, yaygın
– TensorFlow Lite : tensorflow.org/lite
– TensorFlow.js : tensorflow.org/js
• PyTorch : pytorch.org/
– Facebook’un, sade, performanslı, yaygın, güçlü
– PyTorch Mobile : pytorch.org/mobile/home/
– PyTorch3D : github.com/facebookresearch/pytorch3d
• Keras : keras.io/
– Daha az kod, başlangıç için önerilir
• NLTK : nltk.org/
• CNTK : github.com/microsoft/CNTK
• ML.NET : dotnet.microsoft.com/apps/machinelearning-ai/ml-dotnet
• Theano : github.com/Theano/Theano
• MxNet : mxnet.apache.org/
• Torch : torch.ch/
• Caffe : caffe.berkeleyvision.org/
• Knet : github.com/denizyuret/Knet.jl
Kütüphaneler
(Çeşitli)
• SciKit-Learn : scikit-learn.org/
• Pandas : pandas.pydata.org/
• NumPy : numpy.org/
• H20 : h2o.ai/
• Matplotlib : matplotlib.org/
• Shogun : shogun-toolbox.org/
Kütüphaneler
(Web)
• TensorFlow.js : tensorflow.org/js
• Terrasect.js : github.com/naptha/tesseract.js
• OpenCV.js : docs.opencv.org/3.4/d5/d10/tutorial_js_root.html
• Brain.js : github.com/BrainJS
• ml.js : github.com/mljs/
• stdlib-js : github.com/stdlib-js/stdlib
• machinelearn.js : github.com/machinelearnjs/machinelearnjs
• math.js : github.com/josdejong/mathjs
• face-api.js : github.com/justadudewhohacks/face-api.js
• Natural : github.com/NaturalNode/natural
Kütüphaneler
(Mobile)
• TensorFlow Lite
– tensorflow.org/lite/
– tensorflow.org/lite/examples/
• PyTorch Mobile
– pytorch.org/mobile/home/
• Google ML Kit for Mobile
– developers.google.com/ml-kit/
• CoreML
– developer.apple.com/machine-learning/
– developer.apple.com/documentation/coreml
• OpenCV Mobile (Deneysel)
– opencv.org/android/
– opencv.org/opencv4android-samples/
Chatbot Araçları
• Microsoft Bot Framework : dev.botframework.com/
• Wit.ai : wit.ai/
• Dialogflow : dialogflow.com/
• IBM Watson : ibm.com/watson/how-to-build-a-chatbot
• Pardorabots : home.pandorabots.com/home.html
• Botpress : botpress.io/
• Botkit : botkit.ai/
• RASA Stack : rasa.com/
• ChatterBot : github.com/gunthercox/ChatterBot
DataSet
• Kaggle Datasets : www.kaggle.com/datasets
• Google DataSet Search : toolbox.google.com/datasetsearch
• Baidu DataSets : ai.baidu.com/broad/introduction
• UCI Machine L. Repository : archive.ics.uci.edu/ml/index.php
• MNIST : yann.lecun.com/exdb/mnist/ (Handwritten Digits)
• ImageNet : www.image-net.org/ (WordNet Hierarchy)
• CIFAR-10 & CIFAR-100 : www.cs.toronto.edu/~kriz/cifar.html (Tiny Images)
• COCO : cocodataset.org/
• Places : places.csail.mit.edu/ (Natural Scenes)
• USA Government : catalog.data.gov/dataset
• OpennEuro : openneuro.org/public/datasets
• HealthData.Gov : healthdata.gov/search/type/dataset
• RAVDESS
– The Ryerson Audio-Visual Database of Emotional Speech and Song
– https://www.kaggle.com/uwrfkaggler/ravdess-emotional-speech-audio
• DBNet (Driving Behavior DataSet)
– www.dbehavior.net / github.com/driving-behavior/DBNet
S.S.S
• Cihan Özhan bir yapay zeka uzmanı mıdır?
– Hayır, ben bir araştırmacıyım, blockchain, yapay zeka(ML, DL, CV vb.) dahil birçok ileri seviye alanda
girişim/proje geliştirmeye çalışıyorum ve birçok farklı konuda tecrübeye sahibim, öğrenmeyi ve
bildiğim kadarını da doğru şekilde anlatmaya çalışan bir teknoloji geliştiricisi, girişimcisi ve yapay
zekayı sektörel olarak uygulayan bir yapay zeka uygulayıcısıyım.
• Yapay zeka sadece bir yazılım/programlama konusu mudur?
– Kesinlikle hayır! Bazı uzmanlıklar çok disiplinli araştırma, bilgi ve tecrübe gerektirir. Yapay zeka da
tartışmasız bunlardan biridir. Bu nedenle bu sunum biyoloji ve taklitin birleşimi olan biyomimetik’ten
başlatılmıştır. Ve bundan çok daha ötesidir. Şahsi yorumuma göre yapay zeka gibi konularda
‘uzmanlık’ tanımını kullanmak çok ciddi zaman ve bu zaman ile çok derinlemesine ilgili konulara
odaklanmayı ve disiplinli çalışmayı gerektirir. Şahsen uzmanlaşmaya değil, sorunlar bulup bunları
teknoloji kullanarak çözmeye odaklanmayı tercih ediyorum. Bunu yaptığınızda belli bir tecrübeden
sonra uzmanlıklar peşinden gelecektir.
• Yazılım/yapay zeka gibi konularda iyi bir üniversite eğitimi zorunlu mudur?
– Yapabiliyorsanız yapın, aksi halde zorunlu ve mahkum değilsiniz diye özetlenebilir. Matematik,
İngilizce ve yazılım öğrenme, internete erişim gibi konularda kimse sizden üniversite diploması
beklemiyor. Eğer tüm bunları yapabiliyorsanız herhangi bir alanda uzmanlaşabilirsiniz. Ucuz bir
bilgisayarda kod yazmayı öğrenip Tesla ya da SpaceX’de çalışabilirsiniz. SpaceX’de çalışmak için iyi
seviyede matematik bilgisi ve bunu C/C++, Rust ve Go gibi dillere dökebilecek algoritmik ve
programlama bilgisine sahip olmanız ve çook büyük bir artı olarak da uzay ve uzay teknolojileri
alanında iyi seviyede ilgi ve bilgi sahibi olmanız beklenir. Dikkat ederseniz üniversite diplomasını
saymadık! Ama bunların yanında bir de en iyi eğitim veren yerlerden eğitim aldıysanız tabi ki
değerinizi artırmış olursunuz. Sektör için önemli olan şey: motivasyon, ilgi, bilgi ve tecrübedir. Gerisi
gereksiz tartışmadır. Sadece sınırlı sayıda ve şuan konumuz olmayan sebeplerden dolayı mühendislik
mezuniyetini şart koşmak zorunda olan kurumsal firmalar var. Ancak bunlar çok azınlıktadır ve
üniversite sorma nedeninin teknik bilgiyle ilgisi yoktur.
S.S.S
• Yapay zeka geliştiricisi olmak için üstün matematik bilgisi gerekli midir?
– Cevap göreceli, buna örnek olarak oyun geliştirmeyi gösterebiliriz. Eğer oyun sektöründe
uygulama geliştiricisi olacaksanız Unity gibi oyun motorlarıyla hızlı ve matematikle pek
ilgilenmeden oyun geliştirebilirsiniz. Halbuki, gerçek anlamda oyun geliştirme tamamen
matematikle ilgilidir. Ancak sizin yerinize library, framework, platformlar geliştirerek bu
uygulamaların geliştirilmesini kolaylaştıran binlerce çözüm üretilmektedir. Onları
geliştirenler çok iyi derecede matematik, fizik vb. bilgilere sahip olmalıdır, ki öyleler. Eğer
hedef yapay zeka alanında akademik bir kariyer yapmak ise ‘evet, işin matematik teorisini
çok iyi bilmelisiniz’. Ancak hedef uygulama geliştirici olmak ise ‘hayır, gerekli araç-gereçler
ve onların programsal çalışmaları üzerinde tecrübeli olmalısınız’. Yapay zeka uygulama
geliştiricisi olmak için lise seviyesindeki matematik yeterlidir. Hepimiz yapay zeka üstadı
olmayacağız, normal geliştiriciler de gerekiyor. Ancak derinlere dalmak için matematik şart!
• Yapay zeka’dan neden korkuluyor?
– Genel olarak yapay zeka’dan değil, AGI dediğimiz Artificial General Intelligence’dan
korkuluyor. AGI’da muhakeme yeteneğinin yapay zekaya kazandırılmış olması gibi birçok
insana özgü ve henüz matematiğini çıkaramadığımız yetenekler ile yapay zeka kendi
kendine özgün ve üstün karar verme yeteneğine sahip olabilecek. AGI yeteneklerine sahip
bir yapay zeka oluşturma ilgili öngörüler 2040-2050 yıllarına kadar atılıyor. Kimileri de AGI’ı
insanın değil, başka bir güçlü yapay zekanın geliştireceğine inanıyor.
S.S.S
• Yapay zeka tarafında uzmanlaşmak için iyi bir yazılım geliştirici olmalı mıyım?
– Kesinlikle evet! Eğer akademisyenlik yani işin teorisi tarafında bir kariyer planınız yoksa iyi bir
yazılımcı olmadan yapay zeka tarafında ne bilgili, ne tecrübeli ne de değerli olamazsınız. Çünkü
yapay zeka her ne kadar çoklu disiplinlerarası bir alan olsa da nihayetinde bu bilgilerin gerçek
hayata aktarılması için yazılım kullanılmaktadır. İster robotikle ilgilenip uçan bir Iron Man yapın
isterseniz NLP ile bir chatbot geliştirin, sonuç değişmez! Bunların hepsinde yazılım en temel
ihtiyaçtır.
• Yapay zeka için hangi programlama dilinde uzmanlaşmalıyım?
– Özet olarak, her programlama diliyle yapay zeka uygulaması geliştirilebilir diyebiliriz. Ancak her
dilin geliştirilme hedefi, çözdüğü sorun, güç, performans, hız, güvenlik, kolay öğrenilebilirlik,
open-source tarafındaki cezbediciliği gibi birçok farklılıkları ve avantaj ile dezavantajları var.
Uzun bir makale konusu olmakla birlikte özet olarak Python yapay zeka alanında özellikle yeni
başlayanlar için önerilebilecek en optimum dildir diyebiliriz.
• Python yapay zeka uygulamaları için mi geliştirildi?
– Hayır, maalesef sektöre yeni girenleri yanlış yönlendiren yanlış kişiler nedeniyle Python’a
mahkum olunduğunu düşünen çook(!) tecrübeli geliştirici ve mühendisler bile mevcut.
Herhangi bir programlama diliyle yapay zeka uygulamaları geliştirilebilir. Ancak Python kolay
öğrenilebilir, open-source camiasındaki yaygınlığı ve daha birçok sebep nedeniyle yapay zeka
uygulama ve eğitim kaynaklarında en çok tercih edilen dil oldu.
S.S.S
• Yapay zekanın tüm alt dallarında uzmanlaşmalı mıyım?
– Hayır, eğer metiksel işlemlerle ilgilenmeyi seviyorsanız NLP üzerine çalışmanız ve bu alandaki
algoritmaları incelemeniz daha doğru olabilir. Ancak örüntüler üzerinde çalışmayı daha çok
seviyorsanız CNN, OpenCV ve ilgili deep learning algoritmalarına odaklanmanız daha doğru
olacaktır. Ancak zihninizi sınırlamaya gerek yok, bir alanda uzmanlaşırken boş zamanlarınızda
diğer konuları da incelemeniz ve küçük çaplı da olsa uygulamalar geliştirmeniz size yeni bakış
açıları ve uzmanlıklar kazandıracaktır.
• Computer Vision bir yapay zeka alt dalı mıdır?
– Teknik olarak hayır, görüntü işleme çalışmalarıyla yapay zeka çalışmaları birbirinden tamamen
bağımsız olarak başladı ve gelişti. Yıllar önce de görüntü işleme çözümleri üretilebiliyordu(örn
OpenCV). Ancak günümüzde yapay zekanın çözmesi gereken sorunların başında görüntü
üzerinden anlamlar çıkartmak yer alıyor. Bunu ister yüz tanıma olarak düşünün ister bir
endüstri problemi ya da insansız otomobil ile insansız savaş uçakları… Hepsinde görüntülerden
anlam çıkarma problemi var. Bu nedenle zamanla Deep Learning ile Computer Vision iç içe
kullanılır hale geldi ve artık CV’yi yapay zeka eğitimlerinden ayırmada anlatıyoruz ve
problemleri de bu şekilde çözüyoruz.
• Computer Vision’u ayrı olarak mı çalışmalıyım?
– Eğer derinlemesine konuyu anlamak isterseniz cevabım evet, bu apayrı ve çok derin bir konu.
Bu alanda ayrı çalışmalar yapıp daha sonrasında deep learning ile birleştirebilirsiniz.
Genel Kültür

Herhangi bir konuyu anlayabilmek ve


derinlemesine kavrayabilmek için o konunun
genel kültürüne hakim olmalısınız. Bu nedenle
belgesel, film, diziler ve hatta çizgi romanlar dahi
önemlidir. Önemli olan nasıl ve hangi derinlikte
baktığınızdır.
Film
• Matrix, 1999
• Yapay Zeka, 2001
• Ex Machine, 2014
• Kartal Göz, 2008
• Azınlık Raporu, 2002
• Transcendence, 2014
• Chappie, 2015
• Blade Runner : 2049, 2017
• Ben Robot, 2014
• Ölüm Makinesi, 2013
• Automata, 2014
• Alita : Savaş Meleği, 2019
• Kill Command, 2016
• Terminator, 1984
• RoboCop, 1987
Dizi
• Person of Interest, 2011
• NUMB3RS, 2005-2010
• HUMANS, 2015
• Intelligence, 2014
• Minority Report, 2015
• Almost Human, 2013-2014
• Battlestar Galactica, 2004-2009
• Caprica, 2009-2010
• Black Mirror, 2011
• Mr. Robot, 2015
Belgesel
• İşte Yapay Zeka : youtube.com/watch?v=PIj3zLplukI
• Gelecek Yapay Zeka Dahi Robotlar : youtube.com/watch?v=cSNECkHJ_oo
• The Rise of Artificial Intelligence : youtube.com/watch?v=2EWDDUGNhKM
• Artificial intelligence and its ethics : youtube.com/watch?v=Izd2qOgOGQI
• Artificial intelligence & algorithms: pros & cons : youtube.com/watch?v=s0dMTAQM4cw
• True Artificial Intelligence will change everything : youtube.com/watch?v=-Y7PLaxXUrs
• Lo And Behold: Reveries Of The Connected World : vimeo.com/198891818
• AlphaGo : youtube.com/watch?v=jGyCsVhtW0M
• The Future of Artificial Intelligence : youtube.com/watch?v=UzT3Tkwx17A
• AI : youtube.com/watch?v=XvjYfVF5vjA
• Road to AI : youtube.com/watch?v=_sNNSEP-P7A
• Artificial Intelligence and Robotics : youtube.com/watch?v=e78Cwf7lGr8
• Singularity Or Bust : youtube.com/watch?v=owppju3jwPE
• The Smartest Machine on Earth : youtube.com/watch?v=X0JZMHhupTs
• Humans Need not Apply : youtube.com/watch?v=7Pq-S557XQU
• The Human Robot – VPRO : youtube.com/watch?v=sXz0boNmwak
• Will robots steal our jobs? - The future of work (1/2) : youtube.com/watch?v=6IOH7b68byk
• Will robots steal our jobs? - The future of work (2/2) : youtube.com/watch?v=NGUbboTjT18
• CS 229 — Makine Öğrenmesi El Kitabı
– Gözetimli Öğrenme El Kitabı
• s tanford.edu/~shervi ne/l/tr/teaching/cs-229/cheatsheet-supervi sed-learning
– Gözetimsiz Öğrenme El Kitabı
• s ta nford.edu/~shervi ne/l/tr/teaching/cs-229/cheatsheet-unsupervised-learning
– Derin Öğrenme El Kitabı
• s ta nford.edu/~shervi ne/l/tr/teaching/cs-229/cheatsheet-deep-learning
– Makine Öğrenmesi İpuçları ve Püf Noktaları El Kitabı
• s tanford.edu/~shervi ne/l/tr/teaching/cs-229/cheatsheet-machine-learning-tips-and-tricks
• CS 230 — Derin Öğrenme El Kitabı
– Evrişimli Sinir Ağları El Kitabı
• s ta nford.edu/~shervi ne/l/tr/teaching/cs-230/cheatsheet-convolutional-neural-networks
– Tekrarlayan Yapay Sinir Ağları El Kitabı
• s tanford.edu/~shervi ne/l/tr/teaching/cs-230/cheatsheet-recurrent-neural-networks
– Derin Öğrenme Püf Noktaları ve İpuçları El Kitabı
• s ta nford.edu/~shervi ne/l/tr/teaching/cs-230/cheatsheet-deep-learning-tips-and-tricks

• Stanford Üniversitesi:
– CS221 : Artificial Intelligence: Principles and Techniques
• web.stanford.edu/class/cs221/
– CS229 - Machine Learning
• s cpd.stanford.edu/search/publicCourseSearchDetails.do;jsessionid=D675581FB0E42483186744CEFEDAB61C?method=load&courseId=11763&showInternal=true
– CS224n - Natural Language Processing with Deep Learning
• web.stanford.edu/class/cs224n/
– CS231n - Convolutional Neural Networks for Visual Recognition
• vi s i on.stanford.edu/teaching/cs231n/
– deeplearnin.ai Kurs Sunumları
• cs 230.s tanford.edu/syllabus/
• MIT (Massachusetts Teknoloji Enstitüsü):
– 6.034-Artificial Intelligence
• ocw.mi t.edu/courses/electrical-engineering-and-computer-science/6-034-artificial-intelligence-fall-2010/
– 6.867 - Machine Learning
• ocw.mi t.edu/courses/electrical-engineering-and-computer-science/6-867-machine-learning-fall-2006/
– 6.S191 - Introduction to Deep Learning
• i ntrotodeeplearning.com/
– 6.S099 - Artificial General Intelligence
• a gi .mit.edu/
– MIT Deep Learning (Lex Fridman)
• deeplearning.mit.edu/
• Hacettepe Üniversitesi:
– CMP784-Deep Learning : https://web.cs.hacettepe.edu.tr/~aykut/classes/spring2018/cmp784/
• Diğer Online Kaynaklar
– Coursera
• coursera.org/courses?languages=en&query=artificial+intelligence
– Udacity
• udacity.com/course/intro-to-artificial-intelligence--cs271
– edX
• edx.org/course?search_query=artifical+intelligence
– fast.ai
• fast.ai/
– Udemy
• udemy.com/courses/search/?q=derin%20%C3%B6%C4%9Frenme&src=sac&kw=derin%20%C3%B6%C4%9Frenme
– Google
• https://ai.google/education/#?modal_active=none

• Derin Öğrenme Kitabı


– Deep Learning Book - Ian Goodfellow and Yoshua Bengio and Aaron Courville
• deeplearningbook.org/

• Cihan Özhan Blog


– cihanozhan.com/category/artificial-intelligence/
İletişim
• Cihan Özhan
– cihan.ozhan@hotmail.com - cihan@deeplab.co
– About : cihanozhan.com/cihan-ozhan/
– LinkedIn : linkedin.com/in/cihanozhan/
– Udemy : udemy.com/user/cihanozhan
– Founder of DeepLab : deeplab.co/
– Founder of DarkFactory : darkfactory.co/
– Founder of Blokzinciri : blokzinciri.co/

Not : Bu sunumu düzenli olarak güncelleyeceğim. Sunumdaki hata, eksik ya


da önerileriniz için yukarıdaki iletişim kanallarından bana ulaşabilirsiniz.

You might also like