神经网络基础与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. 链式求导:反向传播算法
神经网络函数通常由多个张量操作链式组成,每个操作都有简单且已知的导数。例如,一个由三个张量操作 a、b 和 c 组成的网络 f,其权重矩阵分别为 W1、W2 和 W3:
$f(W1, W2, W3) = a(W1, b(W2,
超级会员免费看
订阅专栏 解锁全文
2464

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



