Derin Öğrenme M. Ali Akcayol Gazi Üniversitesi Giriş Yapay zeka nedir? Yapay sinir ağları nasıl çalışır? Derin öğrenme nedir? Derin öğrenme modelleri nelerdir? Derin öğrenme uygulama alanları nelerdir? 2 / 77
TANIM BOYUTU İçerik Yapay Zeka, Makine Öğrenmesi, Yapay Sinir Ağları Makine Öğrenmesi Yapay Sinir Ağları Derin Öğrenme Modelleri Convolutional Neural Network Auto-encoder Deep Learning için Underfitting ve Overfitting Derin Öğrenme Uygulamaları Derin Öğrenme Uygulama Örnekleri 3 / 77 Yapay Zeka, Makine Öğrenmesi, Yapay Sinir Ağları Artificial Intelligence (AI), zeki insan davranışını makinelerin taklit etmesini amaçlayan çalışmaları kapsar. İlk defa McCarthy tarafından 1956 da kullanıldı. AI, iki boyutta dört farklı şekilde tanımlanmaktadır. BAŞARI ÖLÇÜTÜ İNSAN ZEKASINA GÖRE RASYONELLİĞE GÖRE DÜŞÜNCE İnsan gibi düşünen sistemler (Bellman, 1978) Rasyonel düşünen sistemler (Chamlak and McDermott, 1985) DAVRANIŞ Cognitive science İnsan gibi davranan sistemler (Kurzweil, 1990) Mantık kuralları Rasyonel davranan sistemler (Schalkoff, 1990) Turing testi Rasyonel ajanlar 4 / 77
Yapay Zeka, Makine Öğrenmesi, Yapay Sinir Ağları İnsan gibi davranan sistemler Turing testinde başarılı olan makinelerdir. 5 / 77 Yapay Zeka, Makine Öğrenmesi, Yapay Sinir Ağları Rasyonel davranan sistemler (Rasyonel ajan) Rasyonel davranış: Girişlere göre en doğruyu yapmaktır. Doğru: Verilen bilgiye göre beklenen faydayı maksimum yapar. Rasyonel sistemlerin insan düşüncesini tekrarlaması veya aynı kararı vermesi beklenmez. Bir rasyonel ajan algı geçmişini yeni girişe göre davranışa dönüştüren bir fonksiyondur. D = f (A*, A) D davranış, A* algı geçmişi, A yeni algı, f fonksiyondur. Rasyonel ajan, çevresini algılar (sensörler vb.) ve en başarılı davranışı belirler. 6 / 77
Yapay Zeka, Makine Öğrenmesi, Yapay Sinir Ağları Yapay zekanın alanları ve aralarındaki ilişkiler. 7 / 77 Yapay Zeka, Makine Öğrenmesi, Yapay Sinir Ağları AI, insan davranışını makinelere kazandırmayı amaçlar. Makine öğrenmesi, yapay zekanın bir alt sınıfıdır ve AI algoritmalarını makinelere uygular. Artificial Neural Network (ANN), makine öğrenmesinin bir alt sınıfıdır. Deep learning, ANN in bir alt sınıfıdır ve insan beyninin, algılama ve karar verme becerisini taklit etmeyi amaçlar. 8 / 77
İçerik Yapay Zeka, Makine Öğrenmesi, Yapay Sinir Ağları Makine Öğrenmesi Yapay Sinir Ağları Derin Öğrenme Modelleri Convolutional Neural Network Auto-encoder Deep Learning için Underfitting ve Overfitting Derin Öğrenme Uygulamaları Derin Öğrenme Uygulama Örnekleri 9 / 77 Makine Öğrenmesi Makine öğrenmesi, genellikle, karar veya tahmin oluşturmak amacıyla öğrenme işlemini gerçekleştirir. Makine öğrenmesi sınıflandırma (classification) ve kümeleme (clustering) problemlerinde başarıyla uygulanır. Makine öğrenme yöntemleri iki türdür: Supervised learning Unsupervised learning Supervised learning yönteminde, giriş ile birlikte çıkış bilgisi de sağlanır (classification). Unsupervised learning yönteminde, çıkış etiketleri sağlanmaz. Girişler arasındaki ilişki sağlanır (clustering). 10 / 77
İçerik Yapay Zeka, Makine Öğrenmesi, Yapay Sinir Ağları Makine Öğrenmesi Yapay Sinir Ağları Derin Öğrenme Modelleri Convolutional Neural Network Auto-encoder Deep Learning için Underfitting ve Overfitting Derin Öğrenme Uygulamaları Derin Öğrenme Uygulama Örnekleri 11 / 77 Yapay Sinir Ağları İnsan beyni, her görüntüde, seste, tat almada, dokunmada bir algı oluşturur. Beynimiz olmasaydı hepimiz ilkel organizmalar olurduk ve sadece basit refleksler yapabilirdik. Bebeğin beyni sadece 1 kilodur, ancak günümüzdeki çoğu süper bilgisayarların çözemediği problemleri çözer. Doğumdan sonra birkaç gün sonra, ebeveynlerinin yüzlerini tanıyabilir, arka planlarından nesneleri ayırt edebilir ve hatta ayrı sesler çıkarabilir. 12 / 77
Yapay Sinir Ağları Bir yıl içinde, fizik kurallarını algılayacak bir sezgi geliştirirler, engellerin arkasındaki nesneleri takip edebilirler, seslerle anlam ilişkilendirmesi yapabilirler. Çocukluk çağında, binlerce kelime ve karmaşık gramer yapısını anlayabilirler. Son yıllarda, insan beyni gibi beyne sahip zeki makineler geliştirilmeye çalışılmaktadır. 13 / 77 Yapay Sinir Ağları Bilgisayar programları aritmetik işlemleri hızlı yapabilir veya sıralı komutları hızlı çalıştırabilir. Ancak, klasik programlar bir kişinin el yazısını okuma gibi işlemlerde çok başarılı değildir. 14 / 77
Yapay Sinir Ağları Yapay sinir ağları, insan beyninin yapısını ve fonksiyonunu taklit eder. Sınıflandırıcı y = f (x), x girişi ile y sınıfını eşleştirir. Bir feedforward ANN y = f(x, w), w parametrelerinin değerlerini öğrenerek daha iyi tahmin yapan bir fonksiyon elde eder. Öğrenme supervised veya unsupervised olabilir. Yapay sinir ağları, metin, ses, görüntü, video gibi yapılandırılmamış veriyi alır ve neuronlardan oluşan katmanlarda işler. Neuron lar başka neuroan ları aktif yapabilir veya dış ortamda başka işlemleri başlatabilir. 15 / 77 Yapay Sinir Ağları Yapay sinir ağı, çok sayıda işlem birimine (neuron) sahiptir. Biyolojik neuron Yapay neuron 16 / 77
Yapay Sinir Ağları Perceptron Bir perceptron tek katmanlı bir neural network tür. x = (x 0, x 1, x 2 ) giriş vektörü, w = (w 0, w 1, w 2 ) ağırlık vektörü ve b bias, y = f(x 0 w 0 + x 1 w 1 + x 2 w 2 + b) olur. 17 / 77 Yapay Sinir Ağları Perceptron Transfer fonksiyonuna göre çıkış değeri değişir. Step function Sigmoid function 18 / 77
Yapay Sinir Ağları Perceptron limiti Tek neuron bir doğru ile çözüm uzayını ayırır. karar sınırı 19 / 77 Yapay Sinir Ağları Perceptron limiti Tek perceptron XOR problemini çözemez. Tutarsız!!! (bias) true false false true 20 / 77
Yapay Sinir Ağları Çok katmanlı neural network Çok katmanlı ANN daha karmaşık problemleri çözebilir. 21 / 77 Yapay Sinir Ağları Çok katmanlı neural network Katman ve neuron sayısı arttıkça çok daha karmaşık problemleri çözebilir. 22 / 77
Yapay Sinir Ağları Çok katmanlı neural network w 1, w 2, b parametredir. w 1, w 2 doğruyu döndürür, b doğrunun yerini değiştirir. w 1, w 2 ve b için en uygun değerlerin belirlenmesi gereklidir. b + - w 1, w 2 23 / 77 Yapay Sinir Ağları Çok katmanlı neural network 24 / 77
Yapay Sinir Ağları Çok katmanlı neural network 25 / 77 Yapay Sinir Ağları Perceptron öğrenme Perceptron öğrenmesinde, w 1, w 2 ve değeri belirlenir. öğrenme hızı, d(n) istenen çıkış. Yanlış sınıflandırmada ağırlık değiştirilir. w i = w i + d(n) x i (n) y = f(w 1 x 1 + w 2 x 2 + w 0 ) 26 / 77
Yapay Sinir Ağları Perceptron öğrenme y = f (x 1 +0,5x 2 ) = +1 y = f (0,6x 1 +0,9x 2-2) = -2,6 27 / 77 Yapay Sinir Ağları Çok katmanlı feedforward ANN öğrenme Çok katmanlı ANN de backpropagation yöntemi kullanılır. 28 / 77
İçerik Yapay Zeka, Makine Öğrenmesi, Yapay Sinir Ağları Makine Öğrenmesi Yapay Sinir Ağları Derin Öğrenme Modelleri Convolutional Neural Network Auto-encoder Deep Learning için Underfitting ve Overfitting Derin Öğrenme Uygulamaları Derin Öğrenme Uygulama Örnekleri 29 / 77 Derin Öğrenme Modelleri Deep learning, son yıllarda klasik yapay sinir ağlarının yerini almıştır. Deep learning, makine öğrenme teknikleri ve mimarilerinin geniş bir sınıfını ifade eder. Shallow learning, bir veya iki katman kullanarak yapılan öğrenmeyi ifade eder. Deep learning, çok sayıda katmanla öğrenmeyi ifade eder. Deep learning, işlem birimi neuron larda nonlineer fonksiyon kullanır. 30 / 77
Derin Öğrenme Modelleri Yaygın kullanılan deep learning modelleri: Convolutional Neural Network Auto-encoder Recurrent Neural Network Deep Belief Network 31 / 77 İçerik Yapay Zeka, Makine Öğrenmesi, Yapay Sinir Ağları Makine Öğrenmesi Yapay Sinir Ağları Derin Öğrenme Modelleri Convolutional Neural Network Auto-encoder Deep Learning için Underfitting ve Overfitting Derin Öğrenme Uygulamaları Derin Öğrenme Uygulama Örnekleri 32 / 77
Convolutional Neural Network Convolutional neural network (CNN), ANN lerin özel bir türüdür ve en popüler derin öğrenme mimarisidir. CNN, görüntü ile ilgili problemlerde önemli bir modeldir. CNN, tavsiye sistemleri, NLP ve birçok farklı alanda başarı ile uygulanmıştır. CNN, giriş verisindeki önemli özellikleri kendisi otomatik olarak algılar. CNN modeli, insandan daha iyi görüntü sınıflandırabilmektedir. 33 / 77 Convolutional Neural Network Tüm CNN mimarileri aşağıdaki gibidir. CNN, convolution ve pooling operatörlerini kullanır. Art arda birkaç kez convolution+pooling yapılır. Daha sonra birkaç tane fully connected katman bulunur. Çok etiketli (sınıflı) sınıflandırma problemlerinde, en sonda softmax katmanı bulunur. 34 / 77
Convolutional Neural Network Convolution CNN de en temel blok convolutional katmandır. Convolution, iki kümenin birleştirilmesini sağlayan matematiksel işlemdir. Convolution filter (kernel), girişe uygulanarak özellik haritası (feature map) oluşturulur. 35 / 77 Convolutional Neural Network Convolution Örnekte, giriş 5x5 ve filtre 3x3 boyutundadır. Girişin üzerinde filtre kaydırılıp convolution işlemi yapılır. Her eleman bazında matris çarpımı sonucu özellik harita matrisinin karşılıklı elemanını oluşturur. Şekilde, 3x3 filtre ile 2D üzerinde convolution yapılıyor. 36 / 77
Convolutional Neural Network Convolution Gerçek uygulamalarda görüntü 3D gösterilir (yükseklik, genişlik ve derinlik). Derinlik, görüntüdeki renk kanallarını gösterir. RGB için derinlik 3 olarak alınır. Bir giriş üzerinde farklı filtrelere sahip farklı convolution işlemleri yapılabilir (Her birisinin özellik haritası farklı olur.). Tüm özellik haritaları birleştirilerek bir özellik haritası elde edilir. 37 / 77 Convolutional Neural Network Convolution Örnekte, 32x32x3 bir görüntü, 5x5x3 filtre kullanılmıştır. Üç tane 5x5x1 matris toplanarak 1x1x1 değer elde edilir. Elde edilen özellik haritası 32x32x1 boyutundadır. Eğer 10 farklı filtre kullanılırsa, convolution katmanı 32x32x10 boyutunda olur. 38 / 77
Convolutional Neural Network Convolution Filtre tüm girişte kaydırılır ve özellik haritası elde edilir. 39 / 77 Convolutional Neural Network Convolution CNN ün, ANN ve auto-encoder gibi non-linearity özelliğini sağlaması gerekir. ANN ve auto-encoder non-linearity özelliğini aktivasyon fonksiyonu ile sağlar. CNN de convolution operatörünün sonucunu aktivasyon fonksiyonuna gönderir. 40 / 77
Convolutional Neural Network Stride ve padding Stride, her adımda convolution filtresinin hareket adım boyutunu belirler (default = 1). Hareket adım boyutu arttıkça edilirse, özellik haritası küçülür. 41 / 77 Convolutional Neural Network Stride ve padding Padding, giriş ile aynı boyutta özellik haritası oluşturmak için kullanılır. Girişin etrafına 0 değerine sahip hücreler padding olarak eklenir. 42 / 77
Convolutional Neural Network Pooling Pooling, convolution işleminden sonra uygulanır ve boyut indirgeme yapar. Pooling katmanı, özellik haritasının yüksekliğini ve genişliğini düşürerek örnekler (derinlik aynı kalır). En yaygın kullanılan max pooling yöntemidir. Window size ve stride değerleri belirlenir. 43 / 77 Convolutional Neural Network Pooling Genellikle, window size ve stride özellik haritasının yarısı alınır. Pooling işleminden sonra özellik haritasının boyutu yarıya indirgenmiş olur. 44 / 77
Convolutional Neural Network Fully connected katmanı Pooling katmanından sonra, fully connected ANN eklenir. Pooling katmanı çıkışı 3D alınır ve fully connected ANN ile 1D vektör çıkışı elde edilir. Training CNN ün eğitimi, ANN eğitimi gibi gradient descent ile backpropagation kullanılarak yapılır. 45 / 77 Convolutional Neural Network Softmax Softmax fonksiyonu sınıflandırma problemlerinde kullanılır. Softmax, çıkışın sınıflara ait olma olasılığının dağılımını verir. 46 / 77
Convolutional Neural Network Hyperparameter Hiper parametreler, doğrudan öğrenilmezler, ancak modelin özelliklerini belirlerler. CNN de, aşağıdaki hiper parametreler kullanılır: Filtre boyutu: Genellikle 3x3 kullanılır, ancak uygulamaya göre daha büyük boyutta olabilir. Filtre sayısı: Daha çok filtre kullanıldıkça daha güçlü model elde edilir. Ancak, çok sayıdaki parametre overfitting riskini artırır. Stride: Genellikle 1 seçilir, ancak uygulamaya göre farklı değer seçilebilir. Padding: Genellikle padding uygulanır, ancak uygulamaya göre kullanılmayabilir. 47 / 77 Convolutional Neural Network Değerlendirme Bir CNN model, özellik çıkarımı ile sınıflandırıcının birleşimi olarak düşünülebilir. Convolution+pooling katmanları özellik çıkarımı yapar (iki göz, uzun kulaklar, dört ayaklı, vb.). Fully connected katmanı ise, bir sınıflandırıcıdır (örneğin, girilen görüntünün kedi olma olasılığını belirtir). CNN modeli, girilen bir etiket ve bir görüntü için otomatik özellik algılaması gerçekleştirir. 48 / 77
İçerik Yapay Zeka, Makine Öğrenmesi, Yapay Sinir Ağları Makine Öğrenmesi Yapay Sinir Ağları Derin Öğrenme Modelleri Convolutional Neural Network Auto-encoder Deep Learning için Underfitting ve Overfitting Derin Öğrenme Uygulamaları Derin Öğrenme Uygulama Örnekleri 49 / 77 Auto-encoder Auto-encoder (AE), aldığı girişi kendi çıkışına kopyalamak amacıyla eğitilen bir neural network tür. AE, feedforward ANN lerin bir özel türüdür. AE, girişi temsil eden bir gizli katman vardır (h). Basit bir AE, iki parçadan oluşur: encoder ve decoder. Encoder fonksiyonu h= f (x), decoder fonksiyonu r= g(h). Öğrenme sürecinde r = x yapılmaya çalışılır. Eğer bir AE başarılı ise, g(f(x)) = x kümesini öğrenir. 50 / 77
Auto-encoder AE deki gizli katman h nin boyutu x in boyutundan küçükse (undercomplete), girişteki belirgin özellikleri öğrenir. AE deki gizli katman h nin boyutu x in boyutuna eşit veya büyükse, sadece belirgin özellikleri öğrenmez (overcomplete). Öğrenme sürecinde, kayıp fonksiyonu minimize edilir. Kayıp fonksiyonu L, hata ölçümü yapan bir fonksiyondur (örn., hataların karelerin ortalaması). 51 / 77 Auto-encoder AE, encoder ile katmanlardaki neuron sayılarını azaltır, ardından decoder ile katmanlardaki neuron sayılarını artırır. 52 / 77
Auto-encoder Gizli katmanda elde edilen code, girişin özeti veya sıkıştırılmış halidir. Encoder, girişi sıkıştırır ve code üretir. Decoder ise, code ile girişi yeniden elde etmeye çalışır. Bir AE oluşturmak için, encoding metodu, decoding metodu ve kayıp fonksiyonu gereklidir. 53 / 77 Auto-encoder AE, giriş verisinde boyut indirgeme için kullanılır. Giriş verilerini gizli katmanda daha küçük boyutla ifade eder. Çıkış verisi, giriş verisinden her zaman farklıdır. Çıkış etiketleri için ek bilgiye ihtiyaç duymaz, unsupervised öğrenme yapar. Çıkış etiketlerini eğitim verisinden (girişlerden) kendisi oluşturduğundan self-supervised olarak adlandırılır. 54 / 77
Auto-encoder Denoising auto-encoder (DAE) DAE, gürültülü veriden gürültüyü yok etmek için kullanılır. Elde edilen sonuç orijinalden farklıdır, ancak gürültü yok edilir. 55 / 77 İçerik Yapay Zeka, Makine Öğrenmesi, Yapay Sinir Ağları Makine Öğrenmesi Yapay Sinir Ağları Derin Öğrenme Modelleri Convolutional Neural Network Auto-encoder Deep Learning için Underfitting ve Overfitting Derin Öğrenme Uygulamaları Derin Öğrenme Uygulama Örnekleri 56 / 77
Deep Learning için Underfitting ve Overfitting Uygulamalarında, eğitim verisinin yanı sıra, yeni girişlerde de iyi sonuç vermesini sağlamaktır. Eğitim verisi için hatanın yüksek olması underfitting e, eğitim ve test verilerindeki hata farkının yüksek olması overfitting e neden olur. Underfitting Good Overfitting 57 / 77 İçerik Yapay Zeka, Makine Öğrenmesi, Yapay Sinir Ağları Makine Öğrenmesi Yapay Sinir Ağları Derin Öğrenme Modelleri Convolutional Neural Network Auto-encoder Deep Learning için Underfitting ve Overfitting Derin Öğrenme Uygulamaları Derin Öğrenme Uygulama Örnekleri 58 / 77
Deep Learning Uygulamaları Sınıflandırma: Verilen bir girişin hangi sınıfa ait olduğu bulunur (örneğin, nesne tanıma). Transcription: Yapılandırılmamış veriden text formatında veri elde edilir (örneğin, OCR, speech recognition, Google Street View adres numaralarının işlenmesi için deep learning kullanır.). Regresyon: Verilen girişe göre sayısal değer tahmin edilir (örneğin, yatırım araçları için ileriye dönük fiyat tahmini) Machine translation: Giriş bir dildeki sembollerden oluşur, çıkış başka bir dildeki sembollere dönüştürülür. (örneğin, İngilizce-Fransızca). 59 / 77 Deep Learning Uygulamaları Yapılandırılmış çıkış: Yapılandırılmamış girişlerden birbiriyle ilişkiye sahip çıkışlar elde edilir (örneğin, bir dildeki cümlenin gramer yapısının çıkarılması, hava fotoğrafları ile bir fotoğraftaki yolların belirlenmesi, görüntüye başlık metni oluşturulması). Anomaly detection: Bir grup olaydan veya nesneden olağandışı olanı bulur (örneğin, geçmiş harcamaya göre kredi kartı dolandırıcılığı, bilgisayar ağı trafik analizi). Sistem log larında anormallik algılama (RNN) Saldırı tespit sistemi (FFNN, RNN) 60 / 77
Deep Learning Uygulamaları Eksik girişlerin tamamlanması: Giriş olarak verilen bir x vektörünün eksik kısımları bulunur. Gürültü temizleme: Gürültülü veya bozuk veri girişe verilir, çıkışta gürültüsüz veri elde edilir (RNN). Text summarization: Büyük metinlerin özetleri çıkartılır (RNN, AE). 61 / 77 İçerik Yapay Zeka, Makine Öğrenmesi, Yapay Sinir Ağları Makine Öğrenmesi Yapay Sinir Ağları Derin Öğrenme Modelleri Convolutional Neural Network Auto-encoder Deep Learning için Underfitting ve Overfitting Derin Öğrenme Uygulamaları Derin Öğrenme Uygulama Örnekleri 62 / 77
Deep Learning Uygulama Örnekleri Automated image captioning (CNN+RNN) 63 / 77 Deep Learning Uygulama Örnekleri Object detection (CNN) 64 / 77
Deep Learning Uygulama Örnekleri Real time object detection (CNN) 65 / 77 Deep Learning Uygulama Örnekleri Otomatik Wikipedia makalesi yazma (RNN) 66 / 77
Deep Learning Uygulama Örnekleri Google Translate Text (CNN+RNN) 67 / 77 Deep Learning Uygulama Örnekleri Automatic translation of images (CNN+RNN) 68 / 77
Deep Learning Uygulama Örnekleri Image colorization with CNN 69 / 77 Deep Learning Uygulama Örnekleri Real time object recognition with CNN 70 / 77
Deep Learning Uygulama Örnekleri Sürücüsüz otomobil (CNN+RNN) 71 / 77 Deep Learning Uygulama Örnekleri Robotik (CNN+RNN+FLC) 72 / 77
Özet Yapay zeka, zeki insan davranışını makinelerin taklit etmesini amaçlayan çalışmaları kapsar. Turing testinde başarılı olan makineler insan gibi davranır. Rasyonel davranış, girişlere göre en doğruyu yapmaktır. Makine öğrenmesi, yapay zekanın bir alt sınıfıdır. Yapay sinir ağları, makine öğrenmesinin bir alt sınıfıdır. Derin öğrenme, yapay sinir ağlarının alt sınıfıdır. Son yıllarda, insan beyni gibi beyne sahip zeki makineler geliştirilmeye çalışılmaktadır. Yapay sinir ağları, insan beyninin yapısını ve fonksiyonunu taklit eder. 73 / 77 Özet Çok katmanlı ANN, karmaşık problemleri çözebilir. Öğrenme, parametrelerin değerlerinin belirlenmesidir. CNN, görüntü ile ilgili problemlerde önemli bir modeldir. Hiper parametreler, doğrudan öğrenilmezler, ancak modelin özelliklerini belirlerler. CNN model, özellik çıkarımı (convolution+pooling) ile sınıflandırıcının (fully connected NN) birleşimi olarak düşünülebilir. AE, aldığı girişi kendi çıkışına kopyalamak amacıyla eğitilen bir neural network tür. AE, giriş verisinde boyut indirgeme için kullanılır. DAE, veriden gürültüyü yok etmek için kullanılır. 74 / 77
Teşekkürler Deep Learning için Kullanılan Araçlar TensorFlow: En popüler deep learning lib. (Google) Keras: Deep learning algoritmaları ve TensorFlow için deep learning lib. BigDL: Apache Spark için deep learning lib. Torch: Açık kaynak deep learning lib. (Facebook, Twitter) Microsoft Cognitive Toolkit: Açık kaynak deep learning algoritmaları ConvNetJS: Deep learning modelleri için javascript lib. Apache Mahout: Apache Spark, H 2 O ve Apache Flink için ML algoritmaları Caffe: Deep learning framework (Berkeley Vision & Learning center) 76 / 77
Daha fazla bilgi için Deep Learning, Ian Goodfellow, Yoshua Bengio, Aaron Courville, MIT Press, 2016. Deep Learning Tutorial, LISA Lab, University of Montreal, 2015. Fundamentals of Deep Learning, Nikhil Buduma, O Reilly, 2016. A survey on deep learning for big data, Q.Zhangab, L. T.Yanga, Z.C.PengLi, Information Fusion, 2018. On the Origin of Deep Learning, H. Wang, B. Raj, arxiv:1702.07800v4 [cs.lg] 3 Mar 2017. https://deeplearning4j.org http://deeplearning.net/ 77 / 77