Contenuto principale

La traduzione di questa pagina non è aggiornata. Fai clic qui per vedere l'ultima versione in inglese.

Configurazione degli input e degli output della rete neurale superficiale

Questo argomento fa parte del workflow di progettazione descritto in Workflow per la progettazione delle reti neurali.

Una volta creata, la rete neurale deve essere configurata. La fase di configurazione consiste nell'esaminare i dati di input e di target, nell'impostare le grandezze dei dati di input e di output della rete in modo che corrispondano ai dati e nello scegliere le impostazioni per l'elaborazione degli input e degli output che consentano di ottenere le migliori prestazioni della rete. Di norma, la fase di configurazione viene eseguita automaticamente quando viene richiamata la funzione di addestramento. Tuttavia, è possibile eseguirla manualmente, utilizzando la funzione di configurazione. Ad esempio, per configurare la rete creata in precedenza in modo che approssimi una funzione sinusoidale, si devono eseguire i seguenti comandi:

p = -2:.1:2;
t = sin(pi*p/2);
net1 = configure(net,p,t);

È stato fornito un set esemplificativo di input e target alla rete (output desiderati della rete). Grazie a queste informazioni, la funzione configure può impostare le grandezze di input e output della rete in modo che corrispondano ai dati.

Al termine della configurazione, se si osserva nuovamente il peso tra il livello 1 e il livello 2, si può notare che la dimensione del peso è di 1 x 10. Questo dipende dal fatto che il target di questa rete è uno scalare.

net1.layerWeights{2,1}

    Neural Network Weight

            delays: 0
           initFcn: (none)
        initConfig: .inputSize
             learn: true
          learnFcn: 'learngdm'
        learnParam: .lr, .mc
              size: [1 10]
         weightFcn: 'dotprod'
       weightParam: (none)
          userdata: (your custom info)

Oltre all'impostazione delle dimensioni appropriate per i pesi, la fase di configurazione definisce inoltre le impostazioni per l'elaborazione degli input e degli output. L'elaborazione dell'input può essere situata nell'oggetto secondario inputs:

net1.inputs{1}

    Neural Network Input

              name: 'Input'
    feedbackOutput: []
       processFcns: {'removeconstantrows', mapminmax}
     processParams: {1x2 cell array of 2 params}
   processSettings: {1x2 cell array of 2 settings}
    processedRange: [1x2 double]
     processedSize: 1
             range: [1x2 double]
              size: 1
          userdata: (your custom info)

Prima che l'input venga applicato alla rete, viene elaborato da due funzioni: removeconstantrows e mapminmax. Questi aspetti sono discussi in modo esauriente in Reti neurali superficiali multilivello e addestramento sulla retropropagazione, quindi i dettagli non verranno trattati in questo contesto. Queste funzioni di elaborazione possono avere alcuni parametri di elaborazione, che sono contenuti nell'oggetto secondario net1.inputs{1}.processParam. Tali parametri presentano dei valori predefiniti che possono essere modificati. Le funzioni di elaborazione possono inoltre avere impostazioni di configurazione che dipendono dai dati di campionamento. Tali impostazioni sono contenute in net1.inputs{1}.processSettings e vengono impostate durante il processo di configurazione. Ad esempio, la funzione di elaborazione mapminmax normalizza i dati in modo che tutti gli input rientrino nell'intervallo [-1, 1]. Le impostazioni di configurazione della funzione includono i valori minimi e massimi dei dati di campionamento, necessari per eseguire la normalizzazione corretta. Questo aspetto sarà discusso in modo molto più approfondito in Reti neurali superficiali multilivello e addestramento sulla retropropagazione.

Come regola generale, si utilizza il termine "parametro" come in parametri di processo, parametri di addestramento, ecc., per indicare le costanti che hanno valori predefiniti assegnati dal software al momento della creazione della rete (e che possono essere sovrascritti). Si utilizza il termine "impostazioni di configurazione" come in impostazione della configurazione del processo, per indicare le costanti assegnate dal software in base all'analisi dei dati di campionamento. Queste impostazioni non hanno valori predefiniti e, in linea generale, non dovrebbero essere sovrascritte.

Per ulteriori informazioni, vedere anche Understanding Shallow Network Data Structures.