神经网络入门:从优化算法到Keras实践
1. 神经网络的优化引擎:基于梯度的优化
在神经网络的参数优化过程中,我们常常会遇到局部最小值的问题。当参数处于某个特定值附近时,向左或向右移动都会导致损失函数值增加,这就是局部最小值点。如果使用小学习率的随机梯度下降(SGD)来优化参数,优化过程可能会陷入局部最小值,而无法达到全局最小值。
为了避免这种情况,可以引入动量(Momentum)的概念。动量的灵感来源于物理学,我们可以将优化过程想象成一个小球在损失曲线上滚动。如果小球具有足够的动量,它就不会陷入沟壑,而是最终到达全局最小值。动量的实现方式是,在每一步移动小球时,不仅考虑当前的斜率值(当前加速度),还考虑当前的速度(由过去的加速度产生)。以下是一个简单的实现代码:
past_velocity = 0.
momentum = 0.1
while loss > 0.01:
w, loss, gradient = get_current_parameters()
velocity = past_velocity * momentum + learning_rate * gradient
w = w + momentum * velocity - learning_rate * gradient
past_velocity = velocity
update_parameter(w)
2. 链式求导:反向传播算法
在实际的神经网络中,其函数通常由多个张量操作链式组成,每个操作都有简单且已知的导数。例如,一个由三个张量操
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



