Învățare automată - Rețea neuronală; Reducerea greutății - validat încrucișat

Există algoritmi/metode pentru a lua un model antrenat și pentru a-i reduce numărul de greutăți cu un efect negativ cât mai mic posibil la performanța sa finală?

Să presupunem că am un model foarte mare (prea mare) care conține X greutăți și vreau să îl reduc pentru a avea greutăți de 0,9 * X cu cât mai puține daune la performanța finală (sau poate chiar la cel mai mare câștig posibil în unele cazuri ).

Reducerea greutății are loc fie prin schimbarea arhitecturii de bază a modelului și eliminarea straturilor, fie prin reducerea adâncimii caracteristicii în straturile menționate. Evident, după reducere, va fi necesară o anumită ajustare a greutăților rămase.

greutății

2 Răspunsuri 2

Poate doriți să verificați:

Și o lucrare mai recentă pe această temă:

Cu toate acestea, nu am putut găsi o implementare a acestor două. Deci, va trebui să îl implementați singur.

După ce am citit câteva dintre comentariile și răspunsurile utile, am făcut câteva lecturi concentrate pe cont propriu.

După cum sa menționat în alte răspunsuri, acest proces este numit Tunderea și, ca multe alte idei din zona rețelei neuronale, nu este o noutate. Din ceea ce pot spune, asta își are originea în lucrarea lui LeCun din 1990 cu minunatul „Daune cerebrale optime” (Ziarul citează câteva lucrări anterioare privind minimizarea rețelei de la sfârșitul anilor '80, dar nu am mers atât de departe în gaura iepurelui). Ideea principală a fost să aproximăm schimbarea pierderilor cauzate de eliminarea unei hărți de caracteristici și să o minimalizăm:

În cazul în care C este funcția de cost, D este setul nostru de date (din x eșantioane și y etichete) și W sunt greutățile modelului (W0 sunt greutățile originale). hi este ieșirea produsă din parametrul i, care poate fi fie o hartă completă a caracteristicilor în straturi de convoluție, fie un singur neuron în straturi dense.