del universo (hecha por uno de los cantantes más icónicos de todos los tiempos) dice esto:
Ojalá pudiera volver
Y cambiar estos años
estoy pasando por cambiosBlack Sabbath – Cambios
Esta canción es increíblemente poderosa y habla de cómo la vida puede cambiar tan rápidamente frente a ti.
Esa canción trata sobre un corazón roto y una historia de amor. Sin embargo, también me recuerda mucho a los cambios que ha experimentado mi trabajo, como científico de datos, durante los últimos 10 años de mi carrera:
Cuando comencé a estudiar Física, lo único que pensaba cuando alguien decía “Transformer” era Optimus Prime. Para mí, el aprendizaje automático se trataba de regresión lineal, SVM, bosque aleatorio, etc. [2016]
Cuando hice mi Maestría en Big Data y Física de Sistemas Complejos, escuché por primera vez sobre “BERT” y varias tecnologías de Deep Learning que me parecieron muy prometedoras en ese momento. Salieron los primeros modelos GPT y parecían muy interesantes, aunque nadie esperaba que fueran tan potentes como lo son hoy. [2018-2020]
Avance rápido a mi vida ahora como científico de datos a tiempo completo. Hoy en día, si no sabe qué significa GPT y nunca ha leído “La atención es todo lo que necesita”, tiene muy pocas posibilidades de aprobar una entrevista de Diseño de sistemas de ciencia de datos. [2021 – today]
Cuando la gente afirma que las herramientas y la vida cotidiana de una persona que trabaja con datos son sustancialmente diferentes a las de hace 10 (o incluso 5) años, estoy completamente de acuerdo. Con lo que no estoy de acuerdo es con la idea de que las herramientas utilizadas en el pasado deban borrarse solo porque ahora todo parece solucionable con GPT, LLM o Agentic AI.
El objetivo de este artículo es considerar una sola tarea, que es clasificar la intención de amor/odio/neutral de un Tweet. En particular, lo haremos con Machine Learning tradicional, Deep Learning y Large Language Models.
Haremos esto de manera práctica, usando Python, y describiremos por qué y cuándo usar cada enfoque. Con suerte, después de este artículo, aprenderá:
Las herramientas utilizadas en los primeros días todavía deben considerarse, estudiarse y, en ocasiones, adoptarse. Se deben evaluar la latencia, la precisión y el costo al elegir el mejor algoritmo para su caso de uso. Los cambios en el mundo de los científicos de datos son necesarios y deben adoptarse sin temor 🙂
¡Empecemos!
1. El caso de uso
El caso que nos ocupa es algo que en realidad está muy adoptado en las aplicaciones de ciencia de datos/IA: el análisis de sentimiento. Esto significa que, dado un texto, queremos extrapolar el “sentimiento” detrás del autor de ese texto. Esto es muy útil para los casos en los que desea recopilar comentarios detrás de una reseña determinada de un objeto, una película, un artículo que está recomendando, etc.
En esta publicación de blog, utilizamos un ejemplo de análisis de sentimientos muy “famoso”, que consiste en clasificar el sentimiento detrás de un tweet. Como quería tener más control, no trabajaremos con tweets orgánicos extraídos de la web (donde las etiquetas son inciertas). En su lugar, utilizaremos contenido generado por modelos de lenguaje grandes que podemos controlar.
Esta técnica también nos permite sintonizar la dificultad y la variedad del problema y observar cómo reaccionan las diferentes técnicas.
Caso fácil: los tweets de amor suenan como postales, los de odio son contundentes y los mensajes neutrales hablan sobre el clima y el café. Si un modelo tiene problemas en este aspecto, algo más anda mal. Caso más difícil: todavía amamos, odiamos, neutrales, pero ahora inyectamos sarcasmo, tonos mixtos y sugerencias sutiles que exigen atención al contexto. También tenemos menos datos para tener un conjunto de datos más pequeño con el que entrenar. Caso extradifícil: pasamos a cinco emociones: amor, odio, ira, disgusto y envidia, por lo que el modelo tiene que analizar oraciones más ricas y con más capas. Además, tenemos 0 entradas para entrenar los datos: no podemos realizar ningún entrenamiento.
He generado los datos y he puesto cada uno de los archivos en una carpeta específica de la carpeta pública de GitHub que he creado para este proyecto. [data].
Nuestro objetivo es construir un sistema de clasificación inteligente que pueda captar de manera eficiente el sentimiento detrás de los tweets. ¿Pero cómo lo haremos? Vamos a resolverlo.
2. Diseño del sistema
Una imagen que siempre es de gran ayuda considerar es la siguiente:
La precisión, el costo y la escala en un sistema de aprendizaje automático forman un triángulo. Sólo puedes optimizar completamente dos al mismo tiempo.
Se puede tener un modelo muy preciso que se adapte muy bien a millones de entradas, pero no será rápido. Puedes tener un modelo rápido que se amplíe con millones de entradas, pero no será tan preciso. Puedes tener un modelo preciso y rápido, pero no escalará muy bien.
Estas consideraciones se abstraen del problema específico, pero ayudan a guiar qué diseño de sistema ML construir. Volveremos sobre esto.
Además, la potencia de nuestro modelo debe ser proporcional al tamaño de nuestro conjunto de entrenamiento. En general, intentamos evitar que el error del conjunto de entrenamiento disminuya a costa de un aumento en el conjunto de pruebas (el famoso sobreajuste).
No queremos estar en el área de Underfitting o Overfitting. Déjame explicarte por qué.
En términos simples, el desajuste ocurre cuando su modelo es demasiado simple para aprender el patrón real en sus datos. Es como intentar trazar una línea recta a través de una espiral. El sobreajuste es lo contrario. El modelo aprende demasiado bien los datos de entrenamiento, incluido todo el ruido, por lo que funciona muy bien con lo que ya ha visto, pero mal con los datos nuevos. El punto óptimo es el término medio, donde su modelo comprende la estructura sin memorizarla.
Volveremos sobre este también.
3. Caso sencillo: aprendizaje automático tradicional
Abrimos con el escenario más amigable: un conjunto de datos altamente estructurado de 1000 tweets que generamos y etiquetamos. Las tres clases (positiva, neutral, negativa) están equilibradas a propósito, el lenguaje es muy explícito y cada fila se encuentra en un CSV limpio.
Comencemos con un simple bloque de código de importación.
Veamos cómo se ve el conjunto de datos:
Ahora, anticipamos que esto no se ampliará a millones de filas (porque el conjunto de datos está demasiado estructurado para ser diverso). Sin embargo, podemos crear un método muy rápido y preciso para este caso de uso pequeño y específico. Empecemos por el modelado. Tres puntos principales a considerar:
Estamos haciendo una división de entrenamiento/prueba con el 20% del conjunto de datos en el conjunto de prueba. Usaremos un enfoque TF-IDF para obtener las incrustaciones de las palabras. TF-IDF significa Frecuencia de plazo: frecuencia de documento inversa. Es una técnica clásica que transforma texto en números dándole a cada palabra un peso basado en su importancia en un documento en comparación con todo el conjunto de datos. Combinaremos esta técnica con dos modelos de ML: Regresión logística y Máquinas de vectores de soporte, de scikit-learn. La regresión logística es simple e interpretable y a menudo se utiliza como una base sólida para la clasificación de textos. Las máquinas de vectores de soporte se centran en encontrar el mejor límite entre clases y normalmente funcionan muy bien cuando los datos no son demasiado ruidosos.
Y el rendimiento es esencialmente perfecto para ambos modelos.
Para este caso tan simple, donde tenemos un conjunto de datos consistente de 1000 filas, un enfoque tradicional hace el trabajo. No se necesitan miles de millones de modelos de parámetros como GPT.
4. Caso difícil: aprendizaje profundo
El segundo conjunto de datos sigue siendo sintético, pero está diseñado para resultar molesto a propósito. Las etiquetas siguen siendo de amor, odio y neutrales, pero los tweets se basan en el sarcasmo, el tono mixto y los cumplidos ambiguos. Además de eso, el grupo de entrenamiento es más pequeño mientras que la porción de validación sigue siendo grande, por lo que los modelos funcionan con menos evidencia y más ambigüedad.
Ahora que tenemos esta ambigüedad, necesitamos sacar las armas más grandes. Existen modelos de incorporación de aprendizaje profundo que mantienen una gran precisión y aún se escalan bien en estos casos (¡recuerde el triángulo y el gráfico de error versus complejidad!). En particular, los modelos integrados de aprendizaje profundo aprenden el significado de las palabras a partir de su contexto en lugar de tratarlas como tokens aislados.
Para esta publicación de blog, usaremos BERT, que es uno de los modelos de incrustación más famosos que existen. Primero importemos algunas bibliotecas:
…y algunos ayudantes.
Gracias a estas funciones, podemos evaluar rápidamente nuestro modelo de integración frente al enfoque TF-IDF.
Como podemos ver, el modelo TF-IDF tiene un rendimiento extremadamente bajo en las etiquetas positivas, mientras que conserva una alta precisión cuando se utiliza el modelo de incrustación (BERT).
5. Caso extradifícil: Agente LLM
Ok, ahora hagamos las cosas MUY difíciles:
Sólo tenemos 100 filas. Asumimos que no conocemos las etiquetas, lo que significa que no podemos entrenar ningún modelo de aprendizaje automático. Tenemos cinco etiquetas: envidia, odio, amor, asco, ira.
Como no podemos entrenar nada, pero aún queremos realizar nuestra clasificación, debemos adoptar un método que de alguna manera ya tenga las clasificaciones dentro. Los modelos de lenguaje grandes son el mejor ejemplo de este método.
Tenga en cuenta que si usáramos LLM para los otros dos casos, sería como dispararle a una mosca con un cañón. Pero aquí tiene mucho sentido: la tarea es desafiante y no tenemos forma de hacer nada inteligente porque no podemos entrenar nuestro modelo (no tenemos el conjunto de entrenamiento).
En este caso, tenemos precisión a gran escala. Sin embargo, la API lleva algo de tiempo, por lo que tenemos que esperar uno o dos segundos antes de que llegue la respuesta (¡recuerde el triángulo!).
Importemos algunas bibliotecas:
Y esta es la llamada API de clasificación:
Y podemos ver que el LLM hace un trabajo de clasificación asombroso:
6. Conclusiones
Durante la última década, el papel del científico de datos ha cambiado tan drásticamente como la tecnología misma. Esto podría llevar a la idea de utilizar simplemente las herramientas más poderosas que existen, pero esa NO es la mejor ruta en muchos casos.
En lugar de buscar primero el modelo más grande, probamos un problema a través de una lente simple: precisión, latencia y costo.
En particular, esto es lo que hicimos, paso a paso:
Definimos nuestro caso de uso como clasificación de sentimientos de tweets, con el objetivo de detectar amor, odio o intención neutral. Diseñamos tres conjuntos de datos de dificultad creciente: uno limpio, uno sarcástico y uno sin entrenamiento. Abordamos el caso sencillo utilizando TF-IDF con regresión logística y SVM. Los tweets fueron claros y directos, y ambos modelos se desempeñaron casi a la perfección. Pasamos al caso difícil, donde el sarcasmo, el tono mixto y el contexto sutil hicieron la tarea más compleja. Usamos incrustaciones de BERT para capturar el significado más allá de las palabras individuales. Finalmente, para el caso más difícil sin datos de entrenamiento, utilizamos un modelo de lenguaje grande para clasificar las emociones directamente mediante el aprendizaje de disparo cero.
Cada paso mostró cómo la herramienta adecuada depende del problema. El aprendizaje automático tradicional es rápido y confiable cuando los datos están estructurados. Los modelos de aprendizaje profundo ayudan cuando el significado se esconde entre líneas. Los LLM son poderosos cuando no tienen etiquetas o necesitan una amplia generalización.
7. ¡Antes de salir!
Gracias de nuevo por tu tiempo. Significa mucho ❤️
Mi nombre es Piero Paialunga y soy este chico:
Soy originario de Italia, tengo un doctorado. de la Universidad de Cincinnati y trabaja como científico de datos en The Trade Desk en la ciudad de Nueva York. Escribo sobre IA, aprendizaje automático y la evolución del papel de los científicos de datos tanto aquí en TDS como en LinkedIn. Si te gustó el artículo y quieres saber más sobre el aprendizaje automático y seguir mis estudios, puedes:
R. Sígueme en Linkedin, donde publico todas mis historias.
B. Sígueme en GitHub, donde podrás ver todo mi código.
C. Si tienes dudas puedes enviarme un correo electrónico a piero.paialunga@hotmail