В последние годы прогресс в NLP принято измерять количеством параметров — чем больше, тем лучше. Однако для узкоспециализированных задач это не всегда оправдано. Мы исследовали, можно ли заранее, ещё до обучения, определить оптимальный размер модели на основе структуры данных.
Гипотеза и подход
Мы выдвинули гипотезу: структура текстов предметной области, отражённая в графе со-встречаемости слов, определяет минимально необходимую архитектуру трансформера. Вместо того чтобы выбирать модель «на глаз», мы предложили метод, при котором гиперпараметры выводятся из метрик графа.
Эксперимент проводился на задаче классификации приоритета студенческих запросов в университете. Мы прошли полный цикл — от анализа текстов до обучения и сравнения моделей разного размера — и показали, что минимальная модель, спроектированная на основе графа, достигает идеальной точности, превосходя более крупные аналоги в эффективности в десятки раз.
Данные и предобработка
В качестве датасета использовали 5000 студенческих обращений из файла university_query_train.csv. Каждое включало текст запроса, департамент и метку приоритета: High, Medium, Low. Задача — классификация по трём уровням срочности.
На этапе предобработки отказались от предобученных эмбеддингов и стоп-слов. Построили собственный словарь, включив только токены, встречающиеся не менее двух раз. В итоге получили 90 уникальных токенов — «чистый» язык предметной области.
Построение и анализ графа со-встречаемости
Граф строился с помощью библиотеки NetworkX: вершины — слова, рёбра — со-встречаемость в окне из пяти слов. Полученные метрики:
- Узлов: 86
- Рёбер: 824
- Плотность: 0,225 — граф достаточно связный
- Средняя степень узла: 19,16 — у каждого слова в среднем 19 соседей
- Коэффициент кластеризации: 0,617 — высокий, слова образуют устойчивые тематические группы
- Диаметр графа: 4 — максимальное расстояние между любыми двумя словами составляет всего 4 шага
Это говорит о высокой компактности и связности предметной области: информация передаётся через небольшое число промежуточных слов.
Переход от графа к архитектуре модели
Мы разработали эвристический метод перевода графовых метрик в гиперпараметры трансформера:
- Размер словаря (vocab_size): равен числу узлов — 86.
- Размерность эмбеддингов (d_model): зависит от средней степени и кластеризации.
- Минимальная архитектура: 8 × log₂(avg_degree) × (1 + clustering) ≈ 55
- Оптимальная: 20 × avg_degree × (1 + clustering × 0,5) ≈ 512
- Количество слоёв (num_layers): определяется диаметром графа.
- Минимальное: ceil(diameter / 3) ≈ 2
- Оптимальное: diameter + 2 ≈ 6
- Количество голов внимания (nhead): коррелирует с алгебраической связностью графа. Выбирается в диапазоне от 2 до 8.
Эксперимент и результаты
Были обучены три модели: минимальная (75K параметров), промежуточная и стандартная. Все использовали кросс-энтропийную функцию потерь и оптимизатор AdamW.
- Минимальная модель достигла точности Accuracy = 1,0 всего за пять эпох.
- Промежуточная и стандартная также показали идеальный результат, но требовали значительно больше ресурсов и времени.
Все модели справились с задачей, но минимальная оказалась в 43 раза эффективнее по количеству параметров.
Практические выводы
Эксперимент подтверждает: для специализированных задач избыточные параметры не улучшают качество, но резко увеличивают затраты. Граф со-встречаемости — это не просто аналитический инструмент, а основа для осознанного проектирования моделей.
- Граф со-встречаемости отражает структуру предметной области. Его метрики дают понимание сложности и связности данных.
- Размер модели должен соответствовать сложности данных. Для плотных и компактных графов крупные трансформеры избыточны.
- Экономия может быть колоссальной: в нашем случае модель сократилась в десятки раз без потери качества. Это снижает затраты на вычисления и позволяет запускать модели на устройствах с ограниченными ресурсами.
Рекомендации для разработчиков
Чтобы спроектировать эффективную модель:
- Постройте граф со-встречаемости для вашего корпуса.
- Вычислите ключевые метрики: avg_degree, clustering, diameter, algebraic_connectivity.
- Используйте их для расчёта гиперпараметров:
- d_model = k × avg_degree × (1 + clustering), где k = 8 (минимум) или 20 (оптимум)
- num_layers = ceil(diameter / 3) (минимум), с возможным увеличением на 2–3 слоя
- nhead от 2 до 8 — чем выше кластеризация, тем больше голов
Такой подход позволяет проектировать модели, в которых выбор архитектуры диктуется не модой, а математикой и структурой данных.