File size: 3,199 Bytes
a3358f9
 
 
 
 
 
 
 
9a96a1f
a3358f9
 
 
 
 
197d761
 
 
 
 
 
 
 
 
 
 
 
 
 
 
06a006c
 
 
 
197d761
 
 
 
 
 
 
 
 
 
 
3b932f0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
---
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`, улучшило бы результаты.