je jedním z nejžhavějších témat let 2018-19, a to z dobrého důvodu. V průmyslu došlo k mnoha pokrokům, kdy nastal čas, kdy stroje nebo počítačové programy skutečně nahrazují lidi. Tento Hluboké učení s Pythonem článek vám pomůže pochopit, co přesně je Deep Learning a jak byl tento přechod umožněn. V tomto článku se budu věnovat následujícím tématům:
- Data Science and It’s Components
- Potřeba hlubokého učení
- Co je to Deep Learning?
- Perceptron a umělé neuronové sítě
- Aplikace hlubokého učení
- Proč Python pro hluboké učení?
- Hluboké učení s Pythonem: Příklad Perceptronu
- Deep Learning with Python: Creating a Deep Neural Network
Data Science and It’s Components
Data Science je něco, co tam je už věky. Datová věda je extrakce znalostí z dat pomocí různých technik a algoritmů.
je technika, která umožňuje strojům napodobovat lidské chování. Myšlenka AI je poměrně jednoduchá, ale fascinující, a to dělat inteligentní stroje, které mohou samy rozhodovat. Po celá léta se předpokládalo, že počítače se nikdy nevyrovnají síle lidského mozku.
Tehdy jsme neměli dostatek dat a výpočetní sílu, ale nyní s Velká data s příchodem GPU je možná umělá inteligence.
je podmnožinou techniky AI, která využívá statistické metody, aby umožnila strojům vylepšovat se zkušenostmi.
Hluboké učení je podmnožina ML, díky níž je výpočet vícevrstvé neuronové sítě proveditelný. Využívá neuronové sítě k simulaci rozhodování podobného člověku.
Potřeba hlubokého učení
Krokem k umělé inteligenci je strojové učení. Machine Learning je podmnožinou AI a je založeno na myšlence, že strojům by měl být umožněn přístup k datům a měl by jim být ponechán možnost učit se a zkoumat sami. Zabývá se extrakcí vzorů z velkých datových souborů. Manipulace s velkými datovými sadami nebyl problém.
- Algoritmy strojového učení nemůže zpracovat vysokodimenzionální data - kde máme velké množství vstupů a výstupů: zaokrouhleno tisíce dimenzí. Zpracování a zpracování takového typu dat se stává velmi složitým a vyčerpávajícím zdrojem. Toto se nazývá jako Curse of Dimensionality.
- Další výzvou, které čelil, bylo upřesnit funkce, které mají být extrahovány . To hraje důležitou roli při předpovídání výsledku i při dosahování lepší přesnosti. Proto bez extrakce funkcí výzva pro programátora se zvyšuje, protože účinnost algoritmu velmi závisí na tom, jak je programátor vhledný.
A právě teď přišel na pomoc Deep Learning. Hluboké učení je schopný zpracovat vysoce dimenzionální data a je také efektivní v se zaměřením na správné funkce sama o sobě.
Co je to Deep Learning?
Hluboké učení je podmnožinou strojového učení, kde se k trénování používají podobné algoritmy strojového učení aby se dosáhlo lepší přesnosti v případech, kdy první nedosahoval úrovně. V podstatě, Hluboké učení napodobuje způsob, jakým funguje náš mozek tj. učí se ze zkušenosti.
Jak víš,náš mozek je tvořen miliardy neuronů což nám umožňuje dělat úžasné věci. I mozek malého dítěte je schopen vyřešit složité problémy, které je velmi obtížné vyřešit i pomocí superpočítačů. Jak tedy můžeme dosáhnout stejné funkce v programu? To je místo, kde rozumíme Umělý neuron (Perceptron) a Umělá neuronová síť.
Perceptron a umělé neuronové sítě
Deep Learning studuje základní jednotku mozku zvanou mozková buňka nebo neuron. Nyní pochopme funkčnost biologických neuronů a to, jak tuto funkci napodobujeme ve vnímání nebo umělém neuronu.
- Dendrit: Přijímá signály z jiných neuronů
- Buněčné tělo: Sčítá všechny vstupy
- Axon: Používá se k přenosu signálů do ostatních buněk
Umělý neuron nebo a Perceptron je lineární model používaný pro binární klasifikaci. Modeluje neuron, který má sadu vstupů, z nichž každý má určitou váhu. Neuron na nich spočítá nějakou funkci vážený vstupy a dává výstup.
jaký je rozdíl mezi třídou a rozhraním
Přijímá n vstupů (odpovídající každé funkci). Pak tyto vstupy sečte, použije transformaci a vytvoří výstup. Má dvě funkce:
- Shrnutí
- Transformace (aktivace)
Váha ukazuje účinnost konkrétního vstupu. Čím větší váha bude mít vstup, tím více to bude mít dopad na neuronovou síť . Na druhou stranu, Zaujatost je další parametr v Perceptronu, který se používá k úpravě výstupu spolu s váženým součtem vstupů do neuronu, což pomáhá modelu takovým způsobem, aby nejlépe vyhovoval daným datům.
Aktivační funkce převádí vstupy na výstupy. K výrobě výstupu používá prahovou hodnotu. Existuje mnoho funkcí, které se používají jako aktivační funkce, například:
- Lineární nebo identita
- Jednotkový nebo binární krok
- Sigmoid nebo Logistic
- Tanh
- ReLU
- Softmax
Studna. pokud si myslíte, že Perceptron problém vyřeší, pak se mýlíte. Byly tam dva hlavní problémy:
- Jednovrstvé perceptrony nelze klasifikovat nelineárně oddělitelné datové body .
- Složité problémy, které zahrnují mnoho parametrů nelze vyřešit jednovrstvými perceptrony.
Zvažte zde příklad a složitost s použitými parametry k přijetí rozhodnutí marketingového týmu.
Jeden neuron nemůže přijmout tolik vstupů, a proto by k řešení tohoto problému bylo použito více než jednoho neuronu. Neural Network je opravdu jen a složení perceptronů, spojené různými způsoby a pracuje na různých aktivačních funkcích.
- Vstupní uzly poskytují síti informace z vnějšího světa a jsou společně označovány jako „vstupní vrstva“.
- Skryté uzly provádět výpočty a přenášet informace ze vstupních uzlů do výstupních uzlů. Kolekce skrytých uzlů tvoří „skrytou vrstvu“.
- Výstupní uzly jsou souhrnně označovány jako „výstupní vrstva“ a jsou odpovědné za výpočty a přenos informací ze sítě do vnějšího světa.
Nyní, když máte představu o tom, jak se chová perceptron, různé použité parametry a různé vrstvy neuronové sítě, pojďme pokračovat v tomto Deep Learning s blogem Python a podívejte se na některé skvělé aplikace Deep Learning.
Aplikace hlubokého učení
V průmyslu existují různé aplikace Deep Learning, zde je několik důležitých aplikací, které jsou součástí našich každodenních úkolů.
- Rozpoznávání řeči
- Strojový překlad
- Rozpoznávání obličeje a automatické značkování
- Virtuální osobní asistenti
- Řidičské auto
- Chatboti
Proč Python pro hluboké učení?
- je jeden takový nástroj, který má jedinečný atribut, být univerzální programovací jazyk jako bytí snadné použití pokud jde o analytické a kvantitativní výpočty.
- Je to velmi snadno pochopitelné
- Python je Dynamicky napsáno
- Obrovský
- Obrovská řada knihoven pro různé účely, jako je Numpy, Seaborn, Matplotlib, Pandas a Scikit-learn
Teď už je dost teorie, podívejme se, jak můžeme začít Deep Learning s Pythonem pomocí malého, ale vzrušujícího příkladu.
Hluboké učení s Pythonem: Příklad Perceptronu
Jsem si jistý, že musíte být obeznámeni s fungováním „ NEBO' brána. Výstup je jeden pokud je některý ze vstupů také jeden.
Proto může být Perceptron použit jako oddělovač nebo rozhodovací řádek, který rozděluje vstupní sadu brány OR na dvě třídy:
Třída 1: Vstupy s výstupem 0, který leží pod rozhodovacím řádkem.
Třída 2: Vstupy s výstupem 1, který leží nad rozhodovacím řádkem nebo oddělovačem.
Dosud jsme pochopili, že lineární perceptron lze použít ke klasifikaci vstupní datové sady do dvou tříd. Ale jak vlastně klasifikuje data?
Matematicky lze perceptron považovat za rovnici vah, vstupů a zkreslení.
jak převést binární řetězec na desítkové v java
Krok 1: Importujte veškerou požadovanou knihovnu
Zde importuji pouze jednu knihovnu, tzn. TensorFlow
importovat tensorflow jako tf
Krok 2: Definujte vektorové proměnné pro vstup a výstup
Dále musíme vytvořit proměnné pro ukládání vstupu, výstupu a zkreslení pro Perceptron.
train_in = [[0,0,1], [0,1,1], [1,0,1], [1,1,1]] train_out = [[0], [1], [1], [1]]
Krok 3: Definujte proměnnou hmotnosti
Zde definujeme tenzorovou proměnnou tvaru 3 × 1 pro naše váhy a přiřadíme jí zpočátku nějaké náhodné hodnoty.
w = tf.Variable (tf.random_normal ([3, 1], seed = 15))
Krok 4: Definujte zástupné symboly pro vstup a výstup
Musíme definovat zástupné symboly, aby mohli přijímat externí vstupy za běhu.
x = tf.placeholder (tf.float32, [None, 3]) y = tf.placeholder (tf.float32, [None, 1])
Krok 5: Výpočet výstupu a aktivační funkce
Jak již bylo uvedeno dříve, vstup přijatý perceptronem se nejprve vynásobí příslušnými váhami a poté se všechny tyto vážené vstupy sečtou dohromady. Tato sečtená hodnota se poté přivede k aktivaci pro získání konečného výsledku.
výstup = tf.nn.relu (tf.matmul (x, w))
Poznámka: V tomto případě jsem použil relu jako moje aktivační funkce. Podle potřeby můžete aktivační funkce libovolně využívat.
Krok 6: Vypočítejte náklady nebo chybu
Musíme vypočítat Cost = Mean Squared Error, což není nic jiného než druhá mocnina rozdílu výstupu perceptronu a požadovaného výstupu.
loss = tf.reduce_sum (tf.square (výstup - y))
Krok 7: Minimalizace chyby
Cílem perceptronu je minimalizovat ztrátu, náklady nebo chybu. Tady tedy použijeme Optimalizátor přechodu sestupu.
optimizer = tf.train.GradientDescentOptimizer (0,01) vlak = optimizer.minimize (ztráta)
Krok 8: Inicializujte všechny proměnné
Proměnné jsou definovány pouze pomocí tf. Proměnná. Musíme tedy inicializovat definované proměnné.
java rozdíl mezi implementuje a rozšiřuje
init = tf.global_variables_initializer () sess = tf.Session () sess.run (init)
Krok 9: Výcvik perceptronu v iteracích
Musíme trénovat náš perceptron, tj. Aktualizovat hodnoty vah a zkreslení v postupné iteraci, abychom minimalizovali chybu nebo ztrátu. Zde budu trénovat náš perceptron ve 100 epochách.
pro i v rozsahu (100): sess.run (vlak, {x: train_in, y: train_out}) cost = sess.run (ztráta, feed_dict = {x: train_in, y: train_out}) print ('Epoch-- ', i,' - ztráta - ', cena)
Krok 10: Výstup
……
……
Jak vidíte zde, ztráta začala v 2.07 a skončila v 0,27
.
Deep Learning with Python: Creating a Deep Neural Network
Nyní, když jsme úspěšně vytvořili perceptron a trénovali jej pro bránu OR. Pojďme pokračovat v tomto článku a podívejme se, jak lze vytvořit naši vlastní Neuronovou síť od nuly, kde vytvoříme vstupní vrstvu, skryté vrstvy a výstupní vrstvu.
Budeme používat datovou sadu MNIST. Soubor dat MNIST se skládá z 60 000 školení vzorky a 10 000 testování vzorky ručně psaných číslic. Obrázky mají velikost 28 × 28 pixelů a výstup může ležet mezi 0-9 .
Úkolem je vycvičit model, který dokáže přesně identifikovat číslici přítomnou na obrázku
Nejprve použijeme níže uvedený import k přenesení tiskové funkce z Pythonu 3 do Pythonu 2.6+. Příkazy __future__ musí být v horní části souboru, protože mění základní věci týkající se jazyka, a proto o nich překladač musí vědět od začátku
z __future__ import print_function
Následuje kód s komentáři na každém kroku
# Import MNIST dat z tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets ('/ tmp / data /', one_hot = True) import tensorflow jako tf import matplotlib.pyplot jako plt # Parametry learning_rate = 0,001 training_epochs = 15 batch_size = 100 display_step = 1 # Network Parameters n_hidden_1 = 256 # 1st layer number of features n_hidden_2 = 256 # 2nd layer number of features n_input = 784 # MNIST data input (img shape: 28 * 28) n_classes = 10 # MNIST total classes ( 0-9 číslic) # tf Grafický vstup x = tf.placeholder ('float', [None, n_input]) y = tf.placeholder ('float', [None, n_classes]) # Create model def multilayer_perceptron (x, weights , biases): # Skrytá vrstva s aktivací RELU layer_1 = tf.add (tf.matmul (x, weights ['h1']), biases ['b1']) layer_1 = tf.nn.relu (layer_1) # Skrytá vrstva s aktivací RELU layer_2 = tf.add (tf.matmul (layer_1, weights ['h2']), biases ['b2']) layer_2 = tf.nn.relu (layer_2) # Výstupní vrstva s lineární aktivací out_layer = tf. matmul (vrstva _2, weights ['out']) + biases ['out'] return out_layer # Store levels weight & bias weights = {'h1': tf.Variable (tf.random_normal ([n_input, n_hidden_1])), 'h2' : tf.Variable (tf.random_normal ([n_hidden_1, n_hidden_2])), 'out': tf.Variable (tf.random_normal ([n_hidden_2, n_classes]))} biases = {'b1': tf.Variable (tf. random_normal ([n_hidden_1])), 'b2': tf.Variable (tf.random_normal ([n_hidden_2])), 'out': tf.Variable (tf.random_normal ([n_classes]))}} # Construct model pred = multilayer_perceptron (x, weights, biases) # Definujte ztrátu a optimalizační náklady = tf.reduce_mean (tf.nn.softmax_cross_entropy_with_logits (logits = pred, labels = y)) optimizer = tf.train.AdamOptimizer (learning_rate = learning_rate) .minimize (náklady) # Inicializace proměnných init = tf.global_variables_initializer () # vytvořte prázdný seznam pro uložení historie nákladů a historie přesnosti cost_history = [] přesnost_history = [] # spusťte graf s tf.Session () jako sess: sess.run (init ) # Tréninkový cyklus pro epochu v dosahu (training_epochs): avg_cost = 0. total_batch = int (mnist.train.num_examples / batch_size) # Loop over all batches for i in range (total_batch): batch_x, batch_y = mnist.train.next_batch (batch_size) # Run optimization op (backprop) and cost op (pro získání hodnoty ztráty) _, c = sess.run ([optimalizátor, cena], feed_dict = {x: batch_x, y: batch_y}) # Vypočítat průměrnou ztrátu avg_cost + = c / total_batch # Zobrazit protokoly na krok epochy, pokud epoch% display_step == 0: correct_prediction = tf.equal (tf.argmax (pred, 1), tf.argmax (y, 1)) # Vypočítat přesnost přesnosti = tf.reduce_mean (tf.cast (correct_prediction, 'float') ) acu_temp = přesnost.eval ({x: mnist.test.images, y: mnist.test.labels}) #append přesnost do seznamu přesnost_history.append (acu_temp) #append historii nákladů cost_history.append (avg_cost) tisk ('Epoch:', '% 04d'% (epocha + 1), '- cost =', '{: .9f}'. Format (avg_cost), '- Accuracy =', acu_temp) print ('Optimalizace dokončena! ') #plot historie nákladů plt.plot (cost_history) plt.show () #plot historie přesnosti plt.plot (přesnost _history) plt.show () # Testovací model correct_prediction = tf.equal (tf.argmax (pred, 1), tf.argmax (y, 1)) # Vypočítat přesnost přesnosti = tf.reduce_mean (tf.cast (correct_prediction, ' float ')) print (' Accuracy: ', přesnost.eval ({x: mnist.test.images, y: mnist.test.labels}))
Výstup:
Nyní se dostáváme na konec tohoto článku Deep Learning with Python. Doufám, že jste pochopili různé komponenty Deep Learning, Jak to všechno začalo a Jak pomocí Pythonu můžeme vytvořit jednoduchý perceptron a Deep Neural Network.
Edureka je vybrán odborníky v oboru podle požadavků a požadavků odvětví. Osvojíte si pojmy jako funkce SoftMax, Autoencoder Neural Networks, Restricted Boltzmann Machine (RBM) a pracujete s knihovnami jako Keras & TFLearn. Kurz byl speciálně připraven odborníky z oboru s případovými studiemi v reálném čase.
Máte na nás dotaz? Uveďte to prosím v sekci komentářů „Deep Learning with Python“ a my se vám ozveme.