說到小樣本學習一定要先看Meta Learning
MAML算法提供一個模型無關計算框架,怎麼做到模型無關,主要是loss計算不同,計算框架類似adaboost,裏面可以換各種算法
Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks
原始論文必看
meta.py的forward可以看出loss的計算
for k in range(1, self.update_step):
# 1. run the i-th task and compute loss for k=1~K-1
logits = self.net(x_spt[i], fast_weights, bn_training=True)
loss = F.cross_entropy(logits, y_spt[i])
# 2. compute grad on theta_pi
grad = torch.autograd.grad(loss, fast_weights)
# 3. theta_pi = theta_pi - train_lr * grad
fast_weights = list(map(lambda p: p[1] - self.update_lr * p[0], zip(grad, fast_weights)))
logits_q = self.net(x_qry[i], fast_weights, bn_training=True)
# loss_q will be overwritten and just keep the loss_q on last update step.
loss_q = F.cross_entropy(logits_q, y_qry[i])
losses_q[k + 1] += loss_q
FEW-SHOT TEXT CLASSIFICATION WITH Distributional signature
實踐比較好的小樣本學習算法
代碼見論文中