梯度(gradient)本身指向的是损失函数增长最快的方向,而我们做梯度下降(Gradient Descent)是为了让损失变小,所以必须往反方向走,乘上 “−” 就变成下坡方向,所以参数会逐步走向损失最小的位置。
如果梯度 = 0,说明当前位置已经是平的(山坡坡度为 0)。无论学习率 η 多大,η×0=0,所以参数不再移动,训练自然停止。
Sigmoid 函数,如果 x1 的值,趋近于无穷大的时候,根据指数函数性质,e^−(b+wx1)会趋近于0,这一项就会消失,因此这一函数就会收敛在高度为 c 的地方。如果 x1 负的非常大的时候,e^−(b+wx1)会趋近于无穷,e^−(b+wx1)作为分母就会非常大,函数的值就会趋近于 0。
不同的w,改变斜率;不同的b,改变偏移;不同的c,改变高度。
Sigmoid 的数量是由自己决定的,而且 Sigmoid 的数量越多,可以产生出来的分段 线性函数就越复杂。Sigmoid 越多可以产生有越多段线的分段线性函数,可以逼近越复 杂的函数。Sigmoid 的数量也是一个超参数。
多个 Sigmoid 单元,是同时处理输入,而不是把 x 轴切成三段来各自负责。神经网络不是人为切段的,而是让模型自己学习每个 Sigmoid 单元的中心位置、斜率、偏移量。这样多个 Sigmoid 的组合(加权求和)就可以形成任意复杂的“折线”或“平滑曲线”。这个组合结果就是新的特征值,送到下一层去。
这个图只有一层隐藏层:输入 x → 线性变换 → 激活函数 → 加权求和 → 输出 y。没有第二层再继续激活的过程,所以它是一个单隐藏层网络。
定义损失,损失是一个函数,其输入就是一组参数,去判断这一组参数的好坏
θ 是整个模型的全部参数向量(比如神经网络里的所有 w 和 b 打包在一起)。上标 0 / 1 / 2 / 3 代表的是迭代轮次。
batch是指你训练集的一小部分数据。
在mini-batch 梯度下降里,更新是串行的,不是并行。每次梯度计算都只用一个 batch 的数据,每个 batch 的梯度更新都会影响下一批的参数,直到用完一个 epoch 的所有 batch。
把所有的批量都看过一次,称为一个回合(epoch),每一次更新参数叫做一次更新。
2 个 ReLU 才能够合成一个 Hard Sigmoid
这个图描述的是一个多层神经网络(MLP)的前向计算。第一层:输入 x → 线性变换 → 激活函数(σ 或 ReLU) → 得到隐藏层输出 a。第二层:隐藏层输出 a → 线性变换 → 激活函数 → 得到新的输出 a′(可能是下一层输入,或者直接是预测结果)
多层网络的本质:每一层都是“线性变换 + 激活函数”,然后把输出传给下一层。
Sigmoid 或 ReLU 称为神经元(neuron),很多的神经元称为神经网络 (neural network)。每一排称为一层,称为隐藏层(hidden layer),很多的隐藏层就“深”,这套技术称为深度学习。
深度学习的训练会用 到反向传播(BackPropagation,BP),其实它就是比较有效率、算梯度的方法。
在训练数据和测试 数据上的结果是不一致的,这种情况称为过拟合(overfitting)。
先写出一个有未知数 θ 的函数 fθ (x)
定义损失函数 L(θ)