La rete neurale che presta attenzione

Ho trovato alcuni articoli molto interessanti su questo argomento. Riporto solo quello che mi è sembrato semplice da comprendere. Purtroppo la maggior parte degli articoli che si trovano sul web sono di autori incapaci a spiegare.
La facoltà dell’attenzione umana è un’abilità cruciale nella comprensione del linguaggio naturale.
Ogni volta che leggiamo o ascoltiamo un testo, la nostra mente seleziona le parole chiave e le relazioni semantiche per ottenere una comprensione del significato complessivo.

Ma come può essere emulata questa capacità di selezione attenta del linguaggio naturale da parte dei computer? L’architettura del Transformer, una delle più recenti e avanzate tecniche di elaborazione del linguaggio naturale, offre una risposta convincente.
Il Transformer utilizza un meccanismo di attenzione sofisticato per selezionare attentamente i token in un testo.
Il Transformer è un modello di** rete neurale** che utilizza la meccanica dell’attenzione , in cui il modello assegna un peso alle diverse parti dell’input in base alla loro rilevanza per la comprensione del testo.
L’idea geniale è stata quella di introdurre un meccanismo che permette di focalizzare l’attenzione su particolari elementi della sequenza e di stabilire i riferimenti tra essi.**.
Proprio come durante l’ascolto o la lettura di una frase il cervello umano si focalizza su alcune parole di maggiore importanza e stabilisce i riferimenti tra pronomi, sostantivi e altre entità, una rete neurale costruita sulla base di un modello transformer è in grado di individuare le parole importanti della sequenza di input e stabilire i loro riferimenti con una migliore comprensione del testo.
Consideriamo due frasi simili prese da un link di approfondimento citato a fine paragrafo:

“l’animale non attraversò la strada perché era troppo stanca”
“l’animale non attraversò la strada perché era troppo larga”

Non è semplice (per un sistema software) stabilire che nella prima frase “troppo stanca” si riferisce all’animale, mentre nella seconda frase, “troppo larga” si riferisce alla strada.
Un modello equipaggiato con le funzionalità di un Transformer è in grado di dare il peso corretto alle parole nelle due frasi ed è in grado di distinguere a chi sono riferite le parole “troppo larga” o “troppo stanca” nella frase.

Attenzione a più teste

I trasformatori funzionano fondamentalmente così. Ci sono alcuni altri dettagli che li fanno funzionare meglio. Per esempio, invece di prestare attenzione all’altro in una sola dimensione, i trasformatori utilizzano il concetto di attenzione multitesta.

L’idea alla base è che ogni volta che si traduce una parola, si può prestare un’attenzione diversa a ciascuna parola in base al tipo di domanda che si sta ponendo. Le immagini seguenti mostrano cosa significa. Ad esempio, quando si traduce “kicked” nella frase “I kicked the ball”, si può chiedere “Who kicked”. A seconda della risposta, la traduzione della parola in un’altra lingua può cambiare. Oppure si possono fare altre domande, come “Ha fatto cosa?”, ecc.[mia nota: ecco questo è chiarissimo secondo me]

5 Mi Piace

Davvero interessante!!! Mi piacerebbe davvero tanto poter approfondire questi argomenti studiando le varie routines di apprendimento, insieme ai vari schemi di reti neurali, altro che lavori su importi, aliquote e budget (eh eh eh… Sono sicuro che qualcuno capirà)…
PS
Per gli altri che dovessero leggere questo mio post, proprio in questi mesi sono alle prese con il mio primo lavoro con InDe Cloud: un programma sul budget!!!

Se vuoi divertirti a creare un tuo piccolo GPT ( Chat GPT, o Chat Generative Pretrained Transformer) ecco poche righe di codice Python che utilizzano i Trasformers:

Grazie!!! Me lo studierò molto volentieri!!!
Grazie ancora!!!

ma tu hai mai integrato Python a Inde in modalità dinamica, tipo servizio o altro?

il sistema più semplice che ho trovato è con google app engine, è a pagamento m con costi molto contenuti, se ho capito bene fino a un certo limite è gratuito, ma non sono sicuro.
Mi sembra di aver collegato inde con un servizio REST che usa google app engine.
Mi ripasso la cosa e poi ti aggiorno. Ciao.

1 Mi Piace

Ecco mi sono ripassato l’argomento. Io ho fatto così, mi sono scritto un servizio REST con visual studio ( tu puoi farne a meno) perché non riesco a far funzionare idmap.setValue(“ID_HEADERS”, “authorization:” + sbearer)
Però non ho chiesto assistenza a Progamma!

Poi in google app engine (GAE) ho scritto il codice che segue(che non richiede autorizzazioni) semplice ma completo.
(Eseguilo con Postman o semplicemente nel browser https://py-project-1947.nw.r.appspot.com/incomes)

from flask import Flask, request, jsonify
app = Flask(name)

#Make the WSGI interface available at the top level so wfastcgi can get it.
wsgi_app = app.wsgi_app

incomes = [
{ ‘description’: ‘salary’, ‘amount’: 5000 }
]

@app.route(‘/’)
def hello():
“”“Renders a sample page.”“”
return “Hello World!”

#URL: /hello/?message=Have%20a%20nice%20day
#http://localhost:51890//Ciao/Gisele?message=Have%20a%20nice%20day
#Hello Gisele! Have a nice day.
@app.route(‘/Ciao/’)
def Ciao(name):
msg = request.args.get(‘message’,‘’)
return "Hello " + name + "! "+ msg + “.”

#GET
@app.route(‘/incomes’)
def get_incomes():
return jsonify(incomes)

#POST
@app.route(‘/incomes’, methods=[‘POST’])
def add_income():
incomes.append(request.get_json())
return ‘’, 204

if name == ‘main’:
import os
HOST = os.environ.get(‘SERVER_HOST’, ‘localhost’)
try:
PORT = int(os.environ.get(‘SERVER_PORT’, ‘5555’))
except ValueError:
PORT = 5555
app.run(HOST, PORT)

Ciao
Giovanni Poidomani

1 Mi Piace