Problemele de regresie apar ori de câte ori dorim să prezicem o valoare numerică. Exemplele comune includ prezicerea prețurilor (pentru case, acțiuni etc.), prezicerea duratei de spitalizare (pentru pacienții din spital), prognozarea cererii (pentru vânzările cu amănuntul), printre multe altele. Nu orice problemă de predicție este una de regresie clasică. Mai târziu, vom introduce probleme de clasificare, unde scopul este de a prezice apartenența la un set de categorii.
Ca exemplu curent, presupunem că dorim să estimăm prețurile caselor (în dolari) pe baza suprafeței lor (în picioare pătrate) și a vârstei (în ani). Pentru a dezvolta un model de predictie a prețurilor caselor, trebuie să obținem date, inclusiv prețul de vânzare, suprafața și vârsta pentru fiecare casă. În terminologia de machine learning, setul de date se numește set de date de antrenament sau set de antrenament, și fiecare rând (conținând datele corespunzătoare unei vânzări) se numește exemplu (sau punct de date, instanță, eșantion). Lucrul pe care încercăm să-l prezicem (prețul) se numește etichetă (sau țintă). Variabilele (vârsta și suprafața) pe care se bazează predicțiile se numesc caracteristici (sau covariate).
%matplotlib inline from d2l import torch as d2l import math import torch import numpy as np import time
Regresia liniară este atât cea mai simplă, cât și cea mai populară dintre instrumentele standard pentru abordarea problemelor de regresie. Datând de la începutul secolului al XIX-lea 1), regresia liniară derivă din câteva ipoteze simple. În primul rând, presupunem că relația dintre caracteristicile $\mathbf{x}$ și ținta $y$ este aproximativ liniară, adică media condiționată $E[Y \mid X=\mathbf{x}]$ poate fi exprimată ca o sumă ponderată a caracteristicilor $\mathbf{x}$. Această configurație permite ca valoarea țintă să se abată totuși de la valoarea sa așteptată din cauza zgomotului de observare. Apoi, putem impune ipoteza că orice astfel de zgomot este bine echilibrat, urmând o distribuție Gaussiană. De regulă, vom folosi $n$ pentru a desemna numărul de exemple din setul nostru de date. Utilizăm indici superiori pentru a enumera eșantioanele și țintele, și indici inferiori pentru a indexa coordonatele. Mai concret, $\mathbf{x}^{(i)}$ reprezintă al $i$-lea eșantion și $x_j^{(i)}$ reprezintă coordonata sa $j$.
În centrul fiecărei soluții se află un model care descrie modul în care caracteristicile pot fi transformate într-o estimare a țintei. Ipoteza liniarității înseamnă că valoarea așteptată a țintei (prețul) poate fi exprimată ca o sumă ponderată a caracteristicilor (suprafața și vârsta):
$$\textrm{preț} = w_{\textrm{suprafață}} \cdot \textrm{suprafață} + w_{\textrm{vârstă}} \cdot \textrm{vârstă} + b.$$
Aici $w_{\textrm{suprafață}}$ și $w_{\textrm{vârstă}}$ sunt numite ponderi (weights), iar $b$ este numit bias (sau deplasament/offset sau intercept). Ponderile determină influența fiecărei caracteristici asupra predicției noastre. Biasul determină valoarea estimării atunci când toate caracteristicile sunt zero. Chiar dacă nu vom vedea niciodată case nou construite cu suprafața exact zero, avem totuși nevoie de bias deoarece ne permite să exprimăm toate funcțiile liniare ale caracteristicilor noastre (mai degrabă decât să ne limităm la liniile care trec prin origine). Strict vorbind, :eqref:eq_price-area este o transformare afină a caracteristicilor de intrare, care se caracterizează printr-o transformare liniară a caracteristicilor printr-o sumă ponderată, combinată cu o translație prin intermediul biasului adăugat. Având un set de date, scopul nostru este să alegem ponderile $\mathbf{w}$ și biasul $b$ care, în medie, fac ca predicțiile modelului nostru să se potrivească cât mai bine cu prețurile reale observate în date.
În disciplinele în care este obișnuit să ne concentrăm pe seturi de date cu doar câteva caracteristici, exprimarea explicită a modelelor sub formă lungă, ca în :eqref:eq_price-area, este comună. În machine learning, lucrăm de obicei cu seturi de date multidimensionale, unde este mai convenabil să folosim notația compactă a algebrei liniare. Când intrările noastre constau din $d$ caracteristici, putem atribui fiecăreia un indice (între $1$ și $d$) și putem exprima predicția noastră $\hat{y}$ (în general, simbolul “pălărie” (hat) denotă o estimare) ca
$$\hat{y} = w_1 x_1 + \cdots + w_d x_d + b.$$
Colectând toate caracteristicile într-un vector $\mathbf{x} \in \mathbb{R}^d$ și toate ponderile într-un vector $\mathbf{w} \in \mathbb{R}^d$, ne putem exprima modelul compact prin produsul scalar dintre $\mathbf{w}$ și $\mathbf{x}$:
$$\hat{y} = \mathbf{w}^\top \mathbf{x} + b.$$
În :eqref:eq_linreg-y, vectorul $\mathbf{x}$ corespunde caracteristicilor unui singur exemplu. Vom găsi adesea util să ne referim la caracteristicile întregului nostru set de date de $n$ exemple prin intermediul matricei de design $\mathbf{X} \in \mathbb{R}^{n \times d}$. Aici, $\mathbf{X}$ conține un rând pentru fiecare exemplu și o coloană pentru fiecare caracteristică. Pentru o colecție de caracteristici $\mathbf{X}$, predicțiile $\hat{\mathbf{y}} \in \mathbb{R}^n$ pot fi exprimate prin produsul matrice-vector:
$${\hat{\mathbf{y}}} = \mathbf{X} \mathbf{w} + b,$$
unde broadcasting-ul () este aplicat în timpul sumării. Având caracteristicile unui set de date de antrenament $\mathbf{X}$ și etichetele corespunzătoare (cunoscute) $\mathbf{y}$, scopul regresiei liniare este de a găsi vectorul de ponderi $\mathbf{w}$ și termenul de bias $b$ astfel încât, având caracteristicile unui nou exemplu de date eșantionat din aceeași distribuție ca $\mathbf{X}$, eticheta noului exemplu va fi prezisă (în speranță) cu cea mai mică eroare.
Chiar dacă credem că cel mai bun model pentru prezicerea $y$ dat fiind $\mathbf{x}$ este liniar, nu ne-am aștepta să găsim un set de date din lumea reală de $n$ exemple unde $y^{(i)}$ este exact egal cu $\mathbf{w}^\top \mathbf{x}^{(i)}+b$ pentru toți $1 \leq i \leq n$. De exemplu, indiferent de instrumentele pe care le folosim pentru a observa caracteristicile $\mathbf{X}$ și etichetele $\mathbf{y}$, ar putea exista o mică eroare de măsurare. Astfel, chiar și atunci când suntem convinși că relația de bază este liniară, vom încorpora un termen de zgomot pentru a ține cont de astfel de erori.
Înainte de a trece la căutarea celor mai buni parametri (sau parametri ai modelului) $\mathbf{w}$ și $b$, vom avea nevoie de încă două lucruri: (i) o măsură a calității unui anumit model; și (ii) o procedură de actualizare a modelului pentru a-i îmbunătăți calitatea.
În mod natural, adaptarea modelului nostru la date necesită să cădem de acord asupra unei măsuri de conformitate (fit) (sau, echivalent, de neconformitate). Funcțiile de pierdere (loss functions) cuantifică distanța dintre valorile reale și cele prezise ale țintei. Pierderea va fi, de obicei, un număr nenegativ unde valorile mai mici sunt mai bune și predicțiile perfecte implică o pierdere de 0. Pentru problemele de regresie, cea mai comună funcție de pierdere este eroarea pătratică. Când predicția noastră pentru un exemplu $i$ este $\hat{y}^{(i)}$ și eticheta adevărată corespunzătoare este $y^{(i)}$, eroarea pătratică este dată de:
$$l^{(i)}(\mathbf{w}, b) = \frac{1}{2} \left(\hat{y}^{(i)} - y^{(i)}\right)^2.$$
Constantă $\frac{1}{2}$ nu face nicio diferență reală, dar se dovedește a fi convenabilă din punct de vedere al notației, deoarece se simplifică atunci când luăm derivata pierderii. Deoarece setul de date de antrenament ne este dat, și astfel este în afara controlului nostru, eroarea empirică este doar o funcție a parametrilor modelului. În , vizualizăm potrivirea unui model de regresie liniară într-o problemă cu intrări unidimensionale.
Rețineți că diferențele mari între estimările $\hat{y}^{(i)}$ și țintele $y^{(i)}$ duc la contribuții și mai mari la pierdere, datorită formei sale pătratice (această pătraticitate poate fi o sabie cu două tăișuri; deși încurajează modelul să evite erorile mari, poate duce și la o sensibilitate excesivă la datele anormale). Pentru a măsura calitatea unui model pe întregul set de date de $n$ exemple, pur și simplu facem media (sau echivalent, suma) pierderilor de pe setul de antrenament:
$$L(\mathbf{w}, b) =\frac{1}{n}\sum_{i=1}^n l^{(i)}(\mathbf{w}, b) =\frac{1}{n} \sum_{i=1}^n \frac{1}{2}\left(\mathbf{w}^\top \mathbf{x}^{(i)} + b - y^{(i)}\right)^2.$$
Când antrenăm modelul, căutăm parametrii ($\mathbf{w}^*, b^*$) care minimizează pierderea totală pe toate exemplele de antrenament:
$$\mathbf{w}^*, b^* = \operatorname*{argmin}_{\mathbf{w}, b}\ L(\mathbf{w}, b).$$
Spre deosebire de majoritatea modelelor pe care le vom acoperi, regresia liniară ne prezintă o problemă de optimizare surprinzător de ușoară. În special, putem găsi parametrii optimi (așa cum sunt evaluați pe datele de antrenament) analitic, aplicând o formulă simplă, după cum urmează. În primul rând, putem include biasul $b$ în parametrul $\mathbf{w}$ prin adăugarea unei coloane la matricea de design constând din toate valorile de 1. Atunci problema noastră de predicție este minimizarea $\|\mathbf{y} - \mathbf{X}\mathbf{w}\|^2$. Atâta timp cât matricea de design $\mathbf{X}$ are rang maxim (nicio caracteristică nu este liniar dependentă de celelalte), atunci va exista un singur punct critic pe suprafața pierderii și acesta corespunde minimului pierderii pe întregul domeniu. Luând derivata pierderii în raport cu $\mathbf{w}$ și setând-o egală cu zero obținem:
$$\begin{aligned} \partial_{\mathbf{w}} \|\mathbf{y} - \mathbf{X}\mathbf{w}\|^2 = 2 \mathbf{X}^\top (\mathbf{X} \mathbf{w} - \mathbf{y}) = 0 \textrm{ and hence } \mathbf{X}^\top \mathbf{y} = \mathbf{X}^\top \mathbf{X} \mathbf{w}. \end{aligned}$$
Rezolvarea pentru $\mathbf{w}$ ne oferă soluția optimă pentru problema de optimizare. Rețineți că această soluție
$$\mathbf{w}^* = (\mathbf X^\top \mathbf X)^{-1}\mathbf X^\top \mathbf{y}$$
va fi unică doar atunci când matricea $\mathbf X^\top \mathbf X$ este inversabilă, adică atunci când coloanele matricei de design sunt liniar independente 2).
Deși problemele simple precum regresia liniară pot admite soluții analitice, nu ar trebui să vă obișnuiți cu un astfel de noroc. Deși soluțiile analitice permit o analiză matematică frumoasă, cerința unei soluții analitice este atât de restrictivă încât ar exclude aproape toate aspectele interesante ale deep learning-ului.
Din fericire, chiar și în cazurile în care nu putem rezolva modelele analitic, putem totuși antrena modelele eficient în practică. Mai mult, pentru multe sarcini, acele modele greu de optimizat se dovedesc a fi mult mai bune, astfel încât găsirea modului de a le antrena merită din plin osteneala.
Tehnica cheie pentru optimizarea aproape a fiecărui model de deep learning, și la care vom apela pe parcursul acestei cărți, constă în reducerea iterativă a erorii prin actualizarea parametrilor în direcția care scade incremental funcția de pierdere. Acest algoritm se numește coborârea pe gradient (gradient descent).
Cea mai naivă aplicare a coborârii pe gradient constă în luarea derivatei funcției de pierdere, care este o medie a pierderilor calculate pe fiecare exemplu din setul de date. În practică, acest lucru poate fi extrem de lent: trebuie să trecem peste întregul set de date înainte de a face o singură actualizare, chiar dacă pașii de actualizare ar putea fi foarte puternici 3). Mai rău, dacă există multă redundanță în datele de antrenament, beneficiul unei actualizări complete este limitat.
Cealaltă extremă este să considerăm un singur exemplu la fiecare pas și să efectuăm pașii de actualizare pe baza unei singure observații la un moment dat. Algoritmul rezultat, coborârea pe gradient stochastic (SGD), poate fi o strategie eficientă 4), chiar și pentru seturi de date mari. Din păcate, SGD are dezavantaje, atât de calcul, cât și statistice. O problemă provine din faptul că procesoarele sunt mult mai rapide la multiplicarea și adunarea numerelor decât la mutarea datelor din memoria principală în cache-ul procesorului. Este cu un ordin de mărime mai eficient să efectuezi o multiplicare matrice-vector decât un număr corespunzător de operații vector-vector. Aceasta înseamnă că poate dura mult mai mult procesarea unui eșantion pe rând în comparație cu un lot complet. O a doua problemă este că unele dintre straturi, cum ar fi normalizarea lotului (batch normalization, care va fi descrisă în ), funcționează bine doar atunci când avem acces la mai mult de o observație la un moment dat.
Soluția pentru ambele probleme este alegerea unei strategii intermediare: în loc să luăm un lot complet sau doar un singur eșantion odată, luăm un minilot (minibatch) de observații 5). Alegerea specifică a dimensiunii minilotului depinde de mulți factori, cum ar fi cantitatea de memorie, numărul de acceleratoare, alegerea straturilor și dimensiunea totală a setului de date. Cu toate acestea, un număr între 32 și 256, de preferință un multiplu al unei puteri mari a lui $2$, este un bun început. Acest lucru ne conduce la coborârea pe gradient stochastic de minilot (minibatch stochastic gradient descent).
În forma sa cea mai de bază, în fiecare iterație $t$, eșantionăm mai întâi aleatoriu un minilot $\mathcal{B}_t$ format dintr-un număr fix $|\mathcal{B}|$ de exemple de antrenament. Apoi calculăm derivata (gradientul) pierderii medii pe minilot în raport cu parametrii modelului. În final, înmulțim gradientul cu o valoare pozitivă mică predeterminată $\eta$, numită rată de învățare (learning rate), și scădem termenul rezultat din valorile actuale ale parametrilor. Putem exprima actualizarea după cum urmează:
$$(\mathbf{w},b) \leftarrow (\mathbf{w},b) - \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}_t} \partial_{(\mathbf{w},b)} l^{(i)}(\mathbf{w},b).$$
În rezumat, SGD de minilot procedează după cum urmează: (i) inițializează valorile parametrilor modelului, de obicei la întâmplare; (ii) eșantionează iterativ miniloturi aleatorii din date, actualizând parametrii în direcția gradientului negativ. Pentru pierderile pătratice și transformările afine, aceasta are o expansiune sub formă închisă:
$$\begin{aligned} \mathbf{w} & \leftarrow \mathbf{w} - \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}_t} \partial_{\mathbf{w}} l^{(i)}(\mathbf{w}, b) && = \mathbf{w} - \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}_t} \mathbf{x}^{(i)} \left(\mathbf{w}^\top \mathbf{x}^{(i)} + b - y^{(i)}\right)\\ b &\leftarrow b - \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}_t} \partial_b l^{(i)}(\mathbf{w}, b) && = b - \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}_t} \left(\mathbf{w}^\top \mathbf{x}^{(i)} + b - y^{(i)}\right). \end{aligned}$$
Deoarece alegem un minilot $\mathcal{B}$ trebuie să normalizăm prin dimensiunea sa $|\mathcal{B}|$. Frecvent, dimensiunea minilotului și rata de învățare sunt definite de utilizator. Astfel de parametri ajustabili care nu sunt actualizați în bucla de antrenament se numesc hiperparametri. Aceștia pot fi ajustați automat printr-o serie de tehnici, cum ar fi optimizarea Bayesiană 6). În cele din urmă, calitatea soluției este de obicei evaluată pe un set de date de validare (sau set de validare) separat.
După antrenament pentru un număr predeterminat de iterații (sau până când este îndeplinit un alt criteriu de oprire), înregistrăm parametrii estimați ai modelului, notați cu $\hat{\mathbf{w}}, \hat{b}$. Rețineți că, chiar dacă funcția noastră este cu adevărat liniară și fără zgomot, acești parametri nu vor fi minimizatorii exacți ai pierderii, nici măcar determiniști. Deși algoritmul converge lent spre minimizatori, de regulă nu îi va găsi exact într-un număr finit de pași. Mai mult, miniloturile $\mathcal{B}$ utilizate pentru actualizarea parametrilor sunt alese la întâmplare. Acest lucru rupe determinismul.
Regresia liniară se întâmplă să fie o problemă de învățare cu un minim global (ori de câte ori $\mathbf{X}$ are rang maxim, sau echivalent, ori de câte ori $\mathbf{X}^\top \mathbf{X}$ este inversabilă). Cu toate acestea, suprafețele de pierdere pentru rețelele profunde conțin multe puncte de șa și minime. Din fericire, de obicei nu ne interesează găsirea unui set exact de parametri, ci pur și simplu a oricărui set de parametri care duce la predicții precise (și, prin urmare, la o pierdere scăzută). În practică, practicienii de deep learning rareori se străduiesc să găsească parametri care minimizează pierderea pe seturile de antrenament 7). Sarcina mai formidabilă este găsirea parametrilor care duc la predicții precise pe date nevăzute anterior, o provocare numită generalizare. Revenim la aceste subiecte pe parcursul cărții.
Având modelul $\hat{\mathbf{w}}^\top \mathbf{x} + \hat{b}$, putem acum face predicții pentru un exemplu nou, de exemplu, prezicerea prețului de vânzare al unei case nevăzute anterior având suprafața $x_1$ și vârsta $x_2$. Practicienii de deep learning au început să numească faza de predicție inferență, dar aceasta este o terminologie puțin greșită — inferența se referă în sens larg la orice concluzie la care s-a ajuns pe baza dovezilor, incluzând atât valorile parametrilor, cât și eticheta probabilă pentru o instanță nevăzută. În literatura de statistică, inferența denotă mai des inferența parametrilor și această supraîncărcare a terminologiei creează confuzie inutilă atunci când practicienii de deep learning vorbesc cu statisticienii. În cele ce urmează, vom rămâne la termenul de predicție ori de câte ori este posibil.
Când ne antrenăm modelele, de obicei dorim să procesăm miniloturi întregi de exemple simultan. Realizarea eficientă a acestui lucru necesită ca (noi) (să vectorizăm calculele și să valorificăm biblioteci de algebră liniară rapidă în loc să scriem bucle for costisitoare în Python.)
Pentru a vedea de ce acest lucru contează atât de mult, să (luăm în considerare două metode de adunare a vectorilor.) Pentru început, instanțiem doi vectori de 10.000 de dimensiuni care conțin numai valori de 1. În prima metodă, iterăm peste vectori cu o buclă for de Python. În a doua, ne bazăm pe un singur apel către +.
n = 10000 a = d2l.ones(n) b = d2l.ones(n)
Acum putem măsura volumul de muncă. Mai întâi, [îi adunăm, câte o coordonată la un moment dat, folosind o buclă for.]
c = d2l.zeros(n) t = time.time() for i in range(n): c[i] = a[i] + b[i] f'{time.time() - t:.5f} sec'
(Alternativ, ne bazăm pe operatorul reîncărcat + pentru a calcula suma pe elemente.)
t = time.time() d = a + b f'{time.time() - t:.5f} sec'
A doua metodă este dramatic mai rapidă decât prima. Vectorizarea codului oferă adesea accelerări de ordinul mărimii. Mai mult, împingem mai mult din matematică către bibliotecă, astfel încât nu trebuie să scriem noi înșine atât de multe calcule, reducând potențialul de erori și crescând portabilitatea codului.
Până acum am dat o motivație destul de funcțională pentru obiectivul pierderii pătratice: parametrii optimi returnează speranța condiționată $E[Y\mid X]$ ori de câte ori modelul de bază este cu adevărat liniar, iar pierderea atribuie penalizări mari pentru valorile anormale (outliers). Putem oferi, de asemenea, o motivație mai formală pentru obiectivul pierderii pătratice prin asumarea unor ipoteze probabilistice despre distribuția zgomotului.
Regresia liniară a fost inventată la începutul secolului al XIX-lea. Deși s-a dezbătut mult timp dacă Gauss sau Legendre s-au gândit primii la această idee, Gauss a fost cel care a descoperit și distribuția normală (numită și Gaussiană). Se pare că distribuția normală și regresia liniară cu pierdere pătratică împărtășesc o conexiune mai profundă decât originea comună.
Pentru început, reamintiți-vă că o distribuție normală cu media $\mu$ și varianța $\sigma^2$ (deviația standard $\sigma$) este dată de
$$p(x) = \frac{1}{\sqrt{2 \pi \sigma^2}} \exp\left(-\frac{1}{2 \sigma^2} (x - \mu)^2\right).$$
Mai jos [definim o funcție pentru a calcula distribuția normală].
def normal(x, mu, sigma): p = 1 / math.sqrt(2 * math.pi * sigma**2)
Putem acum (vizualiza distribuțiile normale).
# Perechi de medie și deviație standard params = [(0, 1), (0, 2), (3, 1)] d2l.plot(x, [normal(x, mu, sigma) for mu, sigma in params], xlabel='x', ylabel='p(x)', figsize=(4.5, 2.5), legend=[f'medie {mu}, std {sigma}' for mu, sigma in params])
Rețineți că schimbarea mediei corespunde unei translații de-a lungul axei $x$, iar creșterea varianței răspândește distribuția, scăzându-i vârful.
O modalitate de a motiva regresia liniară cu pierdere pătratică este de a presupune că observațiile provin din măsurători cu zgomot, unde zgomotul $\epsilon$ urmează distribuția normală $\mathcal{N}(0, \sigma^2)$:
$$y = \mathbf{w}^\top \mathbf{x} + b + \epsilon \textrm{ unde } \epsilon \sim \mathcal{N}(0, \sigma^2).$$
Astfel, putem scrie acum verosimilitatea (likelihood) de a vedea un anumit $y$ pentru un dat $\mathbf{x}$ prin intermediul
$$P(y \mid \mathbf{x}) = \frac{1}{\sqrt{2 \pi \sigma^2}} \exp\left(-\frac{1}{2 \sigma^2} (y - \mathbf{w}^\top \mathbf{x} - b)^2\right).$$
Ca atare, verosimilitatea se factorizează. Conform principiului verosimilității maxime (maximum likelihood), cele mai bune valori ale parametrilor $\mathbf{w}$ și $b$ sunt cele care maximizează verosimilitatea întregului set de date:
$$P(\mathbf y \mid \mathbf X) = \prod_{i=1}^{n} p(y^{(i)} \mid \mathbf{x}^{(i)}).$$
Egalitatea rezultă din faptul că toate perechile $(\mathbf{x}^{(i)}, y^{(i)})$ au fost extrase independent una de cealaltă. Estimatorii aleși conform principiului verosimilității maxime se numesc estimatori de verosimilitate maximă. Deși maximizarea produsului multor funcții exponențiale ar putea părea dificilă, putem simplifica lucrurile semnificativ, fără a schimba obiectivul, prin maximizarea logaritmului verosimilității în schimb. Din motive istorice, optimizările sunt mai des exprimate sub formă de minimizare decât de maximizare. Deci, fără a schimba nimic, putem minimiza log-verosimilitatea negativă (negative log-likelihood), pe care o putem exprima după cum urmează:
$$-\log P(\mathbf y \mid \mathbf X) = \sum_{i=1}^n \frac{1}{2} \log(2 \pi \sigma^2) + \frac{1}{2 \sigma^2} \left(y^{(i)} - \mathbf{w}^\top \mathbf{x}^{(i)} - b\right)^2.$$
Dacă presupunem că $\sigma$ este fix, putem ignora primul termen, deoarece nu depinde de $\mathbf{w}$ sau $b$. Al doilea termen este identic cu pierderea prin eroarea pătratică introdusă anterior, cu excepția constantei multiplicative $\frac{1}{\sigma^2}$. Din fericire, soluția nu depinde nici ea de $\sigma$. Rezultă că minimizarea erorii medii pătratice este echivalentă cu estimarea verosimilității maxime a unui model liniar sub ipoteza zgomotului Gaussian aditiv.
Deși modelele liniare nu sunt suficient de bogate pentru a exprima multele rețele complicate pe care le vom introduce în această carte, rețelele neuronale (artificiale) sunt suficient de bogate pentru a include modelele liniare ca rețele în care fiecare caracteristică este reprezentată de un neuron de intrare, toți aceștia fiind conectați direct la ieșire.
ilustrează regresia liniară ca o rețea neuronală. Diagrama evidențiază modelul de conectivitate, cum ar fi modul în care fiecare intrare este conectată la ieșire, dar nu valorile specifice luate de ponderi sau biasuri.
Intrările sunt $x_1, \ldots, x_d$. Ne referim la $d$ ca fiind numărul de intrări sau dimensionalitatea caracteristicilor în stratul de intrare. Ieșirea rețelei este $o_1$. Deoarece încercăm doar să prezicem o singură valoare numerică, avem un singur neuron de ieșire. Rețineți că valorile de intrare sunt toate date. Există doar un singur neuron calculat. În rezumat, ne putem gândi la regresia liniară ca la o rețea neuronală complet conectată cu un singur strat. Vom întâlni rețele cu mult mai multe straturi în capitolele ulterioare.
Deoarece regresia liniară precede neuroștiința computațională, ar putea părea anacronic să descriem regresia liniară în termeni de rețele neuronale. Cu toate acestea, ele au fost un punct natural de plecare atunci când ciberneticienii și neurofiziologii Warren McCulloch și Walter Pitts au început să dezvolte modele de neuroni artificiali. Luați în considerare imaginea simplificată a unui neuron biologic din , format din dendrite (terminale de intrare), nucleul (Unitatea Centrală de Procesare), axonul (firul de ieșire) și terminalele axonice (terminale de ieșire), permițând conexiuni cu alți neuroni prin intermediul sinapselor.
Informația $x_i$ care sosește de la alți neuroni (sau senzori de mediu) este primită în dendrite. În special, acea informație este ponderată de ponderile sinaptice $w_i$, determinând efectul intrărilor, de exemplu, activarea sau inhibarea prin produsul $x_i w_i$. Intrările ponderate care sosesc din surse multiple sunt agregate în nucleu ca o sumă ponderată $y = \sum_i x_i w_i + b$, posibil supusă unei postprocesări neliniare printr-o funcție $\sigma(y)$. Această informație este apoi trimisă prin axon către terminalele axonice, unde ajunge la destinație (de exemplu, un actuator cum ar fi un mușchi) sau este introdusă într-un alt neuron prin dendritele acestuia.
Cu siguranță, ideea de nivel înalt că multe astfel de unități ar putea fi combinate, cu condiția să aibă conectivitatea și algoritmul de învățare corecte, pentru a produce un comportament mult mai interesant și complex decât ar putea exprima orice neuron singur, provine din studiul nostru asupra sistemelor neuronale biologice reale. În același timp, majoritatea cercetărilor în deep learning de astăzi se inspiră dintr-o sursă mult mai largă. Îi invocăm pe 8), care au subliniat că, deși avioanele s-ar fi putut inspira din păsări, ornitologia nu a fost principalul motor al inovației în aeronautică de câteva secole. În mod similar, inspirația în deep learning în zilele noastre vine în egală măsură sau chiar mai mare din matematică, lingvistică, psihologie, statistică, informatică și multe alte domenii.
În această secțiune, am introdus regresia liniară tradițională, unde parametrii unei funcții liniare sunt aleși pentru a minimiza pierderea pătratică pe setul de antrenament. De asemenea, am motivat această alegere a obiectivului atât prin câteva considerente practice, cât și printr-o interpretare a regresiei liniare ca fiind estimarea verosimilității maxime sub o ipoteză de liniaritate și zgomot Gaussian. După discutarea atât a considerentelor computaționale, cât și a legăturilor cu statistica, am arătat cum astfel de modele liniare ar putea fi exprimate ca rețele neuronale simple unde intrările sunt conectate direct la ieșire (ieșiri). Deși în curând vom trece cu totul de modelele liniare, acestea sunt suficiente pentru a introduce majoritatea componentelor pe care le necesită toate modelele noastre: forme parametrice, obiective diferențiabile, optimizare prin coborârea pe gradient stochastic de minilot și, în final, evaluarea pe date nevăzute anterior.