18. Akademik Bilisim Konferansi

BaşlıkVeri Bilimi ve Derin Öğrenme: Teori ve Uygulama
ÖğrenciHayır
Yazar(lar) Yazar 1
Name: Berkin Malkoç
Org: Fizik Mühendisliği Bölümü, İTÜ; Miletos A.Ş.
Country: TR
E-mail: berkin_AT_miletos.co

Yazar 2
Name: Atabey Kaygun
Org: Matematik Mühendisliği Bölümü, İTÜ
Country: TR
E-mail: atabey.kaygun_AT_gmail.com

Yazar 3
Name: Kürşat Aker
Org: ODTÜ KKK
Country: TR
E-mail: kaker_AT_metu.edu.tr

Yazar 4
Name: Azmi Can Özgen
Org: Elektronik ve Haberleşme Mühendisliği Bölümü, İTÜ; Miletos A.Ş.
Country: TR
E-mail: azmi_AT_miletos.co

Yazar 5
Name: Mustafa Can Uslu
Org: Fizik Mühendisliği Bölümü, İTÜ; Miletos A.Ş.
Country: TR
E-mail: mustafa_AT_miletos.co

Yazar 6
Name: Onur Kaplan
Org: Elektronik ve Haberleşme Mühendisliği Bölümü, İTÜ; Miletos A.Ş.
Country: TR
E-mail: onur_AT_miletos.co
Anahtar Kelimelerveri bilimi, veri analizi, makine öğrenmesi, derin öğrenme, yapay sinir ağları, öbekleme, sınıflandırma, GPU, GPU programlama
Özet

Veri Bilimi ve Derin Öğrenme: Teori ve Uygulama

Özet

Veri kaynaklarının artması ve bu kaynaklardan gelen verilerin çeşitliliğinin ve kalitesinin artması elimizde biriken veri ile daha önceden hayal bile edemediğimiz şeyleri yapabilmek için önümüze yeni fırsatlar açıyor. Ancak bu fırsatların kullanılabilmesi için daha önce ayrı duran disiplinlere (istatistik, makine öğrenmesi, programlama ve hatta grafik tasarım) ait bilgi ve tecrübe birikiminin --son zamanlarda "veri bilimi" adı verilen bir kesişim alanında-- bir araya getirilmesi gerekiyor. Bunun yanında, birkaç yıldır makine öğrenmesinin birçok uygulama alanında etkileyici düzeylerde başarım sağlayan “derin öğrenme” de kendi içinde birçok kavram ve teknik ayrıntıyı barındırıyor. Bu eğitim programıyla, veri bilimi ve derin öğrenmeye hem kavramsal hem de uygulamalı bir giriş sunmayı; böylece eğitim sonunda katılımcıların kendi veri problemlerini çözecek ve literatürü takip edebilecek noktada olmalarını amaçlıyoruz.

Programın ilk iki gününde veri biliminin temel kavramları ve yöntemlerini ele alacağız. Geri kalan iki günde ise, bu bilginin üzerine derin öğrenme kavram ve uygulamalarını oturtmaya çalışacağız. İki günlük ilk kısmın programını hazırlarken Rob Pike'ın "Programlamanın 5 Kuralı"ndan esinlenerek aşağıdaki prensipleri göz önüne aldık:

  • Veri kullanılacak algoritmaların temelidir. Eğer veri yapısı ve temsili iyi seçilmiş ise eldeki problemin çözümü de rahat bir şekilde ortaya çıkacaktır.
  • Basit algoritmaların uygulaması da bakımı da daha kolaydır.
  • Süslü, janjanlı algoritmalar veri çok büyük değilse daha basit algoritmalardan farkedilecek kadar hızlı değillerdir.

Programın bu ilk kısmını bitiren bir katılımcı, önüne gelen nümerik ya da kategorik bir veri yığını konusunda gerçekleştirebileği en temel istatistik ya da makine öğrenmesi analizlerinden haberdar olacak, ya bunları nasıl baştan uygulayacağını ya da aşina olduğu bir dildeki hangi kütüphaneleri kullanarak nasıl gerçekleştireceğini öğrenecektir.

Eğitimin diğer parçası olan derin öğrenme; görüntü, doğal dil ve ses işleme gibi birçok alanda özellikle de son yıllarda kimi durumlarda insan başarımını geçen düzeyde başarılı ve dolayısıyla popüler oldu [1, 2]. Bu başarının arkasında, sadece çok büyük miktarlarda verinin ve bu veri kümelerini işleyecek donanım kaynaklarının mevcudiyeti değil; zor problemlerin çözümüne uygun derin yaklaşımların, bu kaynaklar üzerinde sonuca ulaşabilmesini yani yakınsayabilmesini ('converge') sağlayan algoritmik yenilikler yatmakta. Derin öğrenmenin, somut başarının önünü açan bu özelliklerinin yanındaki diğer temel ve çok önemli avantajı, uygulayıcıyı öz-nitelik mühendisliğinden ('feature engineering') kurtarması: Böylece, uygulayıcı eldeki problemin çözüme götürecek yönlerini kendi çabaları ve uzmanlığıyla keşfetmeye çalışmak yerine, bu keşif işini de derin öğrenme sistemine bırakabiliyor. Bu sebeple derin öğrenme yaklaşımlarına, eldeki problemin uygun bir temsilini öğrenme anlamında, “temsil öğrenmesi” ('representation learning') ismi de verilebiliyor [1, 2]. Popülerliği son yıllarda artmış olsa da, derin öğrenmenin mevcut noktaya gelmesinin arkasında onlarca yıl geriye giden bir birikim var. Bu sürecin, esas olarak, hayvanların başarısından dolayısıyla biyolojik sinir ağlarından esinlenen yapay sinir ağlarıyla ('artificial neural networks') başladığı söylenebilir. Zamanla, tek katmanlı yapay sinir ağlarında yüksek başarım elde edilemeyişinin gösterilmesinden devamla çok katmanlı ağlara ('multi-layer perceptron') yönelinilmiş ve akabinde problem türlerine uygun çok katmanlı ağ mimarileri keşfedilmiştir. Daha sonra uygulamaya dair teknik problemlerin de aşılmasıyla, iki binli yıllarda ve verinin miktarının çok arttığı günümüzde farklı veri tiplerine uygun belli başlı öne çıkan mimarilerle çok başarılı uygulamalar geliştirilmiştir.

Eğitim ikinci kısmında, derin öğrenmeyle ilgili önceki paragrafta özetlenenleri somutlayacak bir yaklaşımla, teoriyi ve pratiği iki güne sığacak kadarıyla aktarmaya çalışacağız. Teoride, (yapay) nöronların ve sinir ağlarının temellerini ve bunlardan hareketle geliştirilen temel derin öğrenme mimarilerinin özelliklerini ele alacağız. Hangi problem için hangi mimarinin neden seçilebileceğine dair bir sezgi kazandırmaya çalışacağız. Pratikte ise, derin öğrenme sistemi geliştirmeyi, birbiriyle etkileşen çok sayıda doğrusal olmayan birimden oluşan bir sistemin parametrelerini eldeki problemi çözecek değerlere getirmek olarak düşündüğümüzde; bu işi yapacak algoritmaları nasıl gerçekleyebileceğimizi ve ilgili araçları aktaracağız. Buradaki önemli bir altbaşlık, derin öğrenmenin paralelleşmeye çok uygun olan ve milyonlarca parametrenin optimizasyonunu içermesinden dolayı da aslında paralel programlamayı mecbur kılan doğasından dolayı alandaki standart yaklaşım haline gelmiş olan GPU (“grafik işleme birimi” - 'graphical processing unit') kullanımı ve bu amaçla geliştirilmiş programlama çerçeveleri ('frameworks') olacak. Eğitimi, aktarılanları uygulayabileceğimiz örnek problemleri ele alarak tamamlayacağız.

Bu eğitime katılmak isteyenlerin belirli bir düzeyde doğrusal cebir ve kalkülüs bilgisine sahip olmaları faydalı olacaktır. Ayrıca, katılımcının R ya da Python dillerinden birini biliyor olması ve kendi getireceği bilgisayarında kullanmak istediği dilin çalıştırma ortamını (runtime environment) kurmuş ve gerekli olan kütüphaneleri indirmeye hazırlamış olması beklenecektir.  Bunların yanında raporlama için kullanıcılardan jupyter RStudio, knitr, sweave ya da org-mode konusunda az da olsa bilgi sahibi olmaları beklenmektedir.

Eğitim Programı

Veri bilimi - iyi alışkanlıklar

  • Prototip ve uygulama ayrımı
  • Sürüm numaralama
  • Kod ve veri ayrımı
  • Otomasyon ve tekrarlanabilirlik
  • Testler
  • Eğitim ve değerlendirme veri-kümeleri
  • Değerlendirme
  • Tip-I ve Tip-II hata
  • Raporlama

Temel makine öğrenmesi ve istatistik analizleri

  1. Testler
  • t-testi
  • Kolmogorov-Simirnov testi
  • χ2-testi ve Fischer'in testi
  1. Optimizasyon
  • Fiyat fonksiyonları
  • Maksimizasyon ve minimizasyon
  • Nümerik metodlar
  1. Öbekleme ve sınıflandırma
  • Torbalama ve önyükleme
  • Numerik regresyon
  • Lojistik ve multinomyel regresyon
  • k-ortalamalar
  • k en yakın komşular
  • Basit Bayes sınıflandırma
  • Karar ağaçları ve rastlantısal ormanlar ('random forests')
  • Destek vektör makineleri ('support vector machines' – 'SVM')
  • Birleştirilmiş metodlar

Örnekler

Derin öğrenmeye giriş

  • Yapay sinir ağları (biyolojik ve yapay nöron, sinaps, ağ mimarisi)
  • Yapay sinir ağlarının eğitimi (maliyet fonksiyonu ('cost function')
  • Hatanın ağ birimlerine dağıtımı ve optimizasyon yöntemleri ('backpropagation', 'gradient descent'))

Temel derin öğrenme mimarileri

  • Çok katmanlı ileri-beslemeli ağ ('multilayer perceptron' – MLP)
  • Konvolüsyonel sinir ağları ('convolutional neural networks' – CNN)
  • Öz-yinelemeli sinir ağları ('recurrent neural networks' – RNN) ve alt-türleri ('long short term memory' – LSTM vb.)
  • Eğitmensiz öğrenme için derin inanç ağları ('deep belief networks') ve boyut düşürme ('dimensional reduction') için öz-kodlayıcılar ('auto-encoders')

Derin öğrenmede eğitim yapma

  • Dikkat edilmesi gerekenler: Öğrenme hızı ve katman sayısı gibi hiper-parametrelerin ('hyper-parameters') seçimi; 'drop-out' gibi regülerizasyon ('regularization') yöntemleri
  • (GPU) Programlama için araçlar: Theano [3], Caffe [4], Tensorflow [5]; İstanbul'dan (Koç Üniversitesi) Julia ile yazılmış bir framework: Knet.jl [6]; görsel arayüz DIGITS [7]

Uygulamalar

  • Örnek problem ve verisetleri: MNIST [8] ve CIFAR10 [9]
  • Python/R ve/ya bir derin öğrenme aracı ile yukarıdaki problemlerin çözümü

Referanslar

  1. Jürgen Schmidhuber, “Deep Learning in Neural Networks: An Overview”, Neural Networks, 61, ss. 85-117 (2015)
  2. Yann LeCun, Yoshua Bengio, Geoffrey Hinton, “Deep Learning”, Nature, 521, ss. 436–444 (2015)
  3. Yangqing Jia ve ark., “Caffe: Convolutional Architecture for Fast Feature Embedding”, arXiv:1408.5093 (2014); http://caffe.berkeleyvision.org/, https://github.com/BVLC/caffe
  4. Frédéric Bastien ve ark., “Theano: new features and speed improvements”, NIPS 2012 Deep Learning Workshop (2012); https://github.com/Theano/Theano
  5. http://www.tensorflow.org/; https://github.com/tensorflow/tensorflow
  6. https://github.com/denizyuret/Knet.jl; https://docs.google.com/document/d/1uyqKFEdCqS0HoA-acLUr9_C0EGmAx_0wiEwzXhMWUPw/edit
  7. https://github.com/NVIDIA/DIGITS; https://developer.nvidia.com/digits
  8. http://yann.lecun.com/exdb/mnist/
  9. http://www.cs.toronto.edu/~kriz/cifar.html
Başlıklar AB-Kurs
Bulut, Kuantum ve Yüksek başarım bilişimi
Veri Madenciliği
Dosya
 

 

Powered by OpenConf®
Copyright ©2002-2015 Zakon Group LLC