我在处理梯度检验中的一个数值问题。
我不确定是否存在cs231n (http://cs231n.github.io/neural-networks-3/#gradcheck)中描述的“交叉扭结”。
在cs231n的描述中,检查是否存在交叉扭结的一种方法是使用max函数。
请注意,在评估损失时,有可能知道是否交叉了扭结。这可以通过跟踪所有“胜利者”的身份来实现,其函数为max(x,y);也就是说,在向前传球时是x或y更高。如果在计算f(x+h)和f(x−h)时,至少有一个胜利者的身份发生变化,那么就会交叉一个扭结,数值梯度将不精确。
什么是“身份”?
梯度检查中的"x“或"y”是什么?
有人能通过提供一个具体的例子来帮助我理解这一点吗?
谢谢
发布于 2022-08-17 10:39:58
要回答你的第一个问题,这里的“身份”意味着在评估max(x,y)时,跟踪(x,y)中的哪一个是“赢家”。
现在来解释第二部分:
通过保持身份的轨迹,“如果至少一个胜利者的身份发生了变化……”=>意思是,在评估了梯度之后,如果“胜利者”变量发生了变化,我们就会知道“扭结是交叉的”。
示例:假设我们有max(0,x=-0.1)。前传中的“赢家”应该是'0‘。现在,当计算f(x+h)时(假设h=0.2)
f(x+h) = max(0,-0.1+0.2) = 0.1
注意,这里的“胜利者”在计算梯度时发生了变化(以前是0,现在是"x+h“)。
因此,我们会知道扭结是交叉的。
https://stackoverflow.com/questions/50289194
复制相似问题