Тестовое задание для проекта мастерской по виртуальным и платформенным решениям (СПб) — Универсальный семантический энкодер текстов
Jupyter Notebook
0
12 commits
updated Oct 2, 2023
Тестовое задание для проекта мастерской по виртуальным и платформенным решениям (СПб) — Универсальный семантический энкодер текстов
Возникшие вопросы
План проекта
Выбор датасетов.
Определение метрик.
Выбор подходов для сравнения.
Постановка гипотез.
Проведение экспериментов.
Выводы.
| Датасет | Размер* | Число языков |
|---|---|---|
| flores-250-rus-udm | 250 | 2 |
| ru_paraphraser | 7227 | 1 |
| instructor-base | 37910 | 45 |
| sentence-compression | 2000 | 1 |
| movie-genre-prediction | 54000 | 1 |
| Модель | Вес | На скольки языках обучена |
|---|---|---|
| glove-twitter-25 | 110 MB | 1 |
| google/flan-t5-small | 308 MB | 50+ |
| hkunlp/instructor-base | 439 MB | ? |
| intfloat/multilingual-e5-small | 471 MB | 90+ |
| all-MiniLM-L6-v2 | 91 MB | 1 |
| setu4993/LaBSE | 1.88 GB | 109 |
В папке src находятся следующие файлы:
Все значения огруглены до 3 знаков после запятой.
Для метрик UDM, PAR и SUM я вычисляю общее значение UPS по формуле:
$UPS = \frac{\frac{UDM + SUM}{2} \cdot PAR}{\frac{UDM + SUM}{2} + PAR}$.
Так более репрезентативно, т.к. часть моделей, например InstructOR, показывают близкое к 1 значение на UDM и практически 0 на PAR. Высокое значение UPS означает, что модель располагает тексты с одинаковыми смыслами близко в векторном пространстве, но при этом занимает векторное пространство равномерно, а не какую-то его малую часть. Интуиция для расчёта такой метрики основана на f_score.
| Модель | UPS | TOX | MGP | Mean |
|---|---|---|---|---|
| glove-twitter-25 | 0.006 | 0.732 | 0.09 | 0.276 |
| google/flan-t5-small | 0.09 | 0.775 | 0.215 | 0.36 |
| hkunlp/instructor-base | 0.016 | 0.795 | 0.295 | 0.37 |
| intfloat/multilingual-e5-small | 0.072 | 0.82 | 0.265 | 0.386 |
| all-MiniLM-L6-v2 | 0.16 | 0.8 | 0.272 | 0.411 |
| setu4993/LaBSE | 0.176 | 0.8 | 0.24 | 0.405 |
Неожиданно, что лучшей моделью в среднем по метрикам стала all-MiniLM-L6-v2, ведь она весит меньше всех остальных и её датасет для обучения состоял только из английского языка.
*Несколько уточнений по-поводу датасетов:
Если данные поделены на train/test/val, я оставляю только train.
Часть данных в не parquet формате я перевёл в parquet для ускорения.
Я уменьшил размер toxi-text-3M с 2880667 до 37910 семплов. Ограничился 1000 семплов сверху и 100 снизу для каждого языка. Сверху, чтобы я успел провести эксперименты, а снизу, чтобы рассчеты среднего по языкам были более репрезентативны. Для возможности воспроизвести вычисления, файл с обновленным датасетом я добавлю в репозиторий. Кроме того, в ноутбуке toxic_dataset_preparation.ipynb находится полный процесс изменения датасета.
Датасет sentence_compression состоит из 180000 семплов, однако большие тексты требуют слишком много времени для вычисления, я ограничился 2000 семплов.
**Во всех метриках я испольхую KNN с параметрами: n_neighbors=11, weights='distance', metric='cosine'. Основательно параметры я не подбирал кроме числа соседей, в остальном - интуиция. На train/val я разбиваю с random_state=[0;5) и беру усреднение из 5 моделей.
Тестовое задание для проекта мастерской по виртуальным и платформенным решениям (СПб) — Универсальный семантический энкодер текстов
Jupyter Notebook
0
12 commits
updated Oct 2, 2023
Тестовое задание для проекта мастерской по виртуальным и платформенным решениям (СПб) — Универсальный семантический энкодер текстов
Возникшие вопросы
План проекта
Выбор датасетов.
Определение метрик.
Выбор подходов для сравнения.
Постановка гипотез.
Проведение экспериментов.
Выводы.
| Датасет | Размер* | Число языков |
|---|---|---|
| flores-250-rus-udm | 250 | 2 |
| ru_paraphraser | 7227 | 1 |
| instructor-base | 37910 | 45 |
| sentence-compression | 2000 | 1 |
| movie-genre-prediction | 54000 | 1 |
| Модель | Вес | На скольки языках обучена |
|---|---|---|
| glove-twitter-25 | 110 MB | 1 |
| google/flan-t5-small | 308 MB | 50+ |
| hkunlp/instructor-base | 439 MB | ? |
| intfloat/multilingual-e5-small | 471 MB | 90+ |
| all-MiniLM-L6-v2 | 91 MB | 1 |
| setu4993/LaBSE | 1.88 GB | 109 |
В папке src находятся следующие файлы:
Все значения огруглены до 3 знаков после запятой.
Для метрик UDM, PAR и SUM я вычисляю общее значение UPS по формуле:
$UPS = \frac{\frac{UDM + SUM}{2} \cdot PAR}{\frac{UDM + SUM}{2} + PAR}$.
Так более репрезентативно, т.к. часть моделей, например InstructOR, показывают близкое к 1 значение на UDM и практически 0 на PAR. Высокое значение UPS означает, что модель располагает тексты с одинаковыми смыслами близко в векторном пространстве, но при этом занимает векторное пространство равномерно, а не какую-то его малую часть. Интуиция для расчёта такой метрики основана на f_score.
| Модель | UPS | TOX | MGP | Mean |
|---|---|---|---|---|
| glove-twitter-25 | 0.006 | 0.732 | 0.09 | 0.276 |
| google/flan-t5-small | 0.09 | 0.775 | 0.215 | 0.36 |
| hkunlp/instructor-base | 0.016 | 0.795 | 0.295 | 0.37 |
| intfloat/multilingual-e5-small | 0.072 | 0.82 | 0.265 | 0.386 |
| all-MiniLM-L6-v2 | 0.16 | 0.8 | 0.272 | 0.411 |
| setu4993/LaBSE | 0.176 | 0.8 | 0.24 | 0.405 |
Неожиданно, что лучшей моделью в среднем по метрикам стала all-MiniLM-L6-v2, ведь она весит меньше всех остальных и её датасет для обучения состоял только из английского языка.
*Несколько уточнений по-поводу датасетов:
Если данные поделены на train/test/val, я оставляю только train.
Часть данных в не parquet формате я перевёл в parquet для ускорения.
Я уменьшил размер toxi-text-3M с 2880667 до 37910 семплов. Ограничился 1000 семплов сверху и 100 снизу для каждого языка. Сверху, чтобы я успел провести эксперименты, а снизу, чтобы рассчеты среднего по языкам были более репрезентативны. Для возможности воспроизвести вычисления, файл с обновленным датасетом я добавлю в репозиторий. Кроме того, в ноутбуке toxic_dataset_preparation.ipynb находится полный процесс изменения датасета.
Датасет sentence_compression состоит из 180000 семплов, однако большие тексты требуют слишком много времени для вычисления, я ограничился 2000 семплов.
**Во всех метриках я испольхую KNN с параметрами: n_neighbors=11, weights='distance', metric='cosine'. Основательно параметры я не подбирал кроме числа соседей, в остальном - интуиция. На train/val я разбиваю с random_state=[0;5) и беру усреднение из 5 моделей.