|
--- |
|
title: Article Sphere Classification |
|
emoji: 🐠 |
|
colorFrom: indigo |
|
colorTo: blue |
|
sdk: streamlit |
|
sdk_version: 1.44.1 |
|
app_file: app.py |
|
pinned: false |
|
short_description: Define article sphere by it's name and abstract |
|
--- |
|
|
|
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference |
|
|
|
# Article Theme Classifier |
|
|
|
## Описание |
|
|
|
Данный проект представляет собой модель для классификации тем статей, исходя из их названия и аннотации (abstract). Одно из этих полей обязательно для работы программы. Модель позволяет выбрать кумулятивный threshold для предсказания наиболее вероятных тем. |
|
|
|
## Архитектура модели |
|
|
|
В качестве основы для классификации была использована модель `distilbert-base-cased`. На эту модель был добавлен классификатор, состоящий из двух линейных слоев: |
|
|
|
1. Линейный слой (с размером выходного пространства 256), за которым следует активация ReLU. |
|
2. Линейный слой (с выходом на 8 классов), с активацией LogSoftmax. |
|
|
|
## Используемая loss функция |
|
|
|
Для обучения модели была использована loss функция `nn.KLDivLoss'. |
|
Дообучал только добавленные слои. |
|
|
|
Также пробавал обучить всю модель с MSE loss. При этом модель запомнила средние вероятности и не меняла предсказания от изменения входных данных. |
|
|
|
## Датасет |
|
|
|
Модель обучалась на предложенном Kaggle датасете "neelshah18/arxivdataset". |
|
|
|
## Проблемы и ограничение модели |
|
|
|
Несмотря на использование сильной основы, результаты модели оказались не очень хорошими. Возможные причины: |
|
|
|
1. **Выбор модели**: Использованная модель `distilbert-base-cased` является сравнительно небольшой и может не иметь достаточной мощности для более сложных задач классификации. |
|
2. **Размер входных данных**: Для модели был установлен небольшой `MAX_LENGTH`, что ограничивает количество информации, которую модель может обработать. |
|
3. **Выбор loss функции**: `KLDivLoss` не всегда является оптимальным выбором для классификационных задач. Возможно, использование другой loss функции, например, `CrossEntropyLoss`, улучшило бы результаты. |