paint-brush
Un nuovo modo per estrarre funzionalità per raccomandazioni AI più intelligentidi@yaml
Nuova storia

Un nuovo modo per estrarre funzionalità per raccomandazioni AI più intelligenti

di YAML4m2025/02/16
Read on Terminal Reader

Troppo lungo; Leggere

L'architettura di Ducho è composta da tre moduli chiave, Dataset, Extractor e Runner, progettati per un'estrazione efficiente di feature multimodali. Supporta TensorFlow, PyTorch e Transformers, consentendo un'elaborazione flessibile dei dataset, la selezione del modello e la configurazione basata su YAML per un'integrazione senza soluzione di continuità nei sistemi di raccomandazione.
featured image - Un nuovo modo per estrarre funzionalità per raccomandazioni AI più intelligenti
YAML HackerNoon profile picture
0-item

Autori:

(1) Daniele Malitesta, Politecnico di Bari, Italia e [email protected] con autori corrispondenti: Daniele Malitesta ([email protected]) e Giuseppe Gassi ([email protected]);

(2) Giuseppe Gassi, Politecnico di Bari, Italia e [email protected] con autori corrispondenti: Daniele Malitesta ([email protected]) e Giuseppe Gassi ([email protected]);

(3) Claudio Pomo, Politecnico di Bari, Italia e [email protected];

(4) Tommaso Di Noia, Politecnico di Bari, Italia e [email protected].

Abstract e 1 Introduzione e Motivazione

2 Architettura e 2.1 Dataset

2.2 Estrattore

2.3 Corridore

3 Conduttura di estrazione

4 Ducho come applicazione Docker

5 Dimostrazioni e 5.1 Demo 1: caratteristiche degli elementi visivi + testuali

5.2 Demo 2: funzionalità degli elementi audio + testuali

5.3 Demo 3: elementi testuali/caratteristiche delle interazioni 6

Conclusione e lavori futuri, ringraziamenti e riferimenti

2 ARCHITETTURA

L'architettura di Ducho è costruita su tre moduli principali, vale a dire Dataset, Extractor e Runner, dove i primi due moduli forniscono implementazioni diverse a seconda della modalità specifica (ad esempio, audio, visuale, testuale) presa in considerazione. Ricordiamo anche quello di Configuration tra gli altri componenti ausiliari. L'architettura è progettata per essere altamente modulare, integrando eventualmente nuovi moduli o personalizzando quelli esistenti. Di seguito, ci immergiamo in profondità in ogni modulo/componente delineato.

2.1 Insieme di dati

Il modulo Dataset gestisce il caricamento e l'elaborazione dei dati di input forniti dall'utente. Partendo da uno schema generale condiviso per tutte le modalità disponibili, questo modulo fornisce tre implementazioni separate: Audio, Visual e Textual Dataset. Come approccio comune nella letteratura, Audio e Visual Dataset richiedono il percorso alla cartella da cui vengono caricati i file immagine/audio, mentre Textual Dataset funziona tramite un file tsv che mappa tutte le caratteristiche testuali agli input.


Degno di nota, e diversamente da altre soluzioni esistenti, Ducho può gestire ciascuna modalità in due modi, a seconda che la modalità specifica descriva gli elementi (ad esempio, descrizioni di prodotto) o le interazioni tra utenti ed elementi (ad esempio, recensioni [1]). Concretamente, mentre gli elementi sono mappati sui loro ID univoci (estratti dal nome file o dal file tsv), le interazioni sono mappate sulla coppia utente-elemento (estratta dal file tsv) a cui fanno riferimento. Sebbene le fasi di pre-elaborazione ed estrazione non cambino a livello di elementi e interazioni (vedere più avanti), crediamo che questo schema possa adattarsi perfettamente ai nuovi sistemi di raccomandazione consapevoli multimodali con modalità che descrivono ogni tipo di sorgente di input (anche gli utenti ).


Un altro compito importante per il modulo Dataset è gestire la fase di pre-elaborazione dell'input dei dati. A seconda della modalità specifica coinvolta, Ducho offre la possibilità di:


• audio: carica l'audio in ingresso estraendo la forma d'onda e la frequenza di campionamento e ricampionalo in base alla frequenza di campionamento su cui è stato addestrato il modello pre-addestrato;


• visivo: converte le immagini di input in RGB e le ridimensiona/normalizza per allinearle al modello di estrazione pre-addestrato;


• testuale: (facoltativamente) pulisci i testi di input per rimuovere o modificare modelli testuali rumorosi come punteggiatura e cifre


Dopo la fase di estrazione (vedere più avanti), il modulo Dataset si occupa infine di salvare le feature multimodali generate nel formato array numpy , seguendo lo schema di denominazione dei file della mappatura precedente.


2.2 Estrattore

Il modulo Extractor crea un modello di estrazione da una rete pre-addestrata e lavora su ogni campione di input caricato/pre-elaborato per estrarne le caratteristiche multimodali. In modo simile al modulo Dataset, Extractor fornisce tre diverse implementazioni per ogni modalità, vale a dire gli estrattori audio, visivi e testuali. Ducho espone un'ampia gamma di modelli pre-addestrati da tre backend principali: TensorFlow, PyTorch e Transformers. Sono attualmente disponibili le seguenti combinazioni modalità/backend:


audio: PyTorch (Torchaudio) e Transformers;


visivo: Tensorflow e PyTorch (Torchvision);


• testuale: Transformers (e SentenceTransformers).


Per eseguire l'estrazione delle feature, Ducho prende come input (l'elenco dei) layer di estrazione per qualsiasi modello pre-addestrato. Poiché ogni backend gestisce l'estrazione dei layer nascosti all'interno di una rete in modo diverso, seguiamo le linee guida fornite nella documentazione ufficiale, supponendo che l'utente seguirà lo stesso schema di denominazione/indicizzazione dei layer e conoscerà in anticipo la struttura del modello pre-addestrato selezionato. Il lettore interessato può fare riferimento al README[2] nella cartella config/ su GitHub per una spiegazione esaustiva su come impostare il layer di estrazione in ogni impostazione di modalità/backend.


Infine, nel caso testuale, l'utente può anche specificare l'attività specifica su cui deve essere addestrato il modello pre-addestrato (ad esempio, analisi del sentiment), poiché ogni rete pre-addestrata può avere versioni diverse a seconda della strategia di addestramento.


2.3 Corridore

Il modulo Runner è l'orchestratore di Ducho, il cui scopo è di istanziare, chiamare e gestire tutti i moduli descritti. Con i suoi metodi API, questo modulo può innescare la pipeline di estrazione completa (vedi più avanti) di una singola modalità o di tutte le modalità coinvolte simultaneamente


Il modulo Runner è opportunamente personalizzato tramite un componente di configurazione ausiliario che memorizza ed espone tutti i parametri per configurare la pipeline di estrazione. Anche se una configurazione predefinita è già disponibile per il bene dell'utente, Ducho consente di sovrascrivere alcuni (o tutti) i suoi parametri tramite un file di configurazione esterno (in formato YAML) e/o coppie chiave-valore come argomenti di input se si eseguono gli script dalla riga di comando. Ancora una volta, suggeriamo ai lettori di fare riferimento al README nella cartella config/ su GitHub per comprendere lo schema generale del file di configurazione YAML.



Questo articolo è disponibile su arxiv con licenza CC BY 4.0 DEED.