我通过互联网阅读并发现了这一点:
大多数持续学习研究都集中在多任务场景上,其中需要相同的模型来逐步学习许多孤立的任务,而不会忘记之前的任务。
他们解释说 PermutedMNIST 是多任务。我不知道为什么?
换句话说,
单增量任务考虑本质上是增量的单个任务。换句话说,我们仍然按顺序添加新类,但分类问题是唯一的,在计算准确度时,我们需要区分目前遇到的所有类。
但是,我还是不能澄清这两个定义?有人可以帮我,给我多任务场景和单增量任务场景的例子。
我通过互联网阅读并发现了这一点:
大多数持续学习研究都集中在多任务场景上,其中需要相同的模型来逐步学习许多孤立的任务,而不会忘记之前的任务。
他们解释说 PermutedMNIST 是多任务。我不知道为什么?
换句话说,
单增量任务考虑本质上是增量的单个任务。换句话说,我们仍然按顺序添加新类,但分类问题是唯一的,在计算准确度时,我们需要区分目前遇到的所有类。
但是,我还是不能澄清这两个定义?有人可以帮我,给我多任务场景和单增量任务场景的例子。
TL;DR/总结:类(,,下面)在多任务中可以是任何东西(可能是,, 等等)。在增量中,我们获取标签(以及来自公共集合的数据,(即,根据子集的定义)
这只是定义的解释问题。这些定义看起来非常相似,但细节很重要。
假设模型可以区分类的上键数:例如,它是一个具有输出层中的神经元和类数 () 在大多数类的任务中是(多任务)或类总数() 也是(单增量任务);我们可以说:
在这里,我们将随着时间的推移在不同的任务上训练模型,这通常称为强化学习。在半 python 伪代码中(其中.train已经包括交叉验证之类的东西):
model = Whatever(...)
X1 = [[1, 0],
[2, 2],
[3, 0]]
y1 = [0, 1, 0]
model.train(X1, y1)
X2 = [[4, 4],
[5, 5],
[6, 0]]
y2 = [1, 2, 0]
model.train(X2, y2)
X3 = [[7, 0],
[8, 8],
[9, 9]]
y3 = [0, 1, 1]
model.train(X3, y3)
score = model.score(X3, y3)
这里的任务可能相关也可能不相关。或者通常是稍微相关的(例如在每次训练中识别不同类型的对象)。
这也是多次训练模型,这里我们只有一个任务,X但不会一次输入整个数据集。在半python伪代码中:
model = Whatever(...)
X = [[1, 0],
[2, 2],
[3, 0],
[4, 4],
[5, 5],
[6, 0]]
y = [0, 1, 0, 3, 2, 0]
model.train(X[:2, :], y[:2])
score1 = model.score(X[:2, :], y[:2])
model.train(X[:4, :], y[:4])
score2 = model.score(X[:4, :], y[:4])
model.train(X, y)
score3 = model.score(X, y)
这里的任务是一项,但它可能是一项艰巨的任务。使用这种技术的一个地方是建立一个学习曲线,这是评估我们是否有足够的数据来理解任务变化的一种方法。
额外说明:在多任务情况下,我们说过可能(而且很可能)是可能的。一个例子是:是不同型号的汽车和是不同型号的船。问题是:了解不同型号的汽车是否有助于区分不同型号的船舶?
(PS ys 将始终从 0 到类数进行枚举,即 s 的数值y将始终相同但它们的类含义不必相同)。