DayCardoso commited on
Commit
bfd5101
·
verified ·
1 Parent(s): 09704d5

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +164 -35
README.md CHANGED
@@ -3,58 +3,159 @@ library_name: transformers
3
  license: apache-2.0
4
  base_model: answerdotai/ModernBERT-base
5
  tags:
 
 
 
6
  - generated_from_trainer
7
  metrics:
8
  - f1
 
9
  - accuracy
10
  model-index:
11
  - name: valueeval24-modern-bert-cos
12
- results: []
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  language:
14
  - en
15
  pipeline_tag: text-classification
16
  ---
17
 
18
- <!-- This model card has been generated automatically according to the information the Trainer had access to. You
19
- should probably proofread and complete it, then remove this comment. -->
20
 
21
- # valueeval24-modern-bert-cos
22
 
23
- This model is a fine-tuned version of [answerdotai/ModernBERT-base](https://huggingface.co/answerdotai/ModernBERT-base) on [ValueEval'24](https://zenodo.org/doi/10.5281/zenodo.10396293) dataset.
24
- It achieves the following results on the evaluation set:
25
- - Loss: 0.1822
26
- - F1: 0.4181
27
- - Roc Auc: 0.6703
28
- - Accuracy: 0.28
29
 
30
- ## Model description
31
 
32
- More information needed
 
 
 
33
 
34
- ## Intended uses & limitations
35
 
36
- More information needed
37
 
38
- ## Training and evaluation data
 
 
39
 
40
- More information needed
 
 
 
41
 
42
- ## Training procedure
 
 
 
 
 
 
43
 
44
- ### Training hyperparameters
 
45
 
46
- The following hyperparameters were used during training:
47
- - learning_rate: 3e-05
48
- - train_batch_size: 8
49
- - eval_batch_size: 8
50
- - seed: 42
51
- - optimizer: Use adamw_torch with betas=(0.9,0.999) and epsilon=1e-08 and optimizer_args=No additional optimizer arguments
52
- - lr_scheduler_type: cosine
53
- - lr_scheduler_warmup_ratio: 0.01
54
- - num_epochs: 20
55
- - mixed_precision_training: Native AMP
56
 
57
- ### Training results
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
 
59
  | Training Loss | Epoch | Step | Validation Loss | F1 | Roc Auc | Accuracy |
60
  |:-------------:|:-----:|:-----:|:---------------:|:------:|:-------:|:--------:|
@@ -62,17 +163,45 @@ The following hyperparameters were used during training:
62
  | 0.0771 | 2.0 | 5766 | 0.0871 | 0.3997 | 0.6464 | 0.2675 |
63
  | 0.0494 | 3.0 | 8649 | 0.0970 | 0.3983 | 0.6513 | 0.2757 |
64
  | 0.025 | 4.0 | 11532 | 0.1187 | 0.4085 | 0.6699 | 0.2805 |
65
- | 0.0132 | 5.0 | 14415 | 0.1315 | 0.4296 | 0.6834 | 0.2849 |
66
  | 0.0077 | 6.0 | 17298 | 0.1478 | 0.4066 | 0.6707 | 0.2668 |
67
  | 0.0044 | 7.0 | 20181 | 0.1619 | 0.4123 | 0.6716 | 0.2734 |
68
  | 0.0029 | 8.0 | 23064 | 0.1705 | 0.4124 | 0.6653 | 0.275 |
69
  | 0.0022 | 9.0 | 25947 | 0.1766 | 0.4082 | 0.6626 | 0.2764 |
70
  | 0.0014 | 10.0 | 28830 | 0.1822 | 0.4181 | 0.6703 | 0.28 |
71
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
 
73
- ### Framework versions
74
 
75
- - Transformers 4.53.0
76
- - Pytorch 2.5.1+cu121
77
- - Datasets 3.6.0
78
- - Tokenizers 0.21.2
 
3
  license: apache-2.0
4
  base_model: answerdotai/ModernBERT-base
5
  tags:
6
+ - text-classification
7
+ - multi-label-classification
8
+ - human-values
9
  - generated_from_trainer
10
  metrics:
11
  - f1
12
+ - roc_auc
13
  - accuracy
14
  model-index:
15
  - name: valueeval24-modern-bert-cos
16
+ results:
17
+ - task:
18
+ type: text-classification
19
+ name: Multi-label Text Classification
20
+ dataset:
21
+ name: ValueEval'24
22
+ type: valueeval24
23
+ config: en
24
+ metrics:
25
+ - name: F1 (micro)
26
+ value: 0.4296
27
+ type: f1
28
+ - name: ROC AUC (micro)
29
+ value: 0.6834
30
+ type: roc_auc
31
+ - name: Accuracy
32
+ value: 0.2849
33
+ type: accuracy
34
  language:
35
  - en
36
  pipeline_tag: text-classification
37
  ---
38
 
39
+ # Modelo de Classificação de Valores: ModernBERT em ValueEval'24
 
40
 
41
+ Este repositório contém o modelo `answerdotai/ModernBERT-base` após passar por um processo de ajuste fino (fine-tuning) para a tarefa de classificação de texto multirr rótulo (multi-label) do shared task [ValueEval'24](https://zenodo.org/doi/10.5281/zenodo.10396293).
42
 
43
+ O modelo foi treinado para identificar 19 valores humanos fundamentais (baseados na Teoria de Valores Humanos Básicos de Schwartz) em sentenças em inglês. Como é uma tarefa multirr rótulo, uma única sentença pode ser associada a múltiplos valores simultaneamente.
 
 
 
 
 
44
 
45
+ O melhor checkpoint, com base na métrica F1 no conjunto de validação, alcançou os seguintes resultados:
46
 
47
+ * **Loss**: 0.1315
48
+ * **F1 (micro)**: 0.4296
49
+ * **ROC AUC (micro)**: 0.6834
50
+ * **Accuracy**: 0.2849
51
 
52
+ ## Como Usar
53
 
54
+ Para usar este modelo para inferência, você pode utilizar o pipeline `text-classification` da biblioteca `transformers`. O código abaixo demonstra como obter as predições para uma nova sentença.
55
 
56
+ ```python
57
+ from transformers import pipeline, AutoTokenizer, AutoModelForSequenceClassification
58
+ import torch
59
 
60
+ # Carregue o modelo e o tokenizer
61
+ model_name = "DayCardoso/valueeval24-modern-bert-cos"
62
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
63
+ model = AutoModelForSequenceClassification.from_pretrained(model_name)
64
 
65
+ # Crie o pipeline de classificação
66
+ classifier = pipeline(
67
+ "text-classification",
68
+ model=model,
69
+ tokenizer=tokenizer,
70
+ return_all_scores=True # Importante para multirr rótulo
71
+ )
72
 
73
+ # Exemplo de uso
74
+ text = "She always tries to help people, even strangers. Her door is always open to those in need."
75
 
76
+ # A saída do pipeline precisa ser processada com uma função sigmoid
77
+ # para converter os logits em probabilidades independentes para cada classe.
78
+ outputs = classifier(text)
 
 
 
 
 
 
 
79
 
80
+ # Mapeamento de rótulos (verifique o arquivo de configuração do modelo para a lista completa e ordem correta)
81
+ labels = model.config.id2label
82
+
83
+ # Defina um limiar para considerar um rótulo como positivo
84
+ threshold = 0.5
85
+
86
+ print(f"Analisando texto: '{text}'\n")
87
+ print("Valores identificados (probabilidade > 50%):")
88
+ for output in outputs[0]:
89
+ label_name = output['label']
90
+ score = torch.sigmoid(torch.tensor(output['score'])).item() # Aplica sigmoid
91
+ if score > threshold:
92
+ print(f"- {label_name}: {score:.4f}")
93
+
94
+ ````
95
+
96
+ ## Detalhes do Treinamento
97
+
98
+ ### A Tarefa: ValueEval'24
99
+
100
+ A tarefa ValueEval'24 foca na identificação de valores humanos em textos. A tarefa envolve a classificação de um texto em uma ou mais das 19 categorias de valores humanos definidas pelos organizadores. Cada valor é definido por um objetivo específico e uma motivação, conforme detalhado abaixo:
101
+
102
+ | Nome do Valor | Objetivo |
103
+ |:-----------------------------|:--------------------------------------------------------------------------------------|
104
+ | Self-direction: thought | Liberdade para cultivar as próprias ideias e habilidades. |
105
+ | Self-direction: action | Liberdade para determinar as próprias ações. |
106
+ | Stimulation | Excitação, novidade e mudança. |
107
+ | Hedonism | Prazer e gratificação sensual. |
108
+ | Achievement | Sucesso de acordo com os padrões sociais. |
109
+ | Power: dominance | Poder através do exercício de controle sobre as pessoas. |
110
+ | Power: resources | Poder através do controle de recursos materiais e sociais. |
111
+ | Face | Segurança e poder através da manutenção da imagem pública e evitando humilhação. |
112
+ | Security: personal | Segurança no ambiente imediato. |
113
+ | Security: societal | Segurança e estabilidade na sociedade em geral. |
114
+ | Tradition | Manter e preservar tradições culturais, familiares ou religiosas. |
115
+ | Conformity: rules | Conformidade com regras, leis e obrigações formais. |
116
+ | Conformity: interpersonal | Evitar chatear ou prejudicar outras pessoas. |
117
+ | Humility | Reconhecer a própria insignificância no esquema geral das coisas. |
118
+ | Benevolence: caring | Devoção ao bem-estar dos membros do grupo de pertença (in-group). |
119
+ | Benevolence: dependability | Ser um membro confiável e fidedigno do grupo de pertença (in-group). |
120
+ | Universalism: concern | Compromisso com a igualdade, justiça e proteção para todas as pessoas. |
121
+ | Universalism: nature | Preservação do ambiente natural. |
122
+ | Universalism: tolerance | Aceitação e compreensão daqueles que são diferentes de si mesmo. |
123
+
124
+ ### Dados de Fine-Tuning
125
+
126
+ O ajuste fino foi realizado utilizando os arquivos `augmented_sentences_labeled.tsv` e `labels_labeled.tsv` do dataset oficial. A natureza "aumentada" dos dados sugere que técnicas de data augmentation podem ter sido aplicadas para melhorar a robustez do modelo.
127
+
128
+ ### Pré-processamento
129
+
130
+ O tokenizer de `answerdotai/ModernBERT-base` foi adaptado para a tarefa. Tokens especiais (um para cada rótulo de valor, ex: `<Benevolence: caring>`) foram adicionados ao vocabulário. Esta técnica pode ajudar o modelo a criar representações distintas para cada classe, melhorando o foco durante a classificação. Os textos foram truncados e preenchidos (padded) para um comprimento máximo de 512 tokens.
131
+
132
+ ### Procedimento de Fine-Tuning
133
+
134
+ O modelo `ModernBERT-base` pré-treinado foi ajustado usando a API `Trainer` do `transformers`. Os hiperparâmetros e a configuração foram os seguintes:
135
+
136
+ * **Modelo**: `AutoModelForSequenceClassification`
137
+ * **Problem Type**: `multi_label_classification`
138
+ * **Otimizador**: AdamW com `learning_rate` de `3e-5`
139
+ * **LR Scheduler**: `cosine` com `warmup_ratio` de 0.01
140
+ * **Épocas**: 20 (com parada antecipada)
141
+ * **Batch Size**: 8 por dispositivo
142
+ * **Precisão**: Mista (FP16)
143
+ * **Callback**: `EarlyStoppingCallback` monitorando a métrica `f1` com uma paciência de 5 épocas para prevenir overfitting.
144
+
145
+ ## Avaliação
146
+
147
+ ### Métricas Finais
148
+
149
+ O desempenho final é reportado usando o checkpoint que obteve o maior F1 Score no conjunto de validação, que ocorreu na **Época 5**.
150
+
151
+ * **Métrica Principal (F1 micro)**: **0.4296**
152
+ * **ROC AUC (micro)**: 0.6834
153
+ * **Accuracy**: 0.2849
154
+ * **Validation Loss**: 0.1315
155
+
156
+ ### Trajetória de Desempenho
157
+
158
+ A tabela abaixo mostra a evolução das métricas no conjunto de validação a cada época. O treinamento foi interrompido após a época 10, pois a métrica `f1` não melhorou por 5 épocas consecutivas após seu pico na época 5. Graças ao uso de `load_best_model_at_end=True`, o modelo salvo e reportado aqui é o da Época 5.
159
 
160
  | Training Loss | Epoch | Step | Validation Loss | F1 | Roc Auc | Accuracy |
161
  |:-------------:|:-----:|:-----:|:---------------:|:------:|:-------:|:--------:|
 
163
  | 0.0771 | 2.0 | 5766 | 0.0871 | 0.3997 | 0.6464 | 0.2675 |
164
  | 0.0494 | 3.0 | 8649 | 0.0970 | 0.3983 | 0.6513 | 0.2757 |
165
  | 0.025 | 4.0 | 11532 | 0.1187 | 0.4085 | 0.6699 | 0.2805 |
166
+ | **0.0132** | **5.0** | **14415** | **0.1315** | **0.4296** | **0.6834** | **0.2849** |
167
  | 0.0077 | 6.0 | 17298 | 0.1478 | 0.4066 | 0.6707 | 0.2668 |
168
  | 0.0044 | 7.0 | 20181 | 0.1619 | 0.4123 | 0.6716 | 0.2734 |
169
  | 0.0029 | 8.0 | 23064 | 0.1705 | 0.4124 | 0.6653 | 0.275 |
170
  | 0.0022 | 9.0 | 25947 | 0.1766 | 0.4082 | 0.6626 | 0.2764 |
171
  | 0.0014 | 10.0 | 28830 | 0.1822 | 0.4181 | 0.6703 | 0.28 |
172
 
173
+ ## Usos Pretendidos & Limitações
174
+
175
+ **Uso Pretendido**: Este modelo é destinado à pesquisa acadêmica e a aplicações que buscam analisar o conteúdo de textos (como postagens de mídia social ou artigos de notícias) para identificar os valores humanos que estão sendo expressos.
176
+
177
+ **Limitações**:
178
+
179
+ * **Especificidade de Domínio**: O modelo foi treinado em dados do ValueEval'24 e pode não generalizar bem para domínios textuais muito diferentes.
180
+ * **Vieses Herdados**: O modelo pode refletir vieses linguísticos e sociais presentes tanto no corpus de pré-treinamento do ModernBERT quanto no dataset de fine-tuning.
181
+ * **Interpretação**: O modelo identifica a *expressão* de um valor no texto, o que não é necessariamente um reflexo dos valores pessoais do autor.
182
+ * **Tamanho do Modelo**: Sendo um modelo de tamanho `base`, pode ter um desempenho inferior a modelos maiores (`large`) em tarefas com alta complexidade semântica.
183
+
184
+ ## Citação
185
+
186
+ Se você usar este modelo ou o dataset em sua pesquisa, por favor, cite o trabalho original do ValueEval'24:
187
+
188
+ ```bibtex
189
+ @inproceedings{kiesel-etal-2024-semeval,
190
+ title = "Sem{E}val-2024 Task 3: The {V}alue{E}val 2.0 Shared Task on Identifying Human Values Behind Arguments",
191
+ author = "Kiesel, Johannes and ....",
192
+ booktitle = "Proceedings of the 18th International Workshop on Semantic Evaluation (SemEval-2024)",
193
+ year = "2024"
194
+ }
195
+ ```
196
+
197
+ ### Versões das Frameworks
198
+
199
+ - Transformers 4.53.0
200
+ - Pytorch 2.5.1+cu121
201
+ - Datasets 3.6.0
202
+ - Tokenizers 0.21.2
203
 
204
+ <!-- end list -->
205
 
206
+ ```
207
+ ```