我有一个NLP/text数据分类问题,其中有一个非常偏斜的分布- class 0 - 98%, class 1 - 2%用于我的训练和验证数据,我正在做过抽样,我的类分布是class 0 - 55%, class 1 - 45%。测试数据有偏差分布。
我使用nn.BCEWithLogitsLoss(pos_weight=tensor(1.2579, device='cuda:0'))构建了一个模型。pos_weight的计算采用55/45 (训练数据中的类分布)。
在我的1级测试数据中,我得到了f1的0.07,true negatives, false positives, false negative, true positive = (28809, 13258, 537, 495)的性能。
我用下面的代码变成了焦点丢失,我的性能没有得到很大的改善。1级测试数据上的f1仍然是相同的,而true negatives, false positives, false negative, true positive = (32527, 9540, 640, 392)
kornia.losses.binary_focal_loss_with_logits(probssss, labelsss,alpha=0.25,gamma=2.0,reduction='mean')
nn.BCEWithLogitsLoss(pos_weight=tensor(1.2579, device='cuda:0')),我是否应该为pos_weight使用任何其他值?请记住,我的目标是为测试数据类1 f1 获得最大的性能。
#更新
我正在构建一个CNN使用手套嵌入-我拿我的文字,并找到他们的手套嵌入-我正在删除所有标点符号,除此之外,没有其他主要的数据清洗。我对调整焦距损失的参数-α和γ很感兴趣。
我的模型如下
class CNN(nn.Module):
def __init__(self,
pretrained_embedding,
embed_dim,
filter_sizes,
num_filters,
fc1_neurons,
fc2_neurons,
dropout):
super(CNN, self).__init__()
# Embedding layer
self.vocab_size, self.embed_dim = pretrained_embedding.shape
self.embedding = nn.Embedding.from_pretrained(pretrained_embedding,
freeze=True)
# Conv Network
self.conv1d_list = nn.ModuleList([
nn.Conv1d(in_channels=self.embed_dim,
out_channels=num_filters[i],
kernel_size=filter_sizes[i])
for i in range(len(filter_sizes))
])
#Batchnorm
self.batch_norm1 = nn.BatchNorm1d(num_filters[0] * len(filter_sizes))
# Dropout Layer
self.dropout = nn.Dropout(p=dropout)
# RELU activation function
self.relu = nn.ReLU()
# Fully-connected layers
# self.fc1 = nn.Linear(np.sum(num_filters), fc1_neurons)
self.batch_norm2 = nn.BatchNorm1d(num_filters)
self.fc2 = nn.Linear(np.sum(num_filters), fc2_neurons)
self.batch_norm3 = nn.BatchNorm1d(fc2_neurons)
self.fc3 = nn.Linear(fc2_neurons, 1)发布于 2022-03-25 22:55:53
我认为比这些参数值更重要的是如何训练这些特性。你是从地面训练NLP模型,即只在你的文本上进行培训,还是使用部分预先培训的模式?根据你的样品尺寸,我建议采用后者。
发布于 2022-04-01 12:14:40
我认为你应该尝试LSTM,GRU,或基于变形金刚的方法。我会推荐变压器模型,如伯特,迪斯蒂伯特,罗伯塔等。你可以从零训练或使用预先训练微调它。它将给你一个更好的F1评分比基于CNN的方法。
此外,您还可以尝试添加类权重。这可能有助于提高准确度。
https://stackoverflow.com/questions/71591088
复制相似问题