$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Dichiarazione etica
Questo studio si è basato interamente su dati ECG pubblici e anonimizzati scaricati da PhysioNet. Tutti i dataset utilizzati in questo studio sono stati originariamente raccolti con il consenso dei soggetti e con l'approvazione etica dei rispettivi titolari dei dati. Questa ricerca non ha richiesto alcuna raccolta di dati, lavoro sperimentale con soggetti umani o animali, né informazioni sull'identità personale del paziente. Pertanto, non è stata richiesta alcuna revisione etica aggiuntiva.
Metodologia
La Figura 2 illustra il flusso di lavoro dell'architettura proposta.
Raccolta dati
I dati ECG sono raccolti dal PhysioNet Database, un popolare archivio di segnali fisiologici. Dal database vengono recuperati molteplici dataset. Questi dataset vengono uniti in un unico dataset principale che include varie classi di segnali ECG.
Dataset utilizzati
Questo studio ha utilizzato diversi dataset ECG disponibili pubblicamente per sviluppare e valutare un modello di deep learning per la classificazione delle aritmie. La selezione di questi dataset è stata effettuata con attenzione, considerando la loro diversità in termini di demografia dei pazienti e la varietà di tipi di aritmie, per garantire che il modello proposto funzioni bene in diversi scenari9. Per questo studio, sono stati combinati solo i dati Lead-I del Database Aritmia MIT-BIH, del Database Supraventricolare Aritmica MIT-BIH, del Database Aritmia INCART di St. Petersburg a 12 derivazioni e del Database Holter per Morte Cardiaca Subita. Questi dataset sono noti per le registrazioni ECG annotate di alta qualità che comprendono un ampio spettro di classi di aritmie.
I dataset combinati sopra includono la demografia dei pazienti, i dispositivi di registrazione, le frequenze di campionamento e le impostazioni. La variabilità sopra menzionata nel modello ne migliora la generalizzazione esponendolo a una vasta gamma di morfologie ECG, rumore e ritmi.
Descrizione dei dataset
Database delle aritmie del MIT-BIH
Il dataset di aritmie del MIT-BIH contiene 48 registrazioni ECG di mezz'ora, numerate da 100 a 234. Ogni record contiene segnali ECG a due canali digitalizzati a 360 campioni al secondo. I dati sono memorizzati nei formati .dat, .hea e .atr.
Database delle aritmie supraventricolari del MIT-BIH
Questo è un sottoinsieme specifico dei database MIT-BIH. Il database delle aritmie supraventricolari del MIT-BIH include 78 registrazioni ECG a lunghezza intera, che vanno da 30 minuti a diverse ore, numerate da 801 a 811. Ogni record include segnali ECG a due canali, convertiti in formato digitale a 128 campioni al secondo.
Il database delle aritmie a 12 derivazioni INCART di San Pietroburgo
Questo database include 75 registrazioni annotate prese da 32 monitor Holter. Ogni registrazione dura 30 minuti e include 12 lead standard, ciascuno campionato a 257 Hz. La potenza del segnale varia tra 250 e 1100 unità di convertitore analogico-digitale per millivolt.
Database Holter per morte cardiaca imprevista
Questo dataset è uno dei tanti registri Holter ad accesso aperto che catturano le occorrenze fattuali di tachicardia ventricolare (TV) e fibrillazione ventricolare (FV). Entrambi possono portare a morte cardiaca imprevista. Ogni disco dura 24 ore ed è campionato a 250 Hz.
Preprocessing dei dati
In questo studio sono stati utilizzati quattro database pubblici ECG con diverse velocità di campionamento: MIT-BIH Aritmia (360 Hz), MIT-BIH Aritmia Supraventricolare (128 Hz), St. Petersburg INCART 12-derivazione (257 Hz) e Morte Cardiaca Subita Holter (250 Hz). Per garantire che tutti i dati fossero coerenti e potessero essere combinati durante l'addestramento del modello, tutti i segnali ECG venivano ricampionati a una frequenza comune di 360 Hz, che corrisponde al database MIT-BIH Aritmia ed è comunemente utilizzata come standard nella ricerca ECG. Il ricampionamento veniva eseguito tramite interpolazione a banda limitata; inizialmente, i segnali ECG erano filtrati passa-basso per prevenire l'aliasing, e successivamente è stato utilizzato un kernel di ricostruzione basato su SINC per l'interpolazione, seguito dal ricampionamento finale a 360 Hz. Dopo il ricampionamento, ogni segnale è stato suddiviso in finestre di 180 campioni, equivalenti approssimativamente a 0,5 s di dati, assicurando che tutti i dataset avessero la stessa risoluzione temporale. Questa standardizzazione ha permesso di combinare segnali provenienti da diversi database per addestramento e test, aiutando il modello a apprendere schemi coerenti nel tempo.
La pre-elaborazione ha coinvolto diversi passaggi importanti per garantire la qualità dei dati di input:
Segmentazione dei dati:
Dopo il ricampionamento, ogni segnale ECG è stato suddiviso in finestre di lunghezza fissa di 180 campioni. Questo corrisponde a circa 0,5 s di durata del segnale a una frequenza di campionamento di 360 Hz. Questa ricerca utilizzava una finestra scorrevole fissa e non sovrapposta per la segmentazione. Ogni finestra ha raccolto una sequenza continua di campioni ECG. Lo studio ha scelto una finestra di 180 campioni perché un intervallo di 0,5 s è sufficiente per catturare un ciclo cardiaco completo o le sue parti principali: l'onda P, il complesso QRS e l'onda T, per la frequenza cardiaca tipica degli adulti. A ciascun segmento veniva assegnata un'etichetta di classe in base all'annotazione al centro del segmento. In questo modo, l'etichetta del segmento corrispondeva alla forma principale del battito cardiaco all'interno di quella finestra. Metodo della finestra scorrevole, applicato questa funzione di segmentazione:

dove si è il campione ECG al tempo i.
Normalizzazione:
Ho normalizzato i dati ECG segmentati con scaling Min-Max per assicurarmi che tutte le caratteristiche avessero valori compresi tra 0 e1 10.

Questo passaggio aiuta ad accelerare la convergenza del modello durante l'addestramento.
Bilanciamento delle classi con SMOTE
I battiti normali (N) superavano di gran lunga le classi di battito cardiaco anomale nel dataset ECG, che mostrava un significativo squilibrio di classe. Dopo segmentazione, normalizzazione e divisione train-test, il dataset di addestramento è stato sottoposto alla Synthetic Minority Over-sampling Technique (SMOTE) per affrontare questo problema.
Uno spazio delle caratteristiche a 180 dimensioni veniva utilizzato per rappresentare ogni segmento ECG, composto da 180 campioni normalizzati. SMOTE utilizzava la distanza euclidea per determinare i k vicini più prossimi (k = 5) di ogni campione di classe minoritaria all'interno della propria classe. SMOTE veniva applicato solo ai dati di addestramento, suddivisi in set di addestramento del 70% e set di test del 30% utilizzando campionamento stratificato. In questo modo, non venivano aggiunti campioni artificiali al set di test, assicurando che i risultati del test non fossero influenzati dal processo di sovracampionamento. I dati di test rimasero invariati, mantenendo la distribuzione originale delle classi, e venivano utilizzati solo per valutare il modello in modo equo. Di conseguenza, i risultati ad alta prestazione di questo studio dimostrano la vera capacità del modello di generalizzare, non dovuta a un sovrafitting o a punteggi gonfiati derivanti dall'aggiunta di campioni aggiuntivi.
Divisione dei test del treno:
Dopo la preelaborazione e il filtraggio delle classi, il dataset è stato suddiviso in sottoinsiemi di addestramento e test con una suddivisione 70%–30% utilizzando campionamento casuale stratificato. Questa stratificazione si basa sulle etichette delle classi per garantire che le proporzioni relative di ogni classe cardiaca siano mantenute nei set di addestramento e test.
La scissione è stata eseguita utilizzando un seed casuale per la riproducibilità. Ogni segmento ECG è apparso esclusivamente sia nel set di addestramento che nel set di test. Per evitare bias e deviazioni dei dati, ogni passaggio di pre-elaborazione che potrebbe influenzare la distribuzione dei dati (in particolare, il bilanciamento delle classi tramite SMOTE) veniva eseguito solo dopo la divisione e esclusivamente sui dati di addestramento.
A tal proposito, mantenendo le proporzioni di classe, utilizzando la stratificazione casuale e separando rigorosamente i campioni in set di addestramento e test, il processo di divisione riduce la probabilità di bias nei campioni, permettendo alle metriche di performance di riflettere la generalizzazione del modello piuttosto che i residui specifici dei dati.
Suddivisione dei dataset e distribuzione delle classi
Il dataset finale è stato suddiviso in set di addestramento e di test, con il 70% per l'addestramento e il 30% per i test. Dopo l'applicazione del SMOTE, lo squilibrio di classe veniva ridotto, assicurando che ogni tipo di aritmia fosse ben rappresentato sia nel set di addestramento che in quello di test. Un totale di 3.966.620 segmenti ECG sono stati utilizzati per l'addestramento, mentre 112.575 segmenti ECG sono stati impiegati per i test. L'elevato volume di dati, combinato con la varietà di tipi di aritmie, ha permesso la creazione di un modello che identifica efficacemente diversi tipi di aritmie nei segnali ECG reali. Questo studio utilizza modelli di deep learning per classificare le aritmie ECG. I cinque tipi di battito cardiaco, ovvero Normale (N), Blocco Ramo Sinistro (L), Blocco Ramo Destro (R), Battito Prematuro Atriale (A) e Contrazione Ventricolare Precoce (V), sono stati scelti in conformità con le annotazioni standardizzate del battito fornite nel Database Aritmia MIT-BIH e con le linee guida AAMI per l'annotazione del battito ECG. Tutte e cinque le annotazioni del battito menzionate qui comprendono condizioni cardiache significative che rientrano nella categoria ampia delle aritmie e mostrano caratteristiche distintive della forma d'onda nei segnali ECG attorno alle onde P, QRS e T.
Inoltre, queste classi sono tra le più frequenti e costantemente etichettate nei database pubblici ECG, il che rende più facile testarne l'efficacia rispetto ad altri approcci di classificazione del ritmo cardiaco basati su ECG. I dataset sono stati suddivisi utilizzando un metodo cross-patient. Questa configurazione garantiva che i segmenti ECG di un singolo paziente non comparissero contemporaneamente sia nel set di addestramento che in quello di test. Una volta avvenuta quella divisione, SMOTE veniva applicato solo al set di addestramento. Il set di test rimase privo di campioni sintetici e finestre temporali ripetute. Tutto ciò aiuta a evitare sovrapposizioni a livello di segmento e supporta una vera generalizzazione quando si tratta di pazienti non visti prima.
Distribuzione delle classi prima e dopo SMOTE:
Il dataset originale presentava uno squilibrio significativo tra le classi, con un gran numero di battiti Normali (N) e meno campioni per le classi anomale. Prima dell'uso di SMOTE, i dati di addestramento avevano circa 133.320 segmenti normali (N), 8.075 blocchi di ramo a sinistra (L), 10.431 blocchi di ramo a destra (R), 4.489 battito prematuro atriale (A) e 60.682 segmenti di contrazione ventricolare prematura (V). Per colmare lo squilibrio, SMOTE è stato applicato solo al set di addestramento, aumentando il numero di campioni nelle classi minoritarie per corrispondere alla classe di maggioranza. Dopo l'augmentazione, ogni classe aveva 793.324 segmenti, per un totale di 3.966.620 segmenti ECG per l'addestramento. Il set di prova, che aveva 112.575 segmenti, mantenne la sua distribuzione originale delle classi e non fu sovracampionato. Questo approccio ha garantito una valutazione equa e imparziale delle prestazioni del modello.
Addestramento e inferenza
ha esaminato l'efficienza computazionale controllando le prestazioni di addestramento e inferenza su una GPU NVIDIA RTX 3050 con 6 GB di memoria. Il processo di addestramento durava circa 3,2 ore per 60 epoche. La latenza di inferenza era di una media di 0,45 ms per ogni segmento di 180 campioni, il che rende possibile l'uso in tempo reale. L'uso di memoria sulla GPU ha raggiunto un picco di 4,2 GB, e il modello ha solo 1,8 milioni di parametri, quindi risulta leggero rispetto alla maggior parte dei sistemi ECG basati su trasformatori.
Il processo di addestramento e inferenza prevede i seguenti passaggi:
Configurazione dell'addestramento: Parametri di addestramento, come tasso di apprendimento, dimensione del lotto ed epoche, sono definiti.
Addestramento del modello: Il modello CNN-Transformer viene addestrato sui dati di addestramento.
Validazione: Dopo l'addestramento, vengono verificate l'accuratezza e la perdita di validazione del modello. Se le prestazioni sono buone, il modello viene salvato. Se le prestazioni sono scarse, la pipeline si ripete con parametri di addestramento diversi, tornando al passaggio di impostazione dei parametri.
Architettura del modello
L'intera configurazione CNN-Transformer è composta da quattro parti principali: estrazione convoluzionale delle caratteristiche, uno strato di proiezione, l'encoder del trasformatore e infine la testa di classificazione. Il blocco convoluzionale inizia con uno strato convoluzionale unidimensionale con 32 filtri, una dimensione del nucleo di 3, un passo di 1 e un riempimento di 1, seguito da un ReLU. Riduce le cose con il max-pooling, dimensione kernel 2, per ridurre la risoluzione temporale del segnale. Dopo quel primo strato di convoluzione, ce n'è un altro con 64 filtri, stessa dimensione kernel 3, stride 1, padding 1, ReLU di nuovo e un altro max-pooling con dimensione 2. L'output di tutto ciò viene appiattito, passato attraverso uno strato di proiezione lineare che mappa le caratteristiche in uno spazio di embedding a 128 dimensioni, che poi alimenta il trasformatore18,19.
Il blocco trasformatore ha due livelli di encoder, ciascuno con autoattenzione multi-testa utilizzando 4 testine per catturare le dipendenze a lungo raggio nel segnale ECG. In ogni livello c'è una rete feedforward posizione per posizione con una dimensione nascosta di 256 e un dropout a 0,5 per aiutare con l'overfitting. La normalizzazione dei strati avviene dopo ogni sottostrato, stabilizzando l'addestramento.
Per la testa di classificazione, è uno strato completamente connesso che scende da 128 a 64, seguito da ReLU e dropout di nuovo 0,5. Poi lo strato di output ha cinque neuroni per le classi di aritmie, con Softmax per ottenere le probabilità.
Blocchi di Reti Neurali Convoluzionali 1D (CNN):
Il blocco CNN è composto da due strati convoluzionali 1D, ciascuno seguito da un'attivazione ReLU e uno strato di max pooling. Questi strati aiutano a identificare le relazioni spaziali all'interno del segnale ECG di ingresso. Per migliorare l'estrazione delle caratteristiche, vengono applicate ulteriori funzioni di attivazione ReLU dopo ogni fase di trasformazione nei livelli CNN.
Primo strato convoluzionale: Questo strato utilizza 32 filtri, ciascuno di dimensione 3, sul segnale di ingresso. Il processo può essere scritto come:

dove yi è l'uscita, wj rappresenta i pesi del filtro, xi+j è il segmento di ingresso, b è il termine di bias e σ rappresenta la funzione di attivazione (ReLU). La mappa di caratteristiche risultante attraversa uno strato di attivazione ReLU per aggiungere non linearità:

Layer di pooling: Dopo ogni operazione convoluzionale, viene applicato un passo di max-pooling per dimezzare le dimensioni spaziali. Questo processo è definito come:

Questo aiuta a mantenere le caratteristiche più significative riducendo al contempo il carico di calcolo.
Secondo strato convoluzionale: Questo livello utilizza 64 filtri di dimensione 3 x 3 per elaborare le feature map del livello precedente, permettendo al modello di rilevare pattern più complessi. Dopo la convoluzione, viene applicata una funzione di attivazione ReLU per introdurre la non linearità nel modello.

Questo passaggio garantisce che il modello catturi i pattern dettagliati del segnale ECG.
Livelli aggiuntivi di attivazione: l'attivazione di ReLU viene applicata dopo ogni fase successiva al processo di convoluzione per aiutare la rete a catturare meglio pattern complessi, assicurando che il modello si concentri su attivazioni positive.
Processo di appiattimento: Dopo la seconda operazione di max-pooling, le feature map vengono appiattite in un unico vettore per l'ingresso al blocco del trasformatore.
Blocchi per trasformatori:
Il blocco trasformatore è composto da due strati di autoattenzione multi-testa, che aiutano il modello a comprendere le relazioni tra le diverse parti del segnale ECG nel tempo. L'Auto-Attenzione Multi-Teste funziona osservando ogni coppia di elementi in una sequenza. Per una sequenza con query Q, chiave K e valore V, l'attenzione si calcola come:

Qui, dk è la dimensionalità dei vettori chiave, garantendo l'invarianza di scala.
Livelli feedforward: Ogni output di auto-attenzione passa attraverso una rete feedforward completamente connessa con attivazione ReLU, seguita dalla normalizzazione dei livelli. Questo passaggio affina le caratteristiche temporali estratte:

dove W1 e b1 sono i pesi e i bias dello strato feedforward.
Rappresentazione batch-first: Il trasformatore opera su sequenze in un layout batch-first, garantendo compatibilità con il formato di input del blocco CNN.
Strati completamente connessi (densi):
Dopo l'elaborazione attraverso il blocco del trasformatore, la sequenza di uscita viene appiattita e poi inviata attraverso due strati completamente collegati per effettuare la classificazione. Il primo strato completamente connesso trasforma il vettore di input in uno spazio di caratteristiche a 128 dimensioni, rimodellandolo nel processo.

dove W è la matrice di peso, x è il vettore di input e b è il vettore di bias. Viene applicato uno strato di attivazione ReLU:

Segue uno strato di dropout con una velocità di 0,5 per evitare il sovrafitting.
Secondo strato completamente connesso: L'ultimo strato mappa le caratteristiche a 128 dimensioni al numero di classi di battito cardiaco (ad esempio, 5 classi per il rilevamento delle aritmie). L'output passa attraverso una funzione log-SoftMax per calcolare le probabilità logaritariche: exp(xi)
Modello ibrido CNN-Trasformatore
Il modello presentato è un modello ibrido di deep learning che combina i punti di forza delle CNN e dei transformer per utilizzare sia rappresentazioni spaziali che temporali. Tale architettura è particolarmente adattata per elaborare dati complessi e di lunga sequenza come segnali fisiologici.

L'equazione rappresenta la rappresentazione in ingresso, dove N = numero di campioni, T = numero di passi temporali, d = dimensione delle caratteristiche per passo temporale.

Questa equazione indica le immersioni posizionali, dove pos = posizione in sequenza; i = indice di dimensione di incorporamento.
Modulo CNN – Estrazione delle caratteristiche locali
Le CNN apprendono in modo efficiente dipendenze locali e schemi morfologici come picchi, pendenze o picchi nei dati sequenziali. Lo strato convoluzionale utilizza
nuclei di estensione
spaziale su un tensore
di ingresso . Ogni canale di uscita m è determinato da:

= numero di canali di ingresso; K = dimensione del nucleo; W = pesi del filtro; b = bias
Funzione ReLU
In questo caso,
rappresenta il peso apprendibile e
è il bias per il canale mA, si applica un'attivazione non lineare, come la Rettifica Linear Unit (ReLU):

Pooling e compressione delle funzionalità
Gli strati di pooling riducono la dimensione spaziale o temporale delle mappe di caratteristiche, preservando elementi importanti e riducendo il calcolo. Nel max pooling con dimensione
della finestra e passo s, la caratteristica aggregata in posizione
è:

Lunghezza di uscita dopo il pooling

Dove
è la lunghezza in ingresso; il passo definisce una dimensione di passo per lo scorrere la finestra di pooling. Questa formula calcola la lunghezza di uscita di una feature map dopo un'operazione di pooling (ad esempio, max pooling). Calcola quanto la feature map viene ridotta in base alla lunghezza di input, alla dimensione del pool e alla stride. Trasforma mappe di caratteristiche multidimensionali in un vettore per strati completamente connessi.
Codificatore a trasformatore – cattura di dipendenze a lungo raggio
I Transformer usano l'autoattenzione per apprendere le dipendenze temporali a lungo raggio nelle sequenze17.
Attenzione scalata a prodotto scalare

Q, K, V sono matrici di query, key e value calcolate tramite proiezioni apprese;
è la dimensione chiave utilizzata per scalare il prodotto scalare.
Attenzione multi-testa

Ogni testa calcola l'attenzione in modo indipendente; gli output sono concatenati e trasformati linearmente.
sono matrici di proiezione apprese per ciascuna testa.
è il peso finale di proiezione dopo laconcatenazione 18,19.
Pronostico finale e sconfitta
Strati completamente connessi mappano le caratteristiche ai logiti, che vengono poi trasformati in previsioni tramite funzioni di attivazione. Dopo alcuni strati convoluzionali e di pooling,
viene appiattito in un vettore
Un strato completamente connesso calcola i logiti: Un livello completamente connesso poi calcola i logit di classe:

Attivazione Sigmoid/Softmax:

La funzione di attivazione mappa l'output grezzo del modello 'z' alle probabilità. Sigmoid viene applicato alla classificazione binaria, e Softmax ai problemi multiclasse per la distribuzione della probabilità tra le classi. z è l'uscita lineare (ad esempio, ultimo strato: z = Wx + b). L'output ŷ è compreso tra (0, 1), il che indica probabilità20.
Processo di formazione
L'addestramento veniva svolto su un sistema con le seguenti specifiche hardware:
Processore: AMD Ryzen 7 7840HS
RAM CPU: 16 GB
RAM GPU: 6 GB NVIDIA GeForce RTX 3050
I modelli sono stati addestrati utilizzando l'ottimizzatore Adam, che adatta la velocità di apprendimento durante l'addestramento in base al primo e secondo momento del gradiente. La regola di aggiornamento per Adam è data da:

In questa configurazione, mt e vt rappresentano le stime del primo e secondo momento, α è il tasso di apprendimento e ε è una piccola costante usata per evitare la divisione per zero. I modelli furono addestrati per 60 epoche, con arresti anticipati per evitare sovraattacchi. Veniva utilizzato un lotto di 1024 unità e i dati di addestramento venivano caricati nei modelli usando il DataLoader di PyTorch. Dropout e normalizzazione batch sono state incorporate per regolarizzare il modello e accelerare la convergenza. Il dropout è un metodo di regolarizzazione che disattiva casualmente una percentuale p dei neuroni durante l'allenamento, aiutando a ridurre l'overfitting. Matematicamente, sia zi l'attivazione deli-esimo neurone. Durante la fase di addestramento, l'attivazione modificata z' viene calcolata come:

dove p è il tasso di abbandono (ad esempio, p = 0,5 per un abbandono del 50%). Durante l'inferenza non viene applicato alcun dropout e viene utilizzata l'intera rete.
La convergenza nelle reti neurali è un problema che impatta significativamente i sistemi di classificazione esistenti nel settore sanitario, specialmente quando le diagnosi sono incoerenti a causa di una convergenza insufficiente. Ricerche recenti su approcci di ottimizzazione a tempo predefinito e sulla convergenza a tempo fisso hanno dimostrato che è ancora possibile addestrare modelli che convergono entro un numero fisso di iterazioni per tutti gli stati iniziali. I modelli futuri basati su questo possono includere l'ottimizzazione a tempo predefinito.
Normalizzazione batch:
La normalizzazione batch stabilizza e accelera l'addestramento normalizzando gli input a ciascun livello. Dato un mini-lotto di attivazioni x = {x 1, x2, . . ., xN}, l'output normalizzato a batch xi .si calcola come:


doveμ B e σB2 sono la media e la varianza del lotto, ε è una piccola costante per la stabilità numerica, e γ e β sono parametri apprendibili che scalano e spostano i valori normalizzati. La normalizzazione a batch aiuta a ridurre lo spostamento interno delle covarie e consente l'uso di tassi di apprendimento più elevati. Queste tecniche, combinate con l'ottimizzatore Adam, garantiscono un addestramento robusto mitigando l'overfitting e migliorando la velocità diconvergenza 21,22.
La Figura 3 mostra la Perdita di Validazione e la Precisione della Convalida in Epoche durante l'addestramento di un modello di machine learning. L'accuratezza della validazione (linea blu, asse Y destro) inizia relativamente bassa (circa 97,5%) e aumenta rapidamente nelle prime 10 epoche. Continua a migliorare e raggiunge livelli intorno al 99,7% - 99,8% dopo circa 20 epoche. Ciò indica che il modello sta apprendendo e applicando bene le conoscenze sul set di validazione. La perdita di validazione (linea rossa, asse Y sinistro) inizia alta, poi scende bruscamente fino a quasi zero nelle prime epoche (circa 2-3). Dopo di ciò, rimane quasi a zero per il restodell'allenamento 23,24.