Feedback negativo
Oggi volevo scrivere un pezzo mediamente impegnativo: niente Fromm quindi, che mi richiederebbe un significativo sforzo di sintesi, ma neppure il mio commento su dei libri di fantasia che lessi trent’anni fa e che ho riletto recentemente…
Torno invece su Konrad Lorenz e al suo libriccino piccolo, “Gli otto peccati capitali della nostra società”, ma grande di spunti.
Nel primo capitolo (mi pare) accenna appena a un meccanismo biologico (e non solo) che ha subito catturato la mia curiosità tanto che poi ho approfondito l’argomento investigandolo con chatGPT.
Prima però un vecchio aneddoto di, più o meno, dieci anni fa.
Ero andato a dare una lezione di programmazione a un mio amico esperto di elettronica e interessato a usare Arduino (una specie di scheda elettronica programmabile).
Mentre parlavamo mi accennò a una nostra comune conoscenza che, non ricordo i dettagli, voleva usare la sua scheda Arduino come se fosse un termostato per tenere costante la temperatura dell’acqua. Il suo problema era che la temperatura diveniva instabile: o un po’ più calda del voluto oppure un po’ più fredda; insomma la temperatura oscillava intorno al valore voluto senza riuscire a mantenerlo stabile.
All’epoca considerai il problema interessante ma stavo spiegando altro e così lo mi da una parte nella mia mente e, ovviamente, me ne dimenticai. Fino a qualche giorno fa quando la lettura di Lorenz me lo ha ricordato.
Lorenz spiega che i sistemi biologici hanno dei meccanismi naturali chiamati feedback negativo e feedback positivo che permettono “l’autoregolazione di un sistema” come, per esempio, il numero di individui in un branco di bufali.
Il feedback negativo è il meccanismo sia in natura più comune ma anche più interessante: per questo accennerò prima al più raro feedback positivo.
Il feedback positivo è infatti un meccanismo orientato a raggiungere un punto di rottura, uno specifico obiettivo cioè. Un esempio è la regolazione dell’ormone ossitocina durante il parto: l’ossitocina infatti stimola le contrazioni e queste, a loro volta, stimolano la produzione di ossitocina che le rende progressivamente più forti. Il meccanismo si interrompe solo alla conclusione del parto.
Il feedback negativo invece ha l’obbiettivo di mantenere una “variabile” costante. Capite subito il mio interesse nella possibilità di emulare il meccanismo biologico per applicarlo alla risoluzione del problema del termostato che avevo “scordato ma non dimenticato”!
Chiaramente l’idea è che quando il valore della nostra variabile si allontana da quello voluto si deve intervenire su di essa in qualche maniera proporzionalmente alla distanza dall’obiettivo.
Ma applicare una modifica alla nostra variabile semplicemente in questa maniera non è in genere sufficiente a portarla al valore stabilito e a mantenervela stabilmente. Se ho ben capito ci possono essere due problemi: 1. se l’intervento è troppo forte allora la variabile inizia a oscillare sopra e sotto il valore voluto (vedi il caso dell’aneddoto); 2. se l’intervento è troppo piccolo invece ci si avvicina troppo lentamente al valore voluto (magari senza mai raggiungerlo effettivamente).
Intuitivamente i motivi di queste difficoltà possono essere molteplici: ci possono essere vari elementi che contribuiscono al valore della variabile che entrano in gioco in momenti diversi e con contributi variabili. In altre parole vi è sì proporzionalità fra l’intensità dell’intervento e la distanza fra valore attuale e valore voluto ma questa può cambiare nel tempo.
La soluzione a questo problema è quella di aggiungere una sorta di correzione al nostro intervento basato unicamente sulla differenza fra il valore della variabile e quello prefissato. La correzione si basa sul tenere presente, ricordarsi cioè, l’evoluzione passata della variabile: più precisamente si deve tenere traccia dell’evoluzione dell’errore (distanza fra valore attuale e voluto) nel tempo. Anche questo modificato con un coefficiente di proporzionalità: questo significa che più il sistema si stabilizza e più questa correzione diviene piccola.
Matematicamente nella formula compare un integrale: dal punto di vista pratico di programmatore (che interessa a me) si tratta di mantenere una semplice sommatoria.
È poi possibile inserire un terzo fattore di correzione, basato sulla derivata dell’andamento dell’errore, in maniera da tenerne presente la tendenza nell’immediato futuro.
Suppongo che in alcune situazioni, magari quando la variabile può avere sbalzi improvvisi che vanno compensati rapidamente, possa essere utile.
Certo è buffo pensare che i sistemi biologici hanno dei meccanismi automatici capaci di calcolare l’equivalente di una differenza e, soprattutto, di un integrale!
In realtà si tende a dire che con la matematica si può simulare la natura ma, evidentemente, anche la natura è capace di simulare la matematica: la relazione va nei due sensi.
In realtà arrivai a questa conclusione già un 14 anni fa divertendomi con la serie di Fibonacci… vabbè, lasciamo perdere…
Torno invece su Konrad Lorenz e al suo libriccino piccolo, “Gli otto peccati capitali della nostra società”, ma grande di spunti.
Nel primo capitolo (mi pare) accenna appena a un meccanismo biologico (e non solo) che ha subito catturato la mia curiosità tanto che poi ho approfondito l’argomento investigandolo con chatGPT.
Prima però un vecchio aneddoto di, più o meno, dieci anni fa.
Ero andato a dare una lezione di programmazione a un mio amico esperto di elettronica e interessato a usare Arduino (una specie di scheda elettronica programmabile).
Mentre parlavamo mi accennò a una nostra comune conoscenza che, non ricordo i dettagli, voleva usare la sua scheda Arduino come se fosse un termostato per tenere costante la temperatura dell’acqua. Il suo problema era che la temperatura diveniva instabile: o un po’ più calda del voluto oppure un po’ più fredda; insomma la temperatura oscillava intorno al valore voluto senza riuscire a mantenerlo stabile.
All’epoca considerai il problema interessante ma stavo spiegando altro e così lo mi da una parte nella mia mente e, ovviamente, me ne dimenticai. Fino a qualche giorno fa quando la lettura di Lorenz me lo ha ricordato.
Lorenz spiega che i sistemi biologici hanno dei meccanismi naturali chiamati feedback negativo e feedback positivo che permettono “l’autoregolazione di un sistema” come, per esempio, il numero di individui in un branco di bufali.
Il feedback negativo è il meccanismo sia in natura più comune ma anche più interessante: per questo accennerò prima al più raro feedback positivo.
Il feedback positivo è infatti un meccanismo orientato a raggiungere un punto di rottura, uno specifico obiettivo cioè. Un esempio è la regolazione dell’ormone ossitocina durante il parto: l’ossitocina infatti stimola le contrazioni e queste, a loro volta, stimolano la produzione di ossitocina che le rende progressivamente più forti. Il meccanismo si interrompe solo alla conclusione del parto.
Il feedback negativo invece ha l’obbiettivo di mantenere una “variabile” costante. Capite subito il mio interesse nella possibilità di emulare il meccanismo biologico per applicarlo alla risoluzione del problema del termostato che avevo “scordato ma non dimenticato”!
Chiaramente l’idea è che quando il valore della nostra variabile si allontana da quello voluto si deve intervenire su di essa in qualche maniera proporzionalmente alla distanza dall’obiettivo.
Ma applicare una modifica alla nostra variabile semplicemente in questa maniera non è in genere sufficiente a portarla al valore stabilito e a mantenervela stabilmente. Se ho ben capito ci possono essere due problemi: 1. se l’intervento è troppo forte allora la variabile inizia a oscillare sopra e sotto il valore voluto (vedi il caso dell’aneddoto); 2. se l’intervento è troppo piccolo invece ci si avvicina troppo lentamente al valore voluto (magari senza mai raggiungerlo effettivamente).
Intuitivamente i motivi di queste difficoltà possono essere molteplici: ci possono essere vari elementi che contribuiscono al valore della variabile che entrano in gioco in momenti diversi e con contributi variabili. In altre parole vi è sì proporzionalità fra l’intensità dell’intervento e la distanza fra valore attuale e valore voluto ma questa può cambiare nel tempo.
La soluzione a questo problema è quella di aggiungere una sorta di correzione al nostro intervento basato unicamente sulla differenza fra il valore della variabile e quello prefissato. La correzione si basa sul tenere presente, ricordarsi cioè, l’evoluzione passata della variabile: più precisamente si deve tenere traccia dell’evoluzione dell’errore (distanza fra valore attuale e voluto) nel tempo. Anche questo modificato con un coefficiente di proporzionalità: questo significa che più il sistema si stabilizza e più questa correzione diviene piccola.
Matematicamente nella formula compare un integrale: dal punto di vista pratico di programmatore (che interessa a me) si tratta di mantenere una semplice sommatoria.
È poi possibile inserire un terzo fattore di correzione, basato sulla derivata dell’andamento dell’errore, in maniera da tenerne presente la tendenza nell’immediato futuro.
Suppongo che in alcune situazioni, magari quando la variabile può avere sbalzi improvvisi che vanno compensati rapidamente, possa essere utile.
Certo è buffo pensare che i sistemi biologici hanno dei meccanismi automatici capaci di calcolare l’equivalente di una differenza e, soprattutto, di un integrale!
In realtà si tende a dire che con la matematica si può simulare la natura ma, evidentemente, anche la natura è capace di simulare la matematica: la relazione va nei due sensi.
In realtà arrivai a questa conclusione già un 14 anni fa divertendomi con la serie di Fibonacci… vabbè, lasciamo perdere…
Commenti
Posta un commento