多余的元学习废话也不多说,直接上干货:
算法:
关于学习率:
两个学习率a、b,要知道,为了一步优化探测task最优参数的位置(inner loop),我们必须使用稍微大点的学习率a,这叫一步到位。
而优化你真正模型参数的学习率应该是很小的(outer loop),因为他必须在参数空间中经过漫长的迭代,慢慢找到最合适的位置。
关于损失函数:分类交叉熵,回归MSE
关于1阶和2阶的MAML:
首先,Nway K shot ,support set 和query set的知识就不介绍了。
看这个图,训练的过程中,在每一个task中(上面算法中的4-6),我们在support set 上由g1得到θm,在query set 上由θm得到loss,如果一个meta_batch(内循环)里面有多个task,我们是需要将这些task的loss求和,然后在外循环中更新模型参数(就是上面算法的第8步),此时φ0变为了φ1,然后一步一步走外循环的迭代。这是正向。
那求梯度呢?L1’(φ1) =L1’(φ0) *