Чтобы дать некоторый контекст, у меня нет опыта обучения моделей ML. В моем проекте все построено на .NET, поэтому мне посоветовали попробовать ML.NET для обучения моделей. Для меня это дало несколько преимуществ: во-первых, оно легко интегрируется с архитектурой .NET, поскольку является частью той же экосистемы, и мне не пришлось бы многое менять. Во-вторых, модели, обученные с помощью ML.NET, выполняют вывод очень быстро.
Однако я быстро столкнулся с серьезными проблемами:
- < li>Тренеры ML.NET представляют собой поверхностные модели и не способны
понимать контекст предложений. Например, я создал набор данных
с 200 000 строк для обнаружения угроз, ожидая приличных
результатов. К сожалению, во время тестирования я обнаружил множество ложных
положительных результатов, которых просто не должно было быть. - Основная проблема заключалась в часто используемые слова и образы. Например, в случае угроз такие шаблоны, как «Я
» или «Я
собираюсь…» часто помечались как угрозы. Это означало, что любое предложение,
начинающееся с таких шаблонов, классифицировалось неправильно, даже если оно
вообще не содержало угроз. - Чтобы решить эту проблему, я начал более тщательно балансировать набор данных. На практике это включало тестирование модели, выявление проблемных
ложных срабатываний, понимание того, почему они были неправильно классифицированы, и
создание дополнительных примеров, чтобы показать модели, что такие шаблоны
не обязательно являются угроз.
Неудивительно, что модель была очень большой.
Скорость вывода модели была значительно медленнее. чем модели ML.NET.
Затем я экспериментировал с базой DistilBERT, которая представляет собой меньшую и более быструю модель. Хотя это действительно было быстрее, я все же столкнулся с множеством ложных срабатываний. Я подозреваю, что это может быть связано либо с неправильными настройками тонкой настройки (поскольку у меня нет опыта), либо с потенциальными проблемами с самим набором данных. Тем не менее, набор данных показался мне хорошо подготовленным, поэтому я ожидал лучших результатов.
Теперь я хотел бы попросить вашего совета:
Если у кого-нибудь есть опыт классификации текста используя ML.NET, как вы добились удовлетворительных результатов?
Если я решу полностью перейти на Python, каковы мои лучшие варианты? Мне нужно что-то быстрое и способное понимать контекст в предложениях, не полагаясь исключительно на часто встречающиеся слова в наборе данных, что в противном случае привело бы к большому количеству ложных срабатываний.
Подробнее здесь: https://stackoverflow.com/questions/792 ... -and-false