Vodič za umjetne neuronske mreže (ANN) s TensorFlowom

⚡ Pametni sažetak

Umjetne neuronske mreže uče propuštanjem ulaznih podataka kroz povezane slojeve, bodovanjem rezultata funkcijom gubitka i ispravljanjem težina optimizatorom. Ovaj vodič gradi jednu u TensorFlowu i klasificira MNIST znamenke.

  • 🔘 Četiri objekta: Slojevi, značajke i oznake, funkcija gubitka i optimizator čine svaku umjetnu neuronsku mrežu.
  • ☑️ Uloge slojeva: Ulazni podaci dovode do skrivenih slojeva, a veličina izlaznog sloja odgovara broju klasa za zadatke klasifikacije.
  • Izbor aktivacije: ReLU vraća nulu za negativne vrijednosti, omogućujući mreži da nauči nelinearne obrasce koje linearni model propušta.
  • 🧪 Prekomjerno prilagođavanje kontrolama: Manje mreže, L1 ili L2 kazne za težinu i stope odustajanja između 0.2 i 0.5 vraćaju generalizaciju.
  • 🛠️ Šest koraka izgradnje: Uvezite MNIST, skalirajte ga, kreirajte stupce značajki, definirajte DNNClassifier, trenirajte, a zatim dodajte regularizaciju.
  • 📈 Izmjereni rezultat: Skriveni slojevi od 300 i 100 jedinica postižu točnost od 0.9637143; regularizirana varijanta pada na 0.95057142.

Umjetna neuronska mreža (ANN)

Što je umjetna neuronska mreža?

An Umjetna neuronska mreža (ANN) je računalni sustav inspiriran biološkim neuronskim mrežama za stvaranje umjetnih mozgova temeljen na skupu povezanih jedinica zvanih umjetni neuroni. Dizajniran je za analizu i obradu informacija na način na koji to čine ljudi. Umjetna neuronska mreža ima mogućnosti samoučenja kako bi proizvela bolje rezultate kako je dostupno više podataka.

Dijagram ispod tracjedan puni prolaz kroz takvu mrežu, od sirovog ulaza do optimizatora koji ispravlja težine.

Dijagram toka umjetne neuronske mreže koji prikazuje ulaz, dva ponderirana sloja, predviđanje, funkciju gubitka i optimizator

Umjetna neuronska mreža (ANN) sastoji se od četiri glavna objekta:

  • Slojeva: Svo učenje se odvija u slojevima. Postoje 3 sloja: 1) Ulazni, 2) Skriveni i 3) Izlazni.
  • Značajka i oznaka: Ulazni podaci u mrežu (značajke) i izlazni podaci iz mreže (oznake)
  • Funkcija gubitka: Metrika koja se koristi za procjenu uspješnosti faze učenja
  • Optimizator: Poboljšajte učenje ažuriranjem znanja u mreži

Neuronska mreža uzima ulazne podatke i ubacuje ih u skup slojeva. Mreža zatim procjenjuje svoje performanse pomoću funkcije gubitka. Funkcija gubitka daje mreži ideju o putu kojim treba proći prije nego što savlada znanje. Mreža poboljšava to znanje uz pomoć optimizatora.

Ako pogledate gornju sliku, shvatit ćete temeljni mehanizam.

Program uzima neke ulazne vrijednosti i ubacuje ih u dva potpuno povezana sloja. Zamislite da imate matematički problem. Prvo što radite jest pročitati odgovarajuće poglavlje kako biste ga riješili. Zatim primjenjujete svoje novo znanje na problem. Postoji velika vjerojatnost da nećete postići baš dobar rezultat. Isto je i za mrežu: prvi put kada vidi podatke i napravi predviđanje, rezultat se neće savršeno podudarati sa stvarnim podacima.

Kako bi poboljšala svoje znanje, mreža koristi optimizator. U ovoj analogiji, optimizator se može smatrati ponovnim čitanjem poglavlja. Ponovnim čitanjem stječete nove uvide. Slično tome, mreža koristi optimizator, ažurira svoje znanje i testira to novo znanje kako bi provjerila koliko još treba naučiti. Program ponavlja ovaj korak sve dok ne napravi najmanju moguću pogrešku.

U analogiji s matematičkim problemom, to znači da poglavlje iz udžbenika čitate mnogo puta dok u potpunosti ne shvatite sadržaj tečaja. Čak i nakon višestrukog čitanja, ako nastavite griješiti, to znači da ste dosegli kapacitet znanja trenutnog gradiva. Morate koristiti drugi udžbenik ili testirati drugu metodu kako biste poboljšali svoj rezultat. Za neuronsku mrežu to je isti proces. Ako se pogreška prestane smanjivati, a krivulja gubitaka postane ravna, trenutna arhitektura ne može naučiti ništa drugo. Mreža mora biti bolje optimizirana kako bi se poboljšalo znanje.

Ta četiri objekta se izravno mapiraju na komponente koje konfigurirate prilikom dizajniranja mreže.

Živčana mreža Architektura

Arhitektura umjetne neuronske mreže sastoji se od sljedećih komponenti:

  • Slojevi
  • Aktivacijska funkcija
  • Funkcija gubitka
  • optimizaciju

Slojevi

Sloj je mjesto gdje se odvija svo učenje. Unutar sloja nalazi se proizvoljan broj neurona, od kojih svaki ima vlastite težine. Tipična neuronska mreža često se obrađuje gusto povezanim slojevima (također se nazivaju potpuno povezani slojevi). To znači da su svi ulazi povezani s izlazom.

Tipična neuronska mreža uzima vektor ulaza i skalar koji sadrži oznake. Najjednostavnija postavka je binarna klasifikacija sa samo dvije klase: 0 i 1.

Mreža prima ulaz, šalje ga svim povezanim čvorovima i izračunava signal s aktivacijskom funkcijom. Numerirani dijagram u nastavku prikazuje jedan čvor tako da možete zasebno vidjeti ponderiranu sumu i korak aktivacije.

Dvoslojni mrežni dijagram s težinama w11 do w22 i opisom koji prikazuje ponderiranu sumu i aktivacijsku funkciju unutar jednog čvora

Gornja slika prikazuje ovu ideju. Prvi sloj sadrži ulazne vrijednosti. Drugi sloj, nazvan skriveni sloj, prima ponderirani ulaz iz prethodnog sloja.

  1. Prvi čvor su ulazne vrijednosti.
  2. Neuron se rastavlja na ulazni dio i aktivacijsku funkciju. Lijevi dio prima sav ulaz iz prethodnog sloja. Desni dio je zbroj ulaza proslijeđenih aktivacijskoj funkciji.
  3. Izlazna vrijednost izračunata iz skrivenih slojeva i korištena za predviđanje. Za klasifikaciju je jednaka broju klasa. Za regresiju se predviđa samo jedna vrijednost.

Aktivacijska funkcija

Aktivacijska funkcija čvora definira izlaz na temelju skupa ulaza. Potrebna vam je aktivacijska funkcija koja će mreži omogućiti učenje nelinearnih uzoraka. Uobičajena aktivacijska funkcija je ReLU, ispravljena linearna jedinica. Funkcija daje nulu za sve negativne vrijednosti.

Ostale funkcije aktivacije su:

  • Djelomično linearno
  • sigmoidno
  • Tanh
  • Propušteni ReLU

Donji grafikon pokazuje zašto je ReLU tako opisan: krivulja je ravna na nuli za svaki negativni ulaz i nakon toga linearno raste.

Grafikon ReLU aktivacijske funkcije R(z) = max(0, z), ravna pri nuli za negativne ulaze i linearna za pozitivne ulaze

Kritična odluka koju treba donijeti pri izgradnji neuronske mreže je:

  • Koliko slojeva u neuronskoj mreži
  • Koliko skrivenih jedinica za svaki sloj

Neuronske mreže s mnogo slojeva i skrivenih jedinica mogu naučiti složenu reprezentaciju podataka, ali čine izračune mreže vrlo skupima.

Funkcija gubitka

Nakon što ste definirali skrivene slojeve i funkciju aktivacije, trebate navesti funkciju gubitka i optimizator.

Za binarnu klasifikaciju uobičajena je praksa koristiti binarnu funkciju gubitka unakrsne entropije. Linearna regresija, koristite srednju kvadratnu pogrešku.

Funkcija gubitka važna je metrika za procjenu izvedbe optimizatora. Tijekom obuke ova metrika će biti minimizirana. Ovu količinu morate pažljivo odabrati ovisno o vrsti problema s kojim se suočavate.

optimizaciju

Funkcija gubitka je mjera performansi modela. Optimizator će pomoći u poboljšanju težina mreže kako bi se smanjio gubitak. Dostupni su različiti optimizatori, ali najčešći je Stochastic Gradient Descent.

Konvencionalni optimizatori su:

  • Momentum optimizacija
  • Nesterovljev ubrzani gradijent
  • AdaGrad
  • Adamova optimizacija

ArchiSama tekstura ne jamči upotrebljiv model.

Ograničenja neuronske mreže

Slijede ograničenja neuronske mreže:

Pretjerano opremanje

Uobičajeni problem sa složenom neuronskom mrežom je teškoća generalizacije na neviđene podatke. Neuronska mreža s mnogo težina može vrlo dobro identificirati specifične detalje u skupu vlakova, ali to često dovodi do prekomjernog prilagođavanja. Ako su podaci neuravnoteženi unutar grupa (tj. ako u nekim grupama nema dovoljno dostupnih podataka), mreža će vrlo dobro učiti tijekom učenja, ali neće imati mogućnost generalizacije takvih obrazaca na podatke koji nikada prije nisu viđeni.

Postoji kompromis u stroj za učenje između optimizacije i generalizacije.

  • Optimizacija modela zahtijeva pronalaženje najboljih parametara koji minimiziraju gubitak skupa za učenje.
  • Generalizacija, međutim, govori kako se model ponaša za nevidljive podatke.

Kako biste spriječili da model uhvati specifične detalje ili neželjene obrasce podataka za obuku, možete koristiti različite tehnike. Najbolja metoda je imati uravnotežen skup podataka s dovoljnom količinom podataka. Umjetnost smanjenja prekomjernog prilagođavanja naziva se regularizacija. Tri tehnike u nastavku su konvencionalne početne točke.

Tehnika Što ograničava Tipična postavka u ovom vodiču
Veličina mreže Broj slojeva i skrivenih jedinica Dva skrivena sloja, 300 i 100 jedinica
Regularizacija težine L1 / L2 Veličina težinskih koeficijenata l1_jačina_regularizacije i l2_jačina_regularizacije od 0.01
maloljetnik koji se ispisao iz škole Udio isključenih jedinica po koraku obuke ispadanje od 0.3

Veličina mreže

Poznato je da je neuronska mreža s previše slojeva i skrivenih jedinica vrlo sofisticirana. Jednostavan način smanjenja složenosti modela je smanjenje njegove veličine. Ne postoji jedna najbolja praksa za definiranje broja slojeva. Morate početi s malim brojem slojeva i povećavati veličinu dok ne pronađete model koji se previše prilagođava.

Regulacija težine

Standardna tehnika za sprječavanje prekomjernog prilagođavanja je dodavanje ograničenja težinama mreže. Ograničenje prisiljava težine mreže da uzimaju samo male vrijednosti. Ograničenje se dodaje funkciji gubitka pogreške. Postoje dvije vrste regularizacije:

  • L1 (Laso): Trošak je proporcionalan apsolutnoj vrijednosti težinskih koeficijenata.
  • L2 (greben): Trošak je proporcionalan kvadratu vrijednosti težinskih koeficijenata.

maloljetnik koji se ispisao iz škole

Ispuštanje je neobična, ali korisna tehnika. Mreža s ispuštanjem znači da će se neke jedinice nasumično isključiti tijekom koraka treniranja, tako da njihov izlazni signal postaje nula. Zamislite da imate niz težina [0.1, 1.7, 0.7, -0.9]. Ako neuronska mreža ima ispuštanje, postat će [0.1, 0, 0, -0.9] sa nasumično raspoređenom 0. Parametar koji kontrolira ispuštanje je stopa ispuštanja. Stopa definira koliko se jedinica isključuje. Uobičajena je stopa između 0.2 i 0.5.

Mali interaktivni primjer olakšava praćenje petlje učenja.

Primjer neuronske mreže u TensorFlowu

Evo primjera umjetne neuronske mreže u akciji koji pokazuje kako neuronska mreža radi na tipičnom problemu klasifikacije. Postoje dva ulaza, x1 i x2, svaki sa slučajnom vrijednošću. Izlaz je binarna klasa. Cilj je klasificirati oznaku na temelju dvije značajke. Za izvršavanje ovog zadatka, arhitektura neuronske mreže definirana je na sljedeći način:

  • Dva skrivena sloja
  • Prvi sloj ima četiri potpuno povezana neurona
  • Drugi sloj ima dva potpuno povezana neurona
  • Aktivacijska funkcija je ReLU
  • Dodajte L2 regularizaciju sa stopom učenja od 0.003

Mreža će optimizirati težine tijekom 180 epoha s veličinom serije od 10. U primjeru animacije umjetne neuronske mreže u nastavku možete vidjeti kako se težine mijenjaju tijekom vremena i kako mreža poboljšava mapu klasifikacije.ping.

Animacija neuronske mreže temeljene na pregledniku dok se njezine težine mijenjaju tijekom epoha treniranja

Prije svega, mreža dodjeljuje nasumične vrijednosti svim težinama.

  • S nasumičnim težinama, odnosno bez optimizacije, gubitak izlaza je 0.453. Slika ispod prikazuje mrežu s različitim bojama.
  • Općenito, narančasta boja predstavlja negativne vrijednosti dok plava boja pokazuje pozitivne vrijednosti.
  • Točke podataka imaju isti prikaz: plave su pozitivne oznake, a narančaste negativne oznake.

Igralište preglednika u prvoj iteraciji sa slučajnim težinama, težinom od -0.43 i gubitkom testa od 0.453

Unutar drugog skrivenog sloja, linije su obojene prema predznaku težina. Narančaste linije nose negativne težine, a plave pozitivne težine.

Kao što vidite, na izlaznoj mapiping, mreža radi dosta pogrešaka. Sada pogledajte kako se mreža ponaša nakon optimizacije.

Slika primjera umjetne neuronske mreže u nastavku prikazuje rezultate optimizirane mreže. Prije svega, primjećujete da je mreža uspješno naučila kako klasificirati podatkovne točke. Uspoređujući to sa slikom prije, početna težina bila je -0.43, dok nakon optimizacije rezultira težinom od -0.95.

Četiri panela igrališta koji prikazuju konačne težine, s plavim linijama za pozitivne težine i ispravno klasificirane podatkovne točke

Ideja se može generalizirati za mreže s više skrivenih slojeva i neurona. Možete sami eksperimentirati s postavkama u Igralište TensorFlow.

U nastavku slijedi gradnja iste ideje u kodu na stvarnom skupu podataka.

Kako trenirati neuronsku mrežu s TensorFlowom

Evo korak-po-korak postupka kako trenirati neuronsku mrežu s TensorFlow ANN pomoću API-jevog estimatora DNNClassifier.

Koristit ćemo skup podataka MNIST za obuku vaše prve neuronske mreže. Uvježbavanje neuronske mreže s TensorFlow nije jako komplicirano. Korak predobrade izgleda potpuno isto kao u prethodnim tutorijalima. Postupit ćete na sljedeći način:

  1. Uvezite podatke
  2. Transformirajte podatke
  3. Konstruirajte tenzor
  4. Izgradite model
  5. Obučite i ocijenite model
  6. Poboljšajte model

Napomena o verziji: Kôd u ovom vodiču usmjeren je na TensorFlow 1.x Estimator API. Konačno izdanje paketa tf-estimator isporučeno je s TensorFlowom 2.15, a tf.estimator je uklonjen u TensorFlowu 2.16. Da biste pokrenuli ove korake na trenutnom izdanju, ili pričvrstite TensorFlow 2.15 ili ponovno izgradite istu dvoslojnu mrežu s tf.keras.layers.Dense i model.fit().

Korak 1) Uvezite podatke

Prvo, morate uvesti potrebnu biblioteku. Skup podataka MNIST možete uvesti pomoću scikit učiti kao što je prikazano u primjeru TensorFlow neuronske mreže u nastavku.

MNIST skup podataka najčešće se koristi za testiranje novih tehnika ili algoritama. To je zbirka slika veličine 28 × 28 piksela, od kojih svaka prikazuje rukom pisanu znamenku od 0 do 9. Odbor dubokih konvolucijskih mreža treniranih elastičnim izobličenjima smanjio je pogrešku testa na 0.27 posto.

import numpy as np
import tensorflow as tf
np.random.seed(1337)

Izvorni vodič je ručno preuzeo MNIST datoteke i usmjerio fetch_mldata na tu mapu.

from sklearn.datasets import fetch_mldata
mnist = fetch_mldata(' /Users/Thomas/Dropbox/Learning/Upwork/tuto_TF/data/mldata/MNIST original')
print(mnist.data.shape)
print(mnist.target.shape)

Napomena API-ja: mldata.org više nije online, a fetch_mldata je uklonjen u scikit-learn verziji 0.22. Na trenutnoj instalaciji, zamijenite gornji poziv s fetch_openml('mnist_784', version=1), koji preuzima istih 70 000 znamenki i otkriva identične podatke i atribute cilja.

Nakon toga, razdvajate podatke i dobivate oblik oba skupa podataka.

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(mnist.data, mnist.target, test_size=0.2, random_state=42)
y_train  = y_train.astype(int)
y_test  = y_test.astype(int)
batch_size =len(X_train)

print(X_train.shape, y_train.shape,y_test.shape )

Korak 2) Transformirajte podatke

U prethodnom vodiču naučili ste da trebate transformirati podatke kako biste ograničili učinak outliera. U ovom vodiču o neuronskim mrežama transformirat ćete podatke pomoću min-max skalera. Formula je:

(X-min_x)/(max_x - min_x)

scikit-learn već ima funkciju za to: MinMaxScaler()

## resclae
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
# Train
X_train_scaled = scaler.fit_transform(X_train.astype(np.float64))
# test
X_test_scaled = scaler.fit_transform(X_test.astype(np.float64))

Korak 3) Konstruirajte tenzor

Sada ste upoznati s načinom stvaranja tenzori u TensorFlowu. Skup vlakova možete pretvoriti u numerički stupac.

feature_columns = [tf.feature_column.numeric_column('x', shape=X_train_scaled.shape[1:])]

Korak 4) Izgradite model

Arhitektura neuronske mreže sadrži 2 skrivena sloja s 300 jedinica za prvi sloj i 100 jedinica za drugi. Ove vrijednosti dolaze iz iskustva, a ne iz formule. Možete ih podesiti i vidjeti kako utječu na točnost mreže.

Za izgradnju modela koristite estimator DNNClassifier. Broj klasa morate postaviti na 10 jer u skupu za učenje postoji deset klasa. Već ste upoznati sa sintaksom objekta estimatora. Argumenti feature_columns, n_classes i model_dir su potpuno isti kao u prethodnom vodiču. Argument hidden_units je novi: on kontrolira i broj slojeva i koliko čvorova svaki sloj povezuje s neuronskom mrežom. U donjem kodu postoje dva skrivena sloja, prvi povezuje 300 čvorova, a drugi 100 čvorova.

Za izradu procjenitelja upotrijebite tf.estimator.DNNClassifier sa sljedećim parametrima:

  • stupci_značajki: Definirajte stupce koji će se koristiti u mreži
  • skrivene_jedinice: Definirajte broj skrivenih neurona
  • n_klasa: Definirajte broj klasa za predviđanje
  • direktorij_modela: Definirajte put od TensorBoard
estimator = tf.estimator.DNNClassifier(
    feature_columns=feature_columns,
    hidden_units=[300, 100], 
    n_classes=10, 
    model_dir = '/train/DNN')

Korak 5) Obučite i ocijenite model

Za treniranje modela i njegovu evaluaciju možete koristiti NumPy input funkciju.

# Train the estimator
train_input = tf.estimator.inputs.numpy_input_fn(
    x={"x": X_train_scaled},
    y=y_train,
    batch_size=50,
    shuffle=False,
    num_epochs=None)
estimator.train(input_fn = train_input,steps=1000) 
eval_input = tf.estimator.inputs.numpy_input_fn(
    x={"x": X_test_scaled},
    y=y_test, 
    shuffle=False,
    batch_size=X_test_scaled.shape[0],
    num_epochs=1)
estimator.evaluate(eval_input,steps=None) 

Izlaz:

{'accuracy': 0.9637143,
 'average_loss': 0.12014342,
 'loss': 1682.0079,
 'global_step': 1000}

Trenutna arhitektura dovodi do točnosti na skupu za evaluaciju od otprilike 96 posto.

Korak 6) Poboljšajte model

Možete pokušati poboljšati model dodavanjem parametara regularizacije.

Ovdje estimator koristi Proximal AdaGrad optimizer s stopom ispadanja od 0.3 i snagama L1 i L2 postavljenim na 0.01. U TensorFlow neuronskoj mreži, do optimizatora se dolazi putem objekta `train` nakon čega slijedi naziv optimizatora. TensorFlow isporučuje ugrađeni API za Proximal AdaGrad optimizer.

Za dodavanje regularizacije dubokoj neuronskoj mreži možete koristiti tf.train.ProximalAdagradOptimizer sa sljedećim parametrima:

  • Brzina učenja: stopa_učenja
  • Regularizacija L1: l1_snaga_regularizacije
  • Regularizacija L2: l2_snaga_regularizacije
estimator_imp = tf.estimator.DNNClassifier(
    feature_columns=feature_columns,
    hidden_units=[300, 100],
    dropout=0.3, 
    n_classes = 10,
    optimizer=tf.train.ProximalAdagradOptimizer(
      learning_rate=0.01,
      l1_regularization_strength=0.01, 
      l2_regularization_strength=0.01
    ),
    model_dir = '/train/DNN1')
estimator_imp.train(input_fn = train_input,steps=1000) 
estimator_imp.evaluate(eval_input,steps=None) 

Izlaz:

{'accuracy': 0.95057142,
 'average_loss': 0.17318928,
 'loss': 2424.6499,
 'global_step': 2000}

Vrijednosti odabrane za smanjenje prekomjernog prilagođavanja nisu poboljšale točnost modela. Vaš prvi model imao je točnost od 96%, dok model s L2 regularizatorom ima točnost od 95%. Možete isprobati različite vrijednosti i vidjeti kako utječu na točnost.

Pitanja i odgovori

Ne postoji formula. Uobičajena pravila drže skrivene neurone između ulazne i izlazne veličine ili blizu dvije trećine ulaznog sloja plus izlaz. Većini tabličnih problema potreban je jedan ili dva skrivena sloja; počnite s malim i povećavajte dok se model ne prilagodi.

Nije kako je napisano. tf.estimator je uklonjen u TensorFlowu 2.16 i tf.estimator.inputs.numpy_input_fn više ne postoji. Ili pričvrstite TensorFlow 2.15 ili ponovno izgradite mrežu sa slojevima tf.keras.layers.Dense od 300 i 100 jedinica i trenirajte je pomoću model.fit().

Pretraživanje neuronske arhitekture i automatizirane biblioteke za podešavanje paralelno pregledavaju broj slojeva, širine, stope učenja i odustajanje, a zatim rangiraju kandidate prema rezultatu validacije. Zamjenjuju ručne pokušaje i pogreške mjerenim usporedbama, iako inženjer i dalje postavlja proračun za izračun i ciljanu metriku.

Da. GitHub kopilot automatski dovršava standardne postavke poput ulaznih cjevovoda, slojeva i petlji evaluacije iz kratkog komentara. Tretira svoj izlaz kao nacrt: može predložiti uklonjene API-je poput fetch_mldata, stoga provjerite svaki poziv u odnosu na trenutnu dokumentaciju prije pokretanja.

mldata.org je zatvoren i scikit učiti U verziji 0.22 uklonjena je funkcija fetch_mldata. Umjesto nje koristite fetch_openml('mnist_784', version=1). Preuzima istih 70 000 rukom pisanih znamenki i vraća podatke i atribute cilja, tako da ostatak ovog vodiča ostaje nepromijenjen.

ANN povezuje svaku jedinicu u jednom sloju sa svakom jedinicom u sljedećem, što odgovara tabličnim podacima. konvolucijska mreža dijeli male filtere na slici, dok rekurentna mreža prenosi stanje naprijed kroz niz.

Osnovni model nije bio previše prilagođen, pa je gubitak od 0.3 plus L1 i L2 kazne od 0.01 uglavnom uklonio korisni kapacitet. Točnost je pala s 0.9637143 na 0.95057142. Regularizacija pomaže samo kada je jaz između rezultata vlaka i testa velik.

Uobičajene produkcijske upotrebe uključuju prepoznavanje slike i govora, razumijevanje prirodnog jezika, predviđanje potražnje, kreditno bodovanje, otkrivanje prijevara i rangiranje preporuka. Njihova snaga je učenje nelinearnih odnosa izravno iz sirovih podataka; njihova slabost je ograničena objašnjivost u usporedbi s linearnim ili modelima temeljenim na stablima.

Sažmite ovu objavu uz: