人工智能/模式识别/机器学习精华专题呆鸟的Python数据分析深度学习之基础

机器学习-吴恩达笔记5

2019-11-29  本文已影响0人  皮皮大

在本章中主要介绍的内容包含:

讲真的,难度是有的!!!!️️️


神经网络代价函数

参数解释

对几个参数的标记进行说明解释

QkEJc4.png

分类讨论

主要是两类:二分类和多类分类

二类分类:​S_L=0,y=0/1;输出是一个实数

K类分类:​S_L=k,y_i=1表示分到第​i类的情况。输出是一个多维向量

代价函数

逻辑斯蒂回归中的代价函数
J(\theta)=-\frac{1}{m}\sum^m_{i=1}[y^{(i)}\log(h_\theta(x^{(i)}))+(1-y^{(i)})\log(1-h_\theta(x^{i}))]+\frac{\lambda}{2m}\sum^n_{j=1}\theta^2_j

在逻辑斯蒂回归中,只有一个输出变量称之为标量scalar。但是在神经网络中会有多个输出变量,​h_\theta(x)是一个​K维的向量,假设函数​h_\theta(x) \in R^K;h_\theta(x)=i^{th} output;表示的是第​i个输出,代价函数为:

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

解释说明:

  1. 期望通过代价函数来观察算法预测的结果和真实情况的误差
  2. 每行特征会有K个预测,利用循环对每行进行预测
  3. K个预测中选择出可能性最高的那个,将其和实际的数据y进行比较
  4. 正则化项是排除了每个偏置\theta_0之后,每层\theta矩阵的求和
  5. 参数j(由s_l+1层的激活单元数决定)循环所有的行,i(由s_l层的激活单元数决定)循环所有的列

反向传播法Backpropagation Algorithm

QkuzP1.png

为了计算神经网络中代价函数的偏导数\frac{\partial J(\Theta)}{\partial \Theta_{ij^{(l)}}},需要使用反向传播法

前向传播栗子

假设有一个数据样本(x^{(1)},y^{(1)}),神经网络是4层的,其中K=S_L=L=4

QklGIH.png

前向传播法就是通过一层层地按照神经网络的顺序从输入层到输出层计算下去。

反向传播栗子

Qk1h9A.png
  1. 从最后一层的误差开始计算:误差=激活单元的预测a^{(4)}和实际值之间的y^{(k)}之间的误差;用\delta表示误差,误差=模型预测值-真实值

\delta^{(4)} = a^{(4)} -y

  1. 前一层的误差

\delta^{(3)} = (\Theta^{(3)})^T\theta^{(4)}*g^`(z^{(3)})

其中g^`(z^{(3)})S型函数的导数
g^`(z^{(3)})=a^{(3)}*(1-a^{(3)})

  1. 再前一层的误差

\delta^{(2)} = (\Theta^{(2)})^T\theta^{(3)}*g^`(z^{(2)})

第一层是输入变量,不存在误差

  1. 假设\lambda=0,如果不做正则化处理时

\frac{\partial J(\Theta)}{\partial \Theta_{ij}^{l}}=a_j^{(l)}\theta_i^{(l+1)}

上面的式子中各个上下标的含义:

l代表的是第几层

j代表的是计算层中的激活单元的下标

i代表的是误差单元的下标

算法

QkUlLR.png
QkUlLR.png

反向传播的直观理解

前向传播原理

图中有个小问题,看截图的右下角!!!

Qk0qER.png

结论

Z^{(3)}_{1}=\Theta_{10}^{(2)}*1+\Theta_{11}^{(2)}*a^{(2)}_1+\Theta_{12}^{(2)}*a^{(2)}_2

反向传播原理

QkjDu8.png Qkj5uT.png

参数展开

上面的式子中实现了怎么利用反向传播法计算代价函数的导数,在这里介绍怎么将参数从矩阵形式展开成向量形式

QkHoHs.png Qkb328.png

梯度检验

如何求解在某点的导数

QkqNQO.png

在代价函数中怎么对某个参数​求导

Qkqq6U.png

神经网络小结

首要工作

在构建神经网络的时候,首先考虑的是如何选择网络结构:多少层和每层多少个神经单元

训练神经网络步骤

  1. 参数的随机初始化

  2. 利用正向传播方法计算所有的​

  3. 编写计算代价函数 ​的代码

  4. 利用反向传播方法计算所有偏导数

  5. 利用数值检验方法检验这些偏导数

  6. 使用优化算法来最小化代价函数

上一篇 下一篇

猜你喜欢

热点阅读