假设我想计算一名大四学生将要选修的课程以及他们在这些课程中可能获得的成绩。我们有历届学生每年(不仅仅是大四)的课程和成绩数据用于训练。我们还拥有想要预测结果的学生前几年的成绩和课程数据。我希望使用带有长短期记忆的循环神经网络来解决这个问题。(我知道这个问题可以通过回归来解决,但我特别想用神经网络来看看是否能正确解决这个问题)
我希望设置的输出(标签)空间的方式是,为每个学生可能选修的课程设置一个特征,每个特征的数值在0到1之间,用来描述学生是否会参加该课程(如果不参加,该课程的数值为0),如果参加,预计的成绩会是多少(例如,如果学生参加了A课程并获得了57%的成绩,那么A课程的标签中将包含0.57)
我的输出空间设置是否正确?
-
如果是,我应该使用哪些优化和激活函数?
-
如果不是,我该如何重新调整我的输出空间以获得好的预测结果?
回答:
如果我理解正确的话,你希望网络根据学生的历史数据,输出每个课程的一个条目。这个条目应该同时表示学生是否会选修该课程(0表示不选修,1表示选修),以及预期的成绩?那么对单个课程的输出的解释将如下所示:
0.0 -> 不会选修该课程0.1 -> 会选修该课程并获得10%的分数0.5 -> 会选修该课程并获得一半的分数1.0 -> 会选修该课程并获得满分
如果这是你的计划,我强烈建议重新考虑。一些明显的现实情况不符合这种模式。例如,你如何表示一个成绩优异的学生“不太可能”选修某门课程?网络应该输出0.9999,因为如果他选修该课程,他很可能会获得最高分数,还是应该输出0.0001,因为学生不太可能选修该课程?
相反,你应该为每个学生和每个课程输出两个在[0,1]之间的值。
- 第一个值在[0, 1]之间,表示学生参与该课程的概率
- 第二个值在[0, 1]之间,表示预期的相对分数。
作为损失函数,我建议对第一个值使用二元交叉熵,对第二个值使用简单的平方误差,然后使用你选择的某种L^p度量标准(例如,对于p=1
简单地将所有损失相加,对于p=2
则平方后相加)来组合所有损失。
几个例子:
(0.01, 1.0) : 极不可能参与,可能会获得100%的成绩(0.5, 0.8): 50%-50%的可能性参与或不参与,可能会获得80%的分数(0.999, 0.15): 会参与,但可能会几乎不及格
你想要输出的量似乎是这两个值的乘积,这有点难以解释。