人工智能学习 7 - 神经网络

神经网络

  • 输入层: x1, x2…
  • 隐藏层: a1, a2… 计算的中间过程
  • 输出层: y1, y2…

神经网络结构越复杂, 能解决的问题就越复杂

将输入层数据使用 $z = w_1x_1 + w_2x_2 + … + w_nx_n + b$ (即为 $Z = W^TX+b$) 计算后, 通过激活函数 sgn/logistic/… 等非线性函数转换得出隐藏层 a

$$
\begin{cases}
z=w^Tx+b \
a=f(z) \
\end{cases}
$$

每个隐藏层又作为输入层参与下一层网络的计算.

激活函数(非线性转换)

  • logistic
  • sgn
  • relu: >0 时导数=1, <=0 时导数=0
  • tanh

全连接神经网络

网络结构为每一层的每个神经元都与下一层的所有神经元相连接.

预测过程

在已知神经网络上, 传入变量, 得到结果, 就是预测过程.

训练过程(有监督)

训练过程(反向传播)

  • 前向传播 (预测过程)
  • 求得损失
  • 求得梯度
  • 梯度下降优化参数, 降低损失

通过反复进行训练过程, 实现参数优化

完成训练的标记

  • 求损失: $J(w) = \frac{1}{2}(\hat{y} - y)^2$
  • 求 $w$ 梯度(导数): $\frac{\partial J(w)}{\partial w_{11}^{(1)}} = 所有路线的偏导数相加$
  • 梯度下降更新 $w$: $w_{11}^{(1)’} = w_{11}^{(1)} - Lr * \frac{\partial J(w)}{\partial w_{11}^{(1)}}$

其中 Lr 为 Learning rate 学习率, 较大时容易在最优解附近跳跃, 较小学习过程漫长.

最终在损失不再下降或者下降的幅度很低时, 或者达到指定学习次数后, 训练完成.

自动微分

缓存每个节点微分的值, 需要的时候直接取用

$\frac{\partial J}{\partial w^{1}{11}} = \frac{\partial J}{\partial z^{1}{1}} * \frac{\partial z^{1}{1}}{\partial w^{1}{11}}$

$\frac{\partial J}{\partial w^{2}{11}} = \frac{\partial J}{\partial z^{1}{1}} * \frac{\partial z^{1}{1}}{\partial w^{2}{11}}$

在记录了每一层 $\partial z$ 之后, 运算就无需每次从后向前一步步运算.

通过自动微分向前逐步找到前面的 $w$ 值的过程, 成为前向传播.

Donate - Support to make this site better.
捐助 - 支持我让我做得更好.