0. Ahorro de tiempo y costos al construir conjuntos de datos: Etiquetar datos con ChatGPT
Para entrenar modelos de inteligencia artificial, se necesita un conjunto de datos compuesto por pares de 'preguntas' y 'respuestas' (según el criterio de aprendizaje supervisado).
Etiquetar los datos con respuestas, es decir, asignar etiquetas, se llama 'etiquetado'.
1. Importancia de los datos, ¿qué es un conjunto de datos de calidad?
Probablemente, aquellos que desarrollan modelos de IA a menudo sientan que "ya tienen suficientes datos".
Por supuesto, para un buen modelo de IA, diversos elementos como algoritmos actualizados, computación de alto rendimiento, etc., son importantes.
Sin embargo, si eres un junior en el campo de la IA y los datos, creo que es sabio prestar atención al valor de los datos. Como datos de alta calidad.
¿Qué son los datos de 'alta calidad'? ¿Por qué son importantes?
La mayoría de las tecnologías de IA actuales se basan en modelos de aprendizaje profundo basados en redes neuronales.
Estas redes neuronales imitan el método de aprendizaje humano.
Hasta que un recién nacido dice 'mamá',
Llamar a su madre 'mamá' -> Datos de alta calidad (etiquetado preciso)
Seguramente has presenciado esto muchas veces. -> Muchos datos
Si el bebé llama a su madre 'papá' -> Datos de baja calidad (etiquetado incorrecto)
El bebé estaría muy confundido.
Con el tiempo, el bebé aprende que debe llamar 'mamá' a la persona que lo cuida, lo carga y lo cría. -> Aprendizaje de patrones
Aprender patrones significativos de los datos, eso es fundamental en el aprendizaje de modelos de inteligencia artificial.
Esto se facilita con datos de alta calidad.
Los datos de alta calidad son como buenos maestros para los modelos de IA.
2. Razones para confiar el etiquetado a ChatGPT
Como se mencionó anteriormente, la cantidad y calidad de los datos son importantes.
Sin embargo, asignar buenas etiquetas a una gran cantidad de datos es una tarea repetitiva que requiere atención constante, lo cual puede ser monótono y agotador.
Por lo tanto, muchos organismos gubernamentales y empresas suelen subcontratar la tarea de etiquetado de datos a empresas externas o trabajadores temporales.
En este proceso, HashScraper ha experimentado que inevitablemente se enfrenta a varios problemas.
**Primero, no se puede garantizar la calidad de los datos.
**El desarrollador del modelo de IA tiene una dirección para el modelo de IA que está creando,
y hay criterios para el etiquetado de datos que se ajustan a esa dirección.
Aunque se comuniquen detalladamente estos criterios a los etiquetadores, puede haber variaciones entre ellos
y un etiquetador individual puede perder la concentración durante el trabajo repetitivo.
Debido a que son humanos, es difícil que tengan una consistencia perfecta. (*Errores humanos)
**Segundo, implica costos significativos.
**Cuanto más datos haya que procesar, y cuanto más rápido se necesite construir el conjunto de datos, más experiencia y mano de obra se necesitarán.
El etiquetado de datos con ChatGPT tampoco es perfecto y puede resultar difícil escribir instrucciones para problemas más complejos.
Sin embargo, en términos de ahorro de costos, reducción de tiempo y consistencia, es algo que cualquiera reconocerá como efectivo.
Además, si trabajas en un campo relacionado, creo que es imprescindible familiarizarse con modelos de lenguaje gigantes y aprender a interactuar con ellos.
Creo que la ingeniería de instrucciones será una habilidad básica para mejorar la eficiencia laboral en el futuro.
3. Etiquetado de datos con ChatGPT
Imaginemos que estamos creando un conjunto de datos para análisis de sentimientos.
3.1 Obtener la clave de API de OpenAI
En esta publicación, utilizaremos la API de ChatGPT en lugar de etiquetar en la web.
Primero, debes iniciar sesión en OpenAI desde el siguiente enlace y registrar un método de pago para los costos de las llamadas a la API.
https://platform.openai.com/
Luego, debes descargar la clave de la API.
Es importante guardar la clave de la API después de crearla.
Ya que solo se muestra una vez, si la olvidas, tendrás que crear una nueva, así que ten cuidado.
3.2 Escribir instrucciones
text = '맛있는 거 먹어서 기분이 너무 좋다.' # 감정 분석 대상 텍스트
prompt = f'''You're an assistant, labeling data on a consistent basis.
Label the given text with one of the following sentiments: Positive, Negative, or Neutral.
If you can't determine a sentiment, label the text as Neutral.
Do not enclose your output in double or single quotes, just the label.
Follow the example to analyze the sentiment.
given text: 나 너무 우울해
sentiment: Negative
given text: 오늘 아침 일찍 출근했다.
sentiment: Neutral
given text: {text}
sentiment: '''
Aquí hay algunos consejos para escribir instrucciones:
- Escribir en inglés
Hasta agosto de 2023, los modelos de lenguaje tienen restricciones en el número de tokens.
No se pueden hacer preguntas muy largas ilimitadas, y cuanto más larga sea la cantidad de tokens, más costoso será.
ChatGPT es más eficiente en tokens para el inglés.
En pocas palabras, hacer la misma pregunta en inglés resulta en un menor costo.
Además, al comparar los resultados, se ha demostrado que ChatGPT tiene un mejor rendimiento en inglés.
- Asignar roles a ChatGPT
Asignar un rol antes de escribir las instrucciones que ChatGPT debe seguir.
- Proporcionar ejemplos
Proporcionar guías sobre el formato y la forma de las salidas.
También se conoce como Aprendizaje con pocos ejemplos.
- Ser detallado pero claro
Esto es para la eficiencia de los tokens y para inducir respuestas precisas.
Proporcionar explicaciones detalladas pero de manera clara y concisa.
Usando estos consejos, escribe las instrucciones.
3.3 Solicitar respuesta de la API (configurar parámetros)
response = openai.ChatCompletion.create(
model='gpt-3.5-turbo',
temperature=0,
messages=[
{"role": "user", "content": prompt}
]
)
sentiment = response.choices[0].message['content']
print(f'문장: {text}\n감정: {sentiment}')
문장: 맛있는 거 먹어서 기분이 너무 좋다.
감정: Positive
Si ejecutas el código tal como está, deberías obtener el mismo resultado.
Es útil tener en cuenta algunas explicaciones sobre ciertos parámetros.
- temperature
Es el parámetro más importante.
Este parámetro controla la diversidad de las respuestas del modelo.
A mayor temperatura, las respuestas son más diversas y creativas, y a menor temperatura, las respuestas son más consistentes.
Para nuestro propósito de 'etiquetado de datos', lo configuraremos en 0 (el valor más bajo).
Cuando el modelo de lenguaje genera una respuesta, calcula la probabilidad de varias respuestas.
Con 'temperature=0', se elige la respuesta con la probabilidad más alta entre las generadas. Al repetir preguntas más complejas, se puede notar que con 'temperature=0', se repetirá la misma respuesta.
Además, la razón por la que no etiquetamos en la web es la siguiente.
1) Se requiere codificación para realizar acciones repetitivas al etiquetar una gran cantidad de datos.
2) La temperatura de ChatGPT que usamos en la web está predefinida y no se puede ajustar.
- roles de los mensajes: usuario, asistente, sistema
En el código anterior, solo se escribieron mensajes de 'usuario', pero en realidad hay tres tipos: 'usuario', 'asistente', 'sistema'.
En 'usuario', escribe las preguntas o instrucciones que el usuario desea dar a ChatGPT.
'asistente' es un mensaje para que ChatGPT haga referencia a la conversación anterior.
Si has conversado con ChatGPT en la web, habrás notado que recuerda la conversación anterior. Esto es posible porque cuando el usuario hace una pregunta, la conversación anterior también se transmite a ChatGPT. Por lo tanto, no es necesario en tareas simples de etiquetado.
'sistema' especifica el comportamiento de ChatGPT.
Aunque podrías escribir el rol de ChatGPT en el mensaje 'sistema', no es necesario hacerlo en tareas simples de etiquetado como esta.
3.4 ¿Y si etiquetamos una gran cantidad de datos?
Hasta ahora, se ha mostrado cómo etiquetar un solo dato. Si tienes habilidades de desarrollo, etiquetar una gran cantidad de datos de forma repetitiva no debería ser demasiado difícil.
Sin embargo, es importante manejar las excepciones de errores que pueden ocurrir al llamar a la API.
Debido a que los errores ocurren a menudo cuando hay demasiadas llamadas en poco tiempo o la conexión de red no es buena, manejar estas excepciones te permitirá realizar un etiquetado estable.
def sentiment_analyze(text):
prompt = f'''You're an assistant, labeling data on a consistent basis.
Label the given text with one of the following sentiments: Positive, Negative, or Neutral.
If you can't determine a sentiment, label the text as Neutral.
Do not enclose your output in double or single quotes, just the label.
Follow the example to analyze the sentiment.
given text: 나 너무 우울해
sentiment: Negative
given text: 오늘 아침 일찍 출근했다.
sentiment: Neutral
given text: {text}
sentiment: '''
try:
response = openai.ChatCompletion.create(
model='gpt-3.5-turbo',
temperature=0,
messages=[
{"role": "user", "content": prompt}
]
)
sentiment = response.choices[0].message['content']
return sentiment
except:
sentiment = 'error'
return sentiment
df['label'] = df['text'].apply(sentiment_analyze)
4. ¿Cuánto cuesta?
Hasta agosto de 2023, los modelos más utilizados son 'gpt-3.5-turbo' y 'gpt-4'.
Para tareas simples como la clasificación de conjuntos de datos de análisis de sentimientos como el ejemplo, el modelo 3.5 es suficiente.
Según el modelo 'gpt-3.5-turbo', el costo es de 0.0015 dólares por cada 1,000 tokens de la pregunta del usuario,
y 0.002 dólares por cada 1,000 tokens de la respuesta de GPT.
El ejemplo utilizado en este caso tiene alrededor de 200 tokens.
Haciendo un cálculo simple, con 3 dólares puedes etiquetar aproximadamente 10,000 conjuntos de datos de análisis de sentimientos.
Sin embargo, al abordar problemas más complejos, las instrucciones se vuelven más específicas y complejas, y el uso del modelo 3.5 puede tener sus limitaciones.
En este caso, hay muchas cosas que se pueden resolver utilizando el modelo gpt4, pero considerando que el costo es 20-30 veces mayor, se necesita una decisión cuidadosa.
5. Conclusión
Si se trata solo de una tarea repetitiva como el etiquetado, no hay necesidad de dudar en usar ChatGPT considerando costos y rendimiento. Sin embargo, si tienes que manejar tareas más complejas que requieren el uso del modelo GPT4, necesitarás una cuidadosa consideración sobre los costos.
Hay desventajas, como el hecho de que se limita a métodos basados en texto, depende de la política de precios de OpenAI, y puede ser difícil crear un modelo de IA que supere el rendimiento del modelo GPT con datos etiquetados.
Sin embargo, el campo de código abierto está avanzando rápidamente y se espera que estas desventajas se resuelvan en un futuro cercano.
Cuando se construyen conjuntos de datos de texto, creo que es una prioridad considerar este enfoque antes que los etiquetadores humanos.
ChatGPT es un asistente que puede ayudarte en tu trabajo a bajo costo y sin descanso.
Espero que lo utilices bien y logres tus objetivos deseados.




