首页 > 其他分享 >第九章 神经网络

第九章 神经网络

时间:2023-01-05 11:14:35浏览次数:41  
标签:第九章 梯度 sum 传播 神经网络 theta grad

目录

大多数的机器学习所涉及到的特征非常多,对于非线性分类问题,往往需要构造多项式来表示数据之间的关系,多项式的组成方式千变万化,这对计算带来一定困扰。

机器学习中的神经网络一般包括三部分,输入层,隐藏层,输出层。

数据从输入层开始,通过激活函数前向传播到第一隐藏层,经过多个隐藏层,最后到达输出层,神经网络表示复杂的逻辑关系,主要是对隐藏层的构造。

(1) 案例:使用神经网络实现逻辑运算

AND运算

OR运算

NOT运算

XNOR运算

\[\begin{align*} XNOR&=(x_1\ \&\ x_2)\ OR\ (\bar{x_1}\ \&\ \bar{x_2})\\ &=NOT(x_1 \ XOR \ x_2)\\ \end{align*} \]

(2) 多元分类

通过构建神经网络,每种输出就对应一个分类器。

(3) 代价函数

\(K\) 表示输出层的单元数目,\(L\) 为神经网络的层数。

代价函数

\[J(\Theta) = -\frac{1}{m} \sum_{i=1}^m \sum_{k=1}^K \ [ \ y_k^{(i)} log^{(h_{\Theta}(x^{(i)}))_k} + (1-y_k^{(i)} log^{(1 - (h_{\Theta}(x^{(i)}))_k)} \ ] + \frac{\lambda}{2m} \sum_{l=1}^{L-1} \sum_{i=1}^{s_l} \sum_{j=1}^{s_l + 1} (\Theta_{ji}^{(l)})^2 \]

(4) 前向传播

(5) 反向传播

(6) 随机初始化

在对神经网络进行训练时,\(\theta\) 的取值要随机取值,如果都赋值为 0,就会使得每一层的输出值、误差相同,从而存在大量冗余。

(7) 梯度检测

为了确保反向传播算法的正确性,在数学上使用拉格朗日中值定理来近似的表是曲线上某一点的导数,梯度检测正式使用的这种思想。

梯度检测可以对每个参数进行单独验证。

\[\begin{align*} \theta^{i+} = \theta + \begin{bmatrix} 0\\ 0\\ \vdots\\ \delta\\ \vdots\\ 0\\ \end{bmatrix} \ \ \ \ \ \ \theta^{i-} = \theta - \begin{bmatrix} 0\\ 0\\ \vdots\\ \delta\\ \vdots\\ 0\\ \end{bmatrix} \\ f_i^{(\theta)} \approx \frac{J(\theta^{i+}) - J(\theta^{(i-)})}{2 \delta} \end{align*} \]

假设通过中指定理的得到的梯度为 \(approx_grad\),经过反向传播得到的梯度为 \(grad\),如果满足以下等式,则说明反向传播得到的梯度精度还行。

\[diff = \frac{||approx_grad - grad||}{||approx_grad + grad||} < 10e^{-9} \]

梯度计算正确的情况下,当算法进行学习的时候要关闭梯度检测,因为它非常耗时。

标签:第九章,梯度,sum,传播,神经网络,theta,grad
From: https://www.cnblogs.com/lumoumou/p/17024112.html

相关文章