Comments 4
@Tumbao, извиняюсь мисскликнул и отклонил комментарий.
Спасибо за отличный и очень правильный вопрос. Вы абсолютно правы, исторически RNN/LSTM — это "золотой стандарт" для работы с последовательностями, и это был первый подход, который я рассматривал.
Однако для задачи классификации целого текста (а не, скажем, sequence-to-sequence перевода) архитектуры на базе CNN (в частности, 1D-сверток) показывают себя на удивление хорошо, и у них есть несколько ключевых преимуществ, которые для меня были решающими:
Параллелизм и скорость: В отличие от рекуррентных сетей, которые должны обрабатывать текст последовательно, слово за словом, свертки могут обрабатывать все n-граммы в тексте параллельно. Это делает и обучение, и инференс значительно быстрее.
Извлечение ключевых признаков: Идея в том, что свертка работает как "детектор n-грамм". Она "скользит" по тексту и ищет ключевые комбинации слов ("ты ведешь себя как", "полный дурак"), которые являются сильными сигналами токсичности, независимо от их положения в предложении. Для задачи классификации этого часто бывает более чем достаточно.
Простота и легковесность: CNN-архитектура для текста часто получается проще, имеет меньше параметров и быстрее сходится, чем сложная LSTM-модель.
Этот подход — не моя выдумка, а хорошо известный метод, который был популяризирован, например, в статье Yoon Kim "Convolutional Neural Networks for Sentence Classification".
В моем проекте, где одной из главных целей были скорость на CPU и легковесность модели, именно CNN оказалась идеальным компромиссом между качеством и производительностью.
Надеюсь, я смог прояснить ход своих мыслей! Еще раз спасибо за интересный вопрос.
Я, к сожалению, мало что понял в этой статье ввиду своей неопытности, однако читать её было очень интересно.
Надеюсь, через год я смогу понять всё, что здесь написано...
А почему не Transformer или вообще экзотика в виде семейства NEAT?
Спасибо за вопрос! Все дело в целях проекта. Главной задачей было создание сверхлегкой (<10 МБ) и быстрой модели для CPU. CNN — это проверенный и самый эффективный инструмент именно для этого. Трансформеры были бы слишком тяжелыми, а нейроэволюция (NEAT) — избыточно сложной для такой классической задачи.
Путь к Computer Vision: Чему меня научил простой NLP-классификатор на 5 МБ