Algoritmo competitivo di apprendimento ( reti neurali )
Un algoritmo competitivo di apprendimento è un algoritmo in grado di selezionare il nodo di uscita migliore in una rete neurale. È applicato nelle reti neurali artificiali più complesse, quelle con architettura flessibile ( non rigida ) in cui i nodi sono interconnessi in avanti, indietro e, in particolar modo, nello stesso livello. Nell'ultimo strato di uscita i nodi sono interconnessi e soltanto il nodo con la funzione di attivazione più alta viene prescelto. I neuroni di uscita sono in competizione diretta. In questo modo l'algoritmo ottiene sempre il valore più alto possibile dal cammino analizzato.
Ad esempio, l'algoritmo giunge al nodo n3 e può selezionare in uscita il nodo n5 o il nodo n6. Essendo l'ultimo livello ( strato ) l'algoritmo confronta le funzioni di attivazioni dei due nodi scoprendo che Y1>Y2 e, pertanto, attiva il nodo n6 tramite la sinapsi in avanti a13. Allo stesso modo, un nodo potrebbe giungere al nodo di uscita n5 ma, per la stessa ragione, decide di attivare il nodo di uscita n6 tramite la sinapsi verticale a15 per ottenere un uscita pari a Y2.
Propagazione in avanti e selezione finale. L'algoritmo competitivo di apprendimento è generalmente applicato soprattutto nelle reti neurali a propagazione in avanti. In qualsiasi caso la tecnica è applicata soltanto sullo strato finale di uscita ( ultimo livello ). La tecnica di attivazione del nodo migliore nello stesso livello potrebbe anche essere applicata negli stati intermedi ma, in quest'ultimo caso, nelle reti più grandi si rischia di limitare l'esplorazione soltanto su alcuni percorsi. Alcuni nodi intermedi, apparentemente inferiori, potrebbero consentire un percorso con un risultato maggiore più alto.
Ad esempio, nella rete neurale precedente l'algoritmo seleziona il percorso migliore a partire dall'entrata B che conduce all'uscita Z. Tuttavia, il risultato Z non è il migliore possibile. L'algoritmo otterrebbe un risultato superiore uscendo in X che può essere raggiunto tramite un percorso intermedio secondario, ossia con nodi di valore inferiore. Questa miopia dell'algoritmo potrebbe essere risolta interconnettendo tutti i nodi di ogni livello ma questo causerebbe una crescita esponenziale di complessità della rete. In alternativa, si potrebbe connettere tutti i nodi soltanto nel livello di uscita ma, in questo caso, si renderebbe del tutto inutile l'interconnessione parziale dei nodi nei livelli precedenti. Un'ultima possibilità per risolvere il problema è adottare, se possibile, un algoritmo di ricerca all'indietro a partire dal migliore risultato possibile (Z).