Zero Shot问题是指:
有一组大量labelled data,定义为(xs,ys)
有一组少量unlabelled data,定义为(xt)
通过(xs,ys)和(xt)来预测(yt),但(xt)没有出现在(xs)中。
1. 方法一:以另一种方式分class
在语音识别任务中,每个单词可以看作是一个class。有可能要识别的单词没有出现在训练集中。
解决方法:以单词为class -> 以音位phonemes为class
phonemes是可以穷举的。
- 通过NN把语音转成phonemes。
- 通过预先定义好的table,把phonemes转成单词。
在语音识别任务中,训练集是猫、狗,测试集出现草泥马:
解决方法:以名字作为class -> 以特征作为class
- 分析图像中的动物的特征,例如毛、腿、尾等。
- 通过预先定义好的table,根据特征推测动物的名字。
2. 方法二:attribute embedding
f()将图像转成向量。
g()将特征转成向量。
f和g都通过NN训练得到,训练的目标是f(xn)和g(yn)越接近越好。
也可以用动物的名字代替特征(attribute embedding + word embedding):
定义loss function如下:
L=n∑max(0,k−f(xn)g(yn)+maxm≠nf(xn)g(yn))f∗,g∗=argf,gminL(1)(2)
目标是要最小化L。当max{}的第二项小0时,L取到最小值0。即:
f(xn)g(yn)−maxm≠nf(xn)g(yn)>k(3)
公式(3)左边第一项代表:f(xn)和g(yn)应尽量接近
公式(3)左边第二项代表:f(xn)和g(ym)应尽量远离
3. 方法三:Convex Combination of Sematic Embedding
假设有一张图像,NN的分类结果为:P(lion) = 0.5, P(tiger) = 0.5
- 找到向量Vtiger和Vlion
- 计算向量v=P(lion)Vlion+P(tiger)Vtiger
- 找到离v最近的标签,因此得到liger
- 图像分类为liger