1.在本节中,我们直接实现了基于数学定义softmax运算的softmax函数。这可能会导致什么问题?提示:尝试计算 exp(50) 的大小。
2.本节中的函数cross_entropy是根据交叉熵损失函数的定义实现的。这个实现可能有什么问题?提示:考虑对数的定义域。
3.你可以想到什么解决方案来解决上述两个问题?
4.返回概率最大的标签总是一个好主意吗?例如,医疗诊断场景下你会这样做吗?
5假设我们希望使用softmax回归来基于某些特征预测下一个单词。词汇量大可能会带来哪些问题?
6.增加迭代周期的数量。为什么测试准确率会在一段时间后降低?我们怎么解决这个问题?
1.在本节中,我们直接实现了基于数学定义softmax运算的softmax函数。这可能会导致什么问题?提示:尝试计算 exp(50) 的大小。
def softmax(X):
X_exp = torch.exp(X)
partition = X_exp.sum(1, keepdim=True)
return X_exp / partition
X = torch.tensor([[1111,1111],[60,60]])
X_prob = softmax(X)
X_prob, X_prob.sum(1)
“”“
(tensor([[ nan, nan],
[0.5000, 0.5000]]),
tensor([nan, 1.]))
可以看到太大了会溢出
”“”
2.本节中的函数cross_entropy是根据交叉熵损失函数的定义实现的。这个实现可能有什么问题?提示:考虑对数的定义域。
如果yhat有个很小的话,得出的值可能会很大.
3.你可以想到什么解决方案来解决上述两个问题?
1,2问题都乘个常数,防止结果的值很大或很小。
或者设置个阙值
4.返回概率最大的标签总是一个好主意吗?例如,医疗诊断场景下你会这样做吗?
不会
5假设我们希望使用softmax回归来基于某些特征预测下一个单词。词汇量大可能会带来哪些问题?
很多单词,造成每个单词分的概率很低,接近零并不好判断
还有计算量也会很大
6.增加迭代周期的数量。为什么测试准确率会在一段时间后降低?我们怎么解决这个问题?
这是发生了过拟合现象,可以增加训练样本。后面沐神会讲到的。
参考: