О чём урок
Этот notebook демонстрирует один из способов настройки OpenAI embeddings для конкретной задачи. Входными данными являются обучающие данные в формате [text_1, text_2, label], где label равен +1, если пары схожи, и -1, если пары несхожи. Выходными данными является матрица, которую можно использовать для умножения ваших embeddings. Результатом этого умножения является 'custom embedding', который будет лучше выделять аспекты текста, релевантные вашему сценарию использования. В сценариях бинарной классификации мы наблюдали снижение частоты ошибок до 50%. В следующем примере я использую 1000 пар предложений, взятых из корпуса SNLI. Каждая пара предложений логически вытекает одно из другого (т.е. одно подразумевает другое). Эти пары являются нашими положительными примерами (label = 1). Мы генерируем синтетические отрицательные примеры, комбинируя предложения из разных пар, которые, как предполагается, логически не вытекают друг из друга (label = -1). Для сценария использования кластеризации вы можете генерировать положительные примеры, создавая пары из текстов в одних и тех же кластерах, и генерировать отрицательные примеры, создавая пары из предложений в разных кластерах. С другими наборами данных мы наблюдали заметное улучшение даже при наличии всего ~100 обучающих примеров. Конечно, производительность будет выше при большем количестве примеров. Большинство входных данных находятся здесь. Ключевые моменты, которые необходимо изменить, это: откуда загружать ваш dataset, куда сохранять кэш embeddings и какой embedding engine вы хотите использовать. В зависимости от формата ваших данных, вам потребуется переписать функцию process_input_data. text_1 text_2 label 2 A person on a horse jumps over a broken down a... A person is outdoors, on a horse. 1 4 Children smiling and waving at camera There are children present 1 7 A boy is jumping on skateboard in the middle o... The boy does a skateboarding trick. 1 14 Two blond women are hugging one another. There are women showing affection.
План урока
- 1. Входные данные
- 2. Загрузка и обработка входных данных
- 3. Разделение данных на обучающие и тестовые наборы
- 4. Генерация синтетических отрицательных примеров
- 5. Вычисление embeddings и косинусных схожестей
- 6. Построение распределения косинусной схожести
- 7. Оптимизация матрицы с использованием предоставленных обучающих данных
- 8. Построение графиков до и после, демонстрирующих результаты лучшей матрицы, найденной во время обучения
Урок входит в полный доступ. Полный текст и видео открываются после оплаты. Первые уроки каждого курса бесплатны.