O conjunto de dados usado neste experimento é o conjunto de dados DpgMedia2019: A Dutch News Dataset for Partisanship Detection.
Ele contém várias partes, mas a parte principal que uso neste repositório é um subconjunto dos artigos de notícias originais de 104K. Para cada artigo há um rótulo 'partidário' informando se o artigo é partidário ou não (Verdadeiro/Falso). A quantidade de artigos partidários/apartidários é aproximadamente equilibrada.
O conjunto de dados foi criado pelos autores com o objetivo de contribuir, por exemplo, para a criação de um detector de notícias partidárias. No código python usado nos experimentos, os arquivos específicos do conjunto de dados são baixados automaticamente.
Confira o github e o artigo para obter mais informações sobre o conjunto de dados e como ele foi construído. Consulte as Referências para obter informações.
OBSERVAÇÃO !! Em janeiro de 2023, nem todos os arquivos estavam mais disponíveis no local original do conjunto de dados no GitHub. Se você precisar dos arquivos originais, baixe-os do conjunto de dados Kaggle.
Os subconjuntos de treinamento e validação usados neste repositório estão disponíveis na pasta ‘data’.
No notebook 'Prepare_Train_and_Validation_Datasets.ipynb', o conjunto de dados completo será dividido em subconjuntos menores que são usados para treinamento e validação.
Esses arquivos estão disponíveis na pasta ‘data’ deste repositório.
As principais razões para criar subconjuntos menores de dados são que um modelo GPT (ou outro LLM) precisa apenas de alguns milhares de amostras para realizar o ajuste fino neles. Conjuntos de dados menores também significam menos tokens e uma fatura menor para seu cartão de crédito ;-)
Os subconjuntos menores têm os seguintes valores de amostra:
Os seguintes modelos regulares do Transformer foram treinados e validados no notebook 'Transformer_Model_Training_And_Validation.ipynb' nos subconjuntos menores de dados de treinamento e validação:
Os modelos PolyLM 1.7B e OpenLLaMA 7B V2 Open LLM foram pré-treinados em conjuntos de dados multilíngues que também continham o idioma holandês.
No notebook 'Open_LLM_Training_And_Validation.ipynb' os modelos Open LLM são quantizados em 4 bits e ajustados com uma configuração QLoRA para minimizar o consumo de memória da GPU.
O LoraConfig está definido com classificação 64 e alfa 16.
Após o treinamento, o modelo PolyLM 1.7B atinge uma precisão no conjunto de validação de 84,4%, enquanto o modelo OpenLLaMA 7B V2 atinge até 89,5%.
Fiz vários treinos e em várias ocasiões ambos os modelos pontuaram até 0,5% acima ou abaixo em comparação com o valor mencionado acima.
O código para ajuste fino do GPT-3.5 pode ser encontrado no notebook 'Finetune_GPT-3.5.ipynb'. Com base nos arquivos CSV de treinamento e validação, arquivos específicos são criados e carregados no OpenAI que são usados para ajustar o modelo GPT-3.5. Os artigos de notícias são agrupados em um prompt específico projetado para a classificação que gostaríamos que o modelo aprendesse por meio do ajuste fino.
O código de validação está disponível no notebook 'Validate_GPT-3.5.ipynb'. para cada registro no conjunto de validação, o texto da notícia é agrupado no prompt e o OpenAI é chamado por meio da API para obter a resposta da conclusão do chat. A resposta é convertida para um rótulo binário e com os rótulos de verdade o relatório de classificação final é gerado.
O modelo OpenAI GPT-3.5 ajustado atinge uma precisão no conjunto de validação de 89,4%.
Observe que usei OpenAI para ajuste fino e validação e não Azure OpenAI.
Na versão mais recente (5 de dezembro de 2023) deste notebook fiz as seguintes atualizações:
Encontre abaixo as pontuações de precisão alcançadas no conjunto de validação para os 3 modelos Transformer e o modelo GPT-3.5.
O modelo GPT-3.5 atinge uma pontuação de alta precisão após o ajuste fino.
O desempenho dos 3 modelos Transformer ficou um pouco atrás. Eles claramente se beneficiariam com o treinamento em mais amostras de dados.
O Open LLM PolyLM atinge a pontuação mais baixa. O modelo OpenLLaMA 7B V2, entretanto, atinge uma pontuação notável de 89,5%, que é comparável às pontuações alcançadas pelos modelos ajustados GPT-3.5 Turbo (0613 e 1106).
(LLM) Tipo de modelo | Pontuação de precisão de validação (%) |
---|---|
PoliLM 1.7B (Lora: r = 64) | 84,4 |
DistilBert multilíngue | 85,6 |
Bert multilíngue | 86,3 |
DeBERTa V3 multi-linqual | 85,8 |
OpenLLaMA 7B V2 (Lora: r = 64) | 89,5 |
GPT-3.5 Turbo 0613 (ajustado) | 90,8 |
GPT-3.5 Turbo 1106 (ajustado) | 89,4 |
GPT-3.5 Turbo 1106 (aprendizado em contexto) | 56,0 |
!! DeBERTa V3 multi-linqual (conjunto de dados completo) | 95,2 |
@misc{1908.02322,
Author = {Chia-Lun Yeh and Babak Loni and Mariëlle Hendriks and Henrike Reinhardt and Anne Schuth},
Title = {DpgMedia2019: A Dutch News Dataset for Partisanship Detection},
Year = {2019},
Eprint = {arXiv:1908.02322},
}