Poiché non esiste una risposta dettagliata e marcata, farò del mio meglio.
Per prima cosa capiamo da dove viene la motivazione per tali strati: ad esempio un autoencoder convoluzionale. È possibile utilizzare un codificatore automatico convoluzionale per estrarre elementi grafici delle immagini durante la formazione del codificatore automatico per ricostruire l'immagine originale. (È un metodo non supervisionato.)
Un tale codificatore automatico ha due parti: il codificatore che estrae le caratteristiche dall'immagine e il decodificatore che ricostruisce l'immagine originale da queste caratteristiche. L'architettura dell'encoder e del decoder è generalmente speculare.
In un autoencoder convoluzionale, l'encoder funziona con livelli di convoluzione e pool. Presumo che tu sappia come funzionano. Il decodificatore tenta di rispecchiare l'encoder ma invece di "rendere tutto più piccolo" ha l'obiettivo di "rendere tutto più grande" in modo che corrisponda alla dimensione originale dell'immagine.
L'opposto degli strati convoluzionali sono gli strati di convoluzione trasposti (noto anche come deconvoluzione , ma correttamente matematicamente parlando questo è qualcosa di diverso). Funzionano con filtri, kernel, passi come i livelli di convoluzione ma invece di mappare ad esempio da 3x3 pixel di input a 1 output mappano da 1 pixel di input a 3x3 pixel. Naturalmente, anche la backpropagation funziona in modo leggermente diverso.
L'opposto dei livelli di raggruppamento sono i livelli di ricampionamento che nella loro forma più pura ridimensionano solo l'immagine (o copiano il pixel tutte le volte che è necessario). Una tecnica più avanzata sono i passaggi non convertibili che ripristinano i passaggi massimi ricordando la posizione dei massimi nei livelli di passaggi massimi e nei livelli di smistamento copiano il valore esattamente in questa posizione. Per citare da questo documento ( https://arxiv.org/pdf/1311.2901v3.pdf ):
Nella convnet, l'operazione di pooling massimo non è invertibile, tuttavia è possibile ottenere un inverso approssimativo registrando le posizioni dei massimi all'interno di ciascuna regione di pool in un insieme di variabili switch. Nel deconvnet, l'operazione di smistamento utilizza questi interruttori per posizionare le ricostruzioni dallo strato superiore in posizioni appropriate, preservando la struttura dello stimolo.
Per ulteriori input e contesti tecnici, dai un'occhiata a questa spiegazione davvero valida, dimostrativa e approfondita: http://deeplearning.net/software/theano/tutorial/conv_arithmetic.html
E dai un'occhiata a https://www.quora.com/What-is-the-difference-between-Deconvolution-Upsampling-Unpooling-and-Convolutional-Sparse-Coding