Neural network 反向传播优化:如何使用导数优化权重和偏差?

Neural network 反向传播优化:如何使用导数优化权重和偏差?,neural-network,backpropagation,Neural Network,Backpropagation,给定代价函数相对于神经网络神经元的权重或偏差的导数,如何调整这些神经元以最小化代价函数? 我是不是只需要从单个权重和偏差中减去导数乘以常数?如果涉及常数,我如何知道选择什么是合理的?关于如何执行更新的权利。这就是梯度下降法以各种形式所做的。学习率(您所指的常数)通常非常小1e-6-1e-8。网上有很多文章都涉及这两个概念 不过,为了获得直接的答案,最好从一个小的学习率开始(按照上面建议的顺序),并检查损失是否在减少(通过绘图)。如果损失减少,您可以稍微提高学习速度。我建议将其当前值提高3倍。例如

给定代价函数相对于神经网络神经元的权重或偏差的导数,如何调整这些神经元以最小化代价函数?
我是不是只需要从单个权重和偏差中减去导数乘以常数?如果涉及常数,我如何知道选择什么是合理的?

关于如何执行更新的权利。这就是梯度下降法以各种形式所做的。学习率(您所指的常数)通常非常小1e-6-1e-8。网上有很多文章都涉及这两个概念

不过,为了获得直接的答案,最好从一个小的学习率开始(按照上面建议的顺序),并检查损失是否在减少(通过绘图)。如果损失减少,您可以稍微提高学习速度。我建议将其当前值提高3倍。例如,如果是1e-6,则将其提高到3e-6,并再次检查您的损失是否仍在减少。继续这样做,直到损失不再很好地减少。这张图片应该能提供一些关于学习率如何影响损失曲线的直观信息(图片来源于)


你想提高学习速度,这样模型就不会花那么长的时间来训练。您不想将学习率提高太多,因为这样可能会超过您正在下降的局部最小值,并且损失会增加(上面的黄色曲线)。这是一个过于简单化的问题,因为神经网络的损失是非常非凸的,但这是一般的直觉

@jorgenkg为什么要乘以重量本身?(删除了错误的评论)对不起,触发太快了<代码>权重-=学习率*(增量*激活强度)也许此代码可以将您推向正确的方向:。免责声明:是我写的