Models d'IA i Automatització
Introducció
La intel·ligència artificial no és un sol algorisme ni una única tècnica: és una família d'enfocaments que comparteixen l'objectiu de fer que les màquines resolguin problemes que tradicionalment requerien intel·ligència humana. Entendre la taxonomia dels models d'IA és fonamental per triar la solució adequada per a cada problema. En aquest bloc estudiem com classificar els models, quins mecanismes d'automatització existeixen, com gestionar la incertesa i per què els sistemes basats en regles continuen sent rellevants el 2025.
2.1 Taxonomia dels models d'IA
Aprenentatge supervisat
L'algoritme aprèn a partir d'un conjunt de dades etiquetades: per a cada entrada X, existeix una sortida Y coneguda. L'objectiu és aprendre la funció f(X) → Y que generalitzi bé a dades noves.
Problemes de regressió — la sortida és un valor continu: - Predicció del preu d'un habitatge - Previsió de demanda elèctrica - Estimació del temps d'entrega d'una comanda
Problemes de classificació — la sortida és una categoria discreta: - Detecció de spam (spam / no spam) - Diagnòstic mèdic (malalt / sa / tipus de malaltia) - Reconeixement facial
# Exemple: classificació amb scikit-learn
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
model = RandomForestClassifier(n_estimators=100)
model.fit(X_train, y_train)
print(f"Accuracy: {model.score(X_test, y_test):.2%}")
Aprenentatge no supervisat
No hi ha etiquetes. L'algoritme descobreix estructura oculta en les dades per si sol.
Clustering — agrupa exemples similars: - K-Means: particions esferiqes, cal especificar K - DBSCAN: detecta clústers de forma arbitrària i valors atípics - Hierarchical clustering: dendrograma, no cal especificar K a priori
Reducció de dimensionalitat — comprimeix la representació: - PCA (Principal Component Analysis): projecció lineal que maximitza la variança - t-SNE / UMAP: visualització no lineal de dades d'alta dimensió - Autoencoders: compressió neuronal (encoder → representació latent → decoder)
Cas d'ús real: Spotify usa clustering per agrupar usuaris amb gustos similars i alimentar el motor de recomanació Discover Weekly.
Aprenentatge per reforç
Un agent aprèn per interacció amb un entorn: pren accions, rep recompenses (positives o negatives) i ajusta la seva política per maximitzar la recompensa acumulada.
Components clau: - Agent: qui pren decisions - Entorn: el sistema amb el qual interactua - Estat (s): observació actual de l'entorn - Acció (a): decisió de l'agent - Recompensa (r): senyal de feedback - Política (π): estratègia de l'agent
graph LR
A[Agent] -->|Acció| E[Entorn]
E -->|Estat + Recompensa| A
E -->|Estat nou| A
Exemples reals 2024-2025: - AlphaGo / AlphaZero (DeepMind): supera els millors jugadors humans en Go, escacs i shogi - ChatGPT RLHF: el model base GPT es refina amb reforç per feedback humà (Reinforcement Learning from Human Feedback) - Robòtica: Boston Dynamics entrena els seus robots amb simulació + RL
Comparativa dels tres paradigmes
| Característica | Supervisat | No supervisat | Per reforç |
|---|---|---|---|
| Dades necessàries | Etiquetades | No etiquetades | Senyals de recompensa |
| Tasca típica | Classificació, regressió | Clustering, reducció | Control, jocs, robòtica |
| Interpretabilitat | Moderada | Baixa | Baixa |
| Dificultat d'entrenament | Moderada | Moderada | Alta |
| Exemples | Random Forest, SVM | K-Means, PCA | Q-Learning, PPO |
Miniactivitat AC5071/02
Classifica cadascun dels sistemes següents en supervisat, no supervisat o per reforç. Justifica la resposta: a) Netflix recomana pel·lícules basant-se en l'historial d'un usuari sense saber quines li agradaran b) Un sistema detecta frau bancari marcat per analistes humans c) Un robot aprèn a caminar en una simulació física d) Google Fotos agrupa automàticament les fotos per persones sense que l'usuari etiqueti ningú
2.2 Models d'automatització: RPA i IPA
Robotic Process Automation (RPA)
L'RPA automatitza tasques repetitives basades en regles, imitant les accions d'un humà sobre interfícies gràfiques (GUI). No requereix modificar el sistema subjacent: el robot interactua amb l'aplicació igual que ho faria una persona.
Característiques: - Basat en regles explícites, no en aprenentatge - Alta fiabilitat per a tasques estructurades i repetitives - Ràpid de desplegar, sense accés al codi font de les aplicacions - Fràgil davant canvis en la interfície (si canvia el botó de lloc, el robot falla)
Eines principals: - UiPath — líder de mercat, comunitat extensa, versió gratuïta per a aprenentatge - Automation Anywhere — fort en cloud i analytics - Microsoft Power Automate — integrat amb l'ecosistema Microsoft 365 - Blue Prism — enfocament empresarial, alta seguretat
Casos d'ús típics: - Introduir dades d'una factura PDF a un ERP - Generar informes periòdics exportant dades de múltiples sistemes - Processar sol·licituds de vacances comparant-les amb el calendari - Reconciliació bancària: comparar extractes del banc amb el sistema comptable
graph LR
D[Document PDF] --> R[Robot RPA]
R --> V[Validació de dades]
V --> E[ERP SAP / Oracle]
V --> N[Notificació email]
R --> L[Log d'auditoria]
Intelligent Process Automation (IPA)
L'IPA combina RPA amb tecnologies d'IA (ML, NLP, visió per computador) per automatitzar processos que impliquen dades no estructurades o decisions complexes.
| Capacitat | RPA | IPA |
|---|---|---|
| Dades estructurades | ✅ | ✅ |
| Dades no estructurades (text lliure) | ❌ | ✅ (NLP) |
| Imatges / documents escanejats | ❌ | ✅ (OCR + CV) |
| Decisions basades en regles | ✅ | ✅ |
| Decisions amb incertesa | ❌ | ✅ (ML) |
| Aprenentatge continu | ❌ | ✅ |
Exemple IPA real: Un assegurador rep 10.000 sinistres al dia. L'IPA: 1. Extreu el text de l'informe del sinistre (NLP) 2. Classifica el tipus de sinistre (ML) 3. Valora el dany a partir de les fotos (visió per computador) 4. Si la valoració és < 3.000€ i no hi ha litigis: aprovació automàtica (RPA) 5. Si supera el llindar: assigna a un gestor humà
RPA vs IA: complementarietat, no competència
L'RPA és excel·lent per a tasques estructurades i repetitives. La IA aporta capacitat de comprensió i adaptació. Junts, formen sistemes d'automatització intel·ligent que poden gestionar processos end-to-end amb mínima intervenció humana.
Miniactivitat AC5071/03
Analitza el procés de gestió de factures d'un departament de comptabilitat. Identifica quines parts del procés es podrien automatitzar amb RPA pur i quines necessitarien IPA. Justifica per a cada pas per qué.
2.3 Raonament imprecís i lògica difusa
Motivació: per què la lògica clàssica no és suficient
La lògica booleana clàssica treballa amb valors binaris: vertader (1) o fals (0). Però el món real és ple de conceptes graduats: "fa calor", "el cotxe va ràpid", "el pacient té febre". La lògica difusa (fuzzy logic), introduïda per Lotfi Zadeh el 1965, permet representar i raonar sobre aquesta incertesa.
Conjunts difusos
En la lògica clàssica, un element pertany o no pertany a un conjunt. En la lògica difusa, la pertinença és un valor entre 0 i 1:
- Temperatura = 38°C
- Grau de pertinença a "febre alta" = 0.7
- Grau de pertinença a "febre moderada" = 0.4
- Grau de pertinença a "temperatura normal" = 0.0
Funcions de pertinença habituals: - Triangular - Trapezoïdal - Gaussiana - Sigmoïdal
Variables lingüístiques
Les variables lingüístiques permeten expressar coneixement en termes humans:
- Variable: Velocitat del cotxe
- Termes lingüístics: {molt lenta, lenta, moderada, ràpida, molt ràpida}
- Domini: [0, 200] km/h
Sistema difús complet: estructura
graph LR
E[Entrades nítides] --> F[Fuzzificació]
F --> R[Motor d'inferència\nRegles SI-ALESHORES]
R --> D[Defuzzificació]
D --> S[Sortida nítida]
BC[Base de coneixement\nRegles + Funcions\nde pertinença] --> R
Exemple: sistema de control de climatització
Regles: - SI temperatura és ALTA I humitat és ALTA ALESHORES refrigeració és MÀXIMA - SI temperatura és MODERADA I humitat és BAIXA ALESHORES refrigeració és MÍNIMA - SI temperatura és BAIXA ALESHORES calefacció és ALTA
# Exemple amb scikit-fuzzy
import numpy as np
import skfuzzy as fuzz
from skfuzzy import control as ctrl
# Variables
temperatura = ctrl.Antecedent(np.arange(0, 41, 1), 'temperatura')
refrigeracio = ctrl.Consequent(np.arange(0, 101, 1), 'refrigeracio')
# Funcions de pertinença
temperatura['baixa'] = fuzz.trimf(temperatura.universe, [0, 0, 20])
temperatura['moderada'] = fuzz.trimf(temperatura.universe, [15, 25, 35])
temperatura['alta'] = fuzz.trimf(temperatura.universe, [30, 40, 40])
refrigeracio['minima'] = fuzz.trimf(refrigeracio.universe, [0, 0, 50])
refrigeracio['maxima'] = fuzz.trimf(refrigeracio.universe, [50, 100, 100])
# Regles
regla1 = ctrl.Rule(temperatura['alta'], refrigeracio['maxima'])
regla2 = ctrl.Rule(temperatura['baixa'], refrigeracio['minima'])
sistema = ctrl.ControlSystem([regla1, regla2])
simulacio = ctrl.ControlSystemSimulation(sistema)
simulacio.input['temperatura'] = 35
simulacio.compute()
print(f"Refrigeració: {simulacio.output['refrigeracio']:.1f}%")
Aplicacions reals de la lògica difusa: - Controls de temperatura (Mitsubishi, Panasonic) - Frenada antibloquejant (ABS) en automòbils - Càmeres fotogràfiques (autoenfoc adaptatiu) - Diagnòstic mèdic (incertesa en símptomes) - Avaluació de risc creditici
Miniactivitat AC5071/04
Dissenya un sistema difús senzill per avaluar la qualitat d'un restaurant. Defineix almenys 2 variables d'entrada (p. ex. qualitat del menjar i servei) i 1 variable de sortida (valoració global). Especifica les funcions de pertinença i almenys 4 regles difuses.
2.4 Sistemes basats en regles
Arquitectura dels sistemes basats en regles
Un sistema basat en regles (SBR) representa el coneixement com a conjunt de regles de la forma:
Components principals: - Base de coneixement: les regles (coneixement expert) - Memòria de treball (Working Memory): els fets actuals - Motor d'inferència: aplica les regles als fets per generar nous fets o accions
Encadenament cap endavant (Forward Chaining)
Parteix dels fets coneguts i aplica regles fins arribar a una conclusió. Apropiat quan la pregunta és: "donat el que sé, quines conclusions puc treure?"
Fets inicials: {plou, és_hivern}
Regles:
R1: SI plou ALESHORES agafa_paraigua
R2: SI és_hivern ALESHORES porta_abric
R3: SI agafa_paraigua I porta_abric ALESHORES estàs_preparat
Execució:
Iteració 1: R1 → agafa_paraigua; R2 → porta_abric
Iteració 2: R3 → estàs_preparat ✅
Encadenament cap enrere (Backward Chaining)
Parteix d'un objectiu i busca les regles que el suporten fins arribar a fets coneguts. Apropiat per a sistemes de diagnòstic: "quines condicions cal complir perquè X sigui cert?"
Objectiu: estàs_preparat?
→ Necessita: agafa_paraigua I porta_abric
→ agafa_paraigua: necessita plou → ✅ (és un fet)
→ porta_abric: necessita és_hivern → ✅ (és un fet)
→ Conclusió: estàs_preparat ✅
CLIPS
CLIPS (C Language Integrated Production System) és un sistema expert de referència, de domini públic, creat per la NASA el 1985. Continua sent usat en entorns crítics.
; Definir fets
(deffacts fets-inicials
(temperatura 38.5)
(mal-de-cap si)
)
; Definir regles
(defrule diagnosticar-febre
(temperatura ?t&:(> ?t 38))
=>
(assert (diagnostic febre))
(printout t "Diagnòstic: febre detectada" crlf)
)
(defrule recomanar-tractament
(diagnostic febre)
(mal-de-cap si)
=>
(printout t "Recomanació: paracetamol i repòs" crlf)
)
Drools
Drools és el motor de regles de negoci open-source més usat en entorns empresarials Java/JVM. Integra Business Rules Management System (BRMS) amb interfície visual per a no programadors.
// Exemple de regla Drools
rule "Detectar frau potencial"
when
$transaccio : Transaccio(
import > 5000,
pais != "ES",
hora > 23 || hora < 6
)
then
$transaccio.setEstat("SUSPESA");
insert(new Alerta("Possible frau: " + $transaccio.getId()));
end
Casos d'ús empresarials de Drools: - Regles de negoci en banca (aprovació de crèdits) - Sistemes de salut (protocols clínics) - Assegurances (càlcul de primes) - Logística (regles de tarifació)
Limitacions dels SBR
Els sistemes basats en regles escalen malament: amb milers de regles, el manteniment és molt costós i els conflictes entre regles difícils de detectar. Per a problemes amb dades abundants i patrons complexos, el Machine Learning supera els SBR. La tendència 2025 és combinar ambdós (IA neuro-simbòlica).
Miniactivitat AC5071/05
Implementa un sistema expert senzill en Python (sense CLIPS) per diagnosticar si una planta necessita reg. Usa un diccionari de regles i encadenament cap endavant. Les entrades seran: humitat del sòl (%), dies des de l'últim reg, i color de les fulles.
2.5 Selecció i avaluació de models
Marc de decisió per seleccionar un model
Escollir el model adequat és una de les habilitats centrals d'un professional d'IA. No existeix un model universalment millor (teorema No Free Lunch): cada model té fortaleses i debilitats que cal contrastar amb les característiques del problema.
Preguntes clau per a la selecció:
graph TD
P[Problema] --> Q1{Tenim dades etiquetades?}
Q1 -->|Sí| Q2{La sortida és contínua\no discreta?}
Q1 -->|No| Q3{Volem descobrir\nestructura?}
Q2 -->|Contínua| REG[Regressió\nLinear, RF, XGBoost]
Q2 -->|Discreta| CLA[Classificació\nSVM, RF, XGBoost, DL]
Q3 -->|Sí| CLU[Clustering\nK-Means, DBSCAN]
Q3 -->|No - control| RL[Reforç\nQ-Learning, PPO]
Q1 -->|Interacció amb entorn| RL
Criteris de selecció
| Criteri | Descripció | Impacte en la decisió |
|---|---|---|
| Mida del dataset | Pocs exemples → models simples; molts → DL | Regressió lineal amb 100 exemples; DL amb milions |
| Interpretabilitat | Cal explicar la decisió? (mèdic, jurídic) | Arbres de decisió > xarxes neuronals |
| Temps d'inferència | Cal resposta en temps real (<10ms)? | Models lleugers, no LLMs grans |
| Recursos computacionals | GPU disponible? | DL requereix GPU; RF funciona en CPU |
| Tipus de dades | Tabular, imatge, text, sèrie temporal | Tabular → XGBoost; Imatge → CNN; Text → Transformer |
| Llindar d'error | Quin cost té una predicció errònia? | Alta precisió en diagnòstic; alt recall en detecció de frau |
Criteris generals d'avaluació
Mètriques de classificació: - Accuracy: proporció d'exemples correctament classificats (enganyosa amb classes desequilibrades) - Precision: dels positius predits, quants eren realment positius - Recall (Sensibilitat): dels positius reals, quants hem detectat - F1-Score: mitjana harmònica de precision i recall - AUC-ROC: àrea sota la corba ROC (capacitat de discriminació)
Mètriques de regressió: - MAE (Mean Absolute Error): error mig en unitats originals - RMSE (Root Mean Square Error): penalitza més els errors grans - R²: proporció de variança explicada (1 = perfecte, 0 = igual que la mitjana)
Validació creuada (Cross-Validation):
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import GradientBoostingClassifier
model = GradientBoostingClassifier()
scores = cross_val_score(model, X, y, cv=5, scoring='f1_macro')
print(f"F1 mitjà: {scores.mean():.3f} ± {scores.std():.3f}")
Trampes habituals en l'avaluació
- Data leakage: informació del test contamina l'entrenament
- Overfitting: el model memòria el conjunt d'entrenament però no generalitza
- Mètriques inadequades: usar accuracy en problemes amb classes molt desequilibrades (99% negatiu, 1% positiu)
- Comparació sense baseline: sempre compara el model amb una solució trivial (predictor de la classe majoritària, mitjana)
Miniactivitat AC5071/06
Donat un problema de detecció de càncer de mama (maligne / benigne), amb un 15% de casos malignes: a) Quina mètrica prioritzaries: precision o recall? Per qué? b) Un model A té accuracy 95% i recall 10%. Un model B té accuracy 85% i recall 80%. Quin tries i per qué? c) Quin seria el "baseline trivial" per a aquest problema i quina accuracy tindria?
Exercici pràctic del bloc
AC5071/07 — Comparativa de models per a un cas real
Tria un dels datasets públics de Kaggle o UCI ML Repository (p. ex. Heart Disease, Titanic o Wine Quality) i:
- Aplica almenys 3 models de classificació diferent (p. ex. Logistic Regression, Random Forest, XGBoost)
- Avalua'ls amb cross-validation 5-fold i calcula F1-score i AUC-ROC
- Crea una taula comparativa amb els resultats
- Justifica quin model triaries per a producció i per qué (no necessàriament el de major accuracy)
- Identifica si el dataset té problemes de classe desequilibrada i com ho tractaries
Format d'entrega: Jupyter Notebook a GitHub, amb nom AC5071/01_2_nom_cognom.ipynb.