один большой нюанс - классы находятся в пятиуровневой иерархии, если развернуть в один, то количество доходит до 300000. Классификация осуществляется на основе текстового фрагмента, влезающего преимущественно в 1000 токенов. Мне кажется, что бертоподобное семейство такой размер выхода не потянет и не хотелось бы создавать модель на каждый уровень иерархии, мб есть какие то альтернативы по типу seq2seq (фрагмент текста на входе, "уровень 1->уровень 2->...-> уровень 5 на выходе"). Обучающая выборка большая, около миллиона примеров. Спасибо!
Да, seq2seq звучит как неплохая идея. Мне кажется, можно попробовать собрать свой encoder-decoder (например, на базе hf), причем энкодер инициализировать чем-нибудь предобученным BERT-подобным, а в декодере создать словарь из меток классов всех иерархий, и обучить всё это на генерировать по тексту последовательностью уточняемых меток классов. Во время инференса всё это дело можно ограничивать на каждом шаге, так, чтобы генерировались только валидные последовательности меток (готового кода я для этого не знаю, но несложно накостылить свой, вычитающий 100500 из логитов неподходящих меток на каждом шаге генерации). (disclaimer: сам я так делать не пробовал)
Спасибо за ответ!🤝
Эмбеддинги, триплет лосс, класс выбирать по ближайшим соседям по всей выборке? Вангую что иерархия классов регулярно обновляется, и базу будет проще обновлять чем классификатор переучивать (хотя конечно эмбеддинги тоже надо будет тюнить периодически).
Иерархия не меняется, что не может не радовать)
Что за классы/задача - секрет?
В любом случае, красный круг/заход солнца😀, было б интересно как у вас получится лучше всего Сделать плоской классификатор уж точно будет хорошим бейзлайном
Привет. Кодировать все 5 уровней как 1. В бертоподобное тоже влезет но можно начать с fasttext. По опыту (трёхуровневая иерархия) могу сказать, что ещё полезно отдельно учить классификатор 1-ой иерархии и n-ой иерархии, если их возможно разбить на крупные категории. Но только для "проверки" ответа основой модели, не для ансамбля. Хорошее дополнение к порогам уверенности, если важна точность в ущерб тому что придется отсекать. 300к, классов, но что по персентилям? Нет такого, что тыща классов составляет 95% выборки? Выше предлагают совсем другие подходы, хорошие, но если дочерние узлы иерархии можно на крупные категории разбивать, то это очень полезная информация и надо ее кодировать
По перцентилям сложно сказать - скорее всего количество придется выравнивать искусственно
По каким петцентилям? Что вы имеете в виду
Обсуждают сегодня