Rumah >Peranti teknologi >AI >Masalah ketidakseimbangan kelas dalam klasifikasi imej
Masalah ketidakseimbangan kategori dalam pengelasan imej, contoh kod khusus diperlukan
Abstrak: Dalam tugas pengelasan imej, kategori dalam set data mungkin tidak seimbang, iaitu bilangan sampel dalam beberapa kategori adalah lebih banyak daripada yang lain. kategori . Ketidakseimbangan kelas ini boleh memberi kesan negatif kepada latihan dan prestasi model. Artikel ini akan menerangkan sebab dan kesan masalah ketidakseimbangan kelas dan menyediakan beberapa contoh kod konkrit untuk menyelesaikan masalah tersebut.
Masalah ketidakseimbangan kelas mempunyai beberapa kesan negatif ke atas latihan dan prestasi model. Pertama, disebabkan bilangan sampel yang kecil dalam beberapa kategori, model mungkin salah menilai kategori ini. Sebagai contoh, dalam masalah dua klasifikasi, bilangan sampel dalam dua kategori masing-masing adalah 10 dan 1000 Jika model tidak melakukan sebarang pembelajaran dan secara langsung meramalkan semua sampel sebagai kategori dengan bilangan sampel yang lebih besar, ketepatannya akan menjadi. sangat tinggi, tetapi pada hakikatnya Sampel tidak dikelaskan dengan berkesan. Kedua, disebabkan pengedaran sampel yang tidak seimbang, model mungkin berat sebelah ke arah meramalkan kategori dengan bilangan sampel yang lebih besar, mengakibatkan prestasi pengelasan yang lemah untuk kategori lain. Akhir sekali, pengedaran kategori yang tidak seimbang boleh menyebabkan sampel latihan model yang tidak mencukupi untuk kategori minoriti, menjadikan model yang dipelajari mempunyai keupayaan generalisasi yang lemah untuk kategori minoriti.
Undersampling merujuk kepada pemadaman secara rawak beberapa sampel daripada kategori dengan bilangan sampel yang lebih besar, supaya bilangan sampel dalam setiap kategori lebih dekat. Kaedah ini mudah dan mudah, tetapi mungkin mengakibatkan kehilangan maklumat kerana pemadaman sampel boleh menyebabkan beberapa ciri penting hilang.
Terlebih sampel merujuk kepada menyalin beberapa sampel daripada kategori dengan bilangan sampel yang lebih kecil untuk menjadikan bilangan sampel dalam setiap kategori lebih seimbang. Kaedah ini boleh meningkatkan bilangan sampel, tetapi mungkin membawa kepada masalah overfitting, kerana penyalinan sampel boleh menyebabkan model terlalu muat pada set latihan dan mempunyai keupayaan generalisasi yang lemah.
Pelarasan berat merujuk kepada pemberian berat yang berbeza kepada sampel kategori yang berbeza dalam fungsi kehilangan, supaya model memberi perhatian lebih kepada kategori dengan bilangan sampel yang lebih kecil. Kaedah ini boleh menyelesaikan masalah ketidakseimbangan kelas dengan berkesan tanpa memperkenalkan sampel tambahan. Pendekatan khusus adalah untuk melaraskan berat setiap kategori dalam fungsi kehilangan dengan menentukan vektor berat supaya kategori dengan bilangan sampel yang lebih kecil mempunyai pemberat yang lebih besar.
Berikut ialah contoh kod menggunakan rangka kerja PyTorch yang menunjukkan cara menggunakan kaedah pelarasan berat untuk menyelesaikan masalah ketidakseimbangan kelas:
import torch import torch.nn as nn import torch.optim as optim # 定义分类网络 class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.fc1 = nn.Linear(784, 100) self.fc2 = nn.Linear(100, 10) def forward(self, x): x = x.view(-1, 784) x = self.fc1(x) x = self.fc2(x) return x # 定义损失函数和优化器 criterion = nn.CrossEntropyLoss(weight=torch.tensor([0.1, 0.9])) # 根据样本数量设置权重 optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9) # 训练模型 for epoch in range(10): running_loss = 0.0 for i, data in enumerate(trainloader, 0): inputs, labels = data optimizer.zero_grad() outputs = net(inputs) loss = criterion(outputs, labels) loss.backward() optimizer.step() running_loss += loss.item() if i % 2000 == 1999: print('[%d, %5d] loss: %.3f' % (epoch + 1, i + 1, running_loss / 2000)) running_loss = 0.0 print('Finished Training')
Dalam kod di atas, pemberat dua kelas ditentukan oleh torch.tensor([0.1, 0.9])
, kelas dengan yang lebih kecil bilangan sampel Berat ialah 0.1, dan berat kategori dengan bilangan sampel yang lebih besar ialah 0.9. Ini membolehkan model memberi lebih perhatian kepada kategori dengan bilangan sampel yang lebih kecil.
Atas ialah kandungan terperinci Masalah ketidakseimbangan kelas dalam klasifikasi imej. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!