神经网络中的gradient check是什么意思?就是检查梯度吗?为什么要查梯度?
3个回答
主要是解决vanishing gradient problem。大概意思是backpropogation通过链式规则把gradient从输出端的loss function要反向传输到第一层的参数。传输过程中,gradient会逐渐减小或增大,会导致第一层的参数收到的gradient过小或过大。还有个主要原因是所有参数用同样的learning rate。如果用动态的learning rate,会一定程度解决问题。
解决的方法有:
1. Resnet,加一些bypass的路径,让gradient能通过较少层达到前几层的参数。
2. Relu比sigmoid传输gradient更快。记忆中,AlexNet论文中说Relu收敛比sigmoid快3倍。
3. 更好的参数初始值。让链式规则中的gradient乘上系数的绝对值集中在1,也就是Jacobian 矩阵元素的绝对值大概为1。参考He Kaiming的论文。
4. 在中间层增加一些辅助的loss function,让辅助的gradient能提前传到前面的层。有些论文叫hierarchical learning。
SofaSofa数据科学社区DS面试题库 DS面经人工神经网络是个非常复杂的结构,一层层叠加而成。
复杂就意味着在实施人工神经网络的时候需要格外小心,其中一个步骤就是手动检查反向传播(backpropagation)是否正确运行。
所以我们就要手动计算和比较真实的梯度和程序中返回的梯度值,以确保其正确。