吴恩达机器学习-5-神经网络学习Neural Networks Learning
Posted 尤尔小屋的猫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了吴恩达机器学习-5-神经网络学习Neural Networks Learning相关的知识,希望对你有一定的参考价值。
公众号:尤而小屋
作者:Peter
编辑:Peter
吴恩达机器学习-5-神经网络学习Neural Networks Learning
本文是在上节神经网络的基础上,做了进一步的阐述,内容包含:
- 神经网络代价函数
- 反向传播法及解释
- 梯度检验
- 神经网络的小结
神经网络代价函数
参数解释
对几个参数的标记方法进行说明解释:
- m m m:训练样本个数
- x , y x,y x,y:输入和输出信号
- L L L:代表神经网络层数
- S I {S}_{I} SI:每层的神经元个数
- S l {S}_{l} Sl:表示输出神经元个数
分类讨论
主要是两类:二分类和多类分类
二类分类: S L = 0 , y = 0 / 1 S_L=0,y=0/1 SL=0,y=0/1;输出是一个实数
K K K类分类: S L = k , y i = 1 S_L=k,y_i=1 SL=k,yi=1表示分到第 i i i类的情况。输出是一个多维向量
代价函数
逻辑斯蒂回归(LR)中的代价函数:
KaTeX parse error: Expected group after '_' at position 46: …1}{m}\\left[\\sum_̲\\limits{i=1}^{m…
在逻辑斯蒂回归中,只有一个输出变量称之为标量scalar
。
但是在神经网络中会有多个输出变量, h θ ( x ) h_\\theta(x) hθ(x)是一个 K K K维的向量。
假设第 i i i个输出函数:
\\newcommand{\\subk}[1]{ #1_k } h θ ( x ) ∈ R K h_\\theta\\left(x\\right)\\in \\mathbb{R}^{K} hθ(x)∈RK ( h θ ( x ) ) i = i t h output {\\left({h_\\theta}\\left(x\\right)\\right)}_{i}={i}^{th} \\text{output} (hθ(x))i=ithoutput
代价函数 J J J表示为:
KaTeX parse error: Undefined control sequence: \\subk at position 94: …_k}^{(i)} \\log \\̲s̲u̲b̲k̲{(h_\\Theta(x^{(…
解释说明:
- 期望通过代价函数来观察算法预测的结果和真实情况的误差
- 每行特征会有 K K K个预测,利用循环对每行进行预测
- 在 K K K个预测中选择出可能性最高的那个,将其和实际的数据 y y y进行比较
- 正则化项是排除了每个偏置 θ 0 \\theta_0 θ0之后,每层 θ \\theta θ矩阵的求和
- 参数 j j j(由 s l + 1 s_l+1 sl+1层的激活单元数决定)循环所有的行, i i i(由 s l s_l sl层的激活单元数决定)循环所有的列
反向传播法Backpropagation Algorithm
为了计算神经网络中代价函数的偏导数 ∂ J ( Θ ) ∂ Θ i j ( l ) \\frac{\\partial J(\\Theta)}{\\partial \\Theta_{ij^{(l)}}} ∂Θij(l)∂J(Θ),需要使用反向传播法
- 首先计算最后一层的误差
- 再一层层地反向求出各层的误差,直到倒数第二层
前向传播例子
假设有一个数据样本:
( x ( 1 ) , y ( 1 ) ) ({x^{(1)}},{y^{(1)}}) (x(1),y(1))
神经网络是4层的,其中 K = S L = L = 4 {K=S_L=L=4} K=SL=L=4
前向传播法就是通过一层层地按照神经网络的顺序从输入层到输出层计算下去。
反向传播例子
-
从最后一层的误差开始计算:
误差=激活单元的预测 a ( 4 ) {a}^{(4)} a(4)和实际值之间的 y ( k ) y^{(k)} y(k)之间的差
-
用 δ \\delta δ表示误差,误差=模型预测值-真实值
δ ( 4 ) = a ( 4 ) − y \\delta^{(4)} = a^{(4)} -y δ(4)=a(4)−y
-
前一层的误差
δ ( 3 ) = ( Θ ( 3 ) ) T δ ( 4 ) ∗ g ′ ( z ( 3 ) ) \\delta^{(3)}=\\left({\\Theta^{(3)}}\\right)^{T}\\delta^{(4)}\\ast g'\\left(z^{(3)}\\right) δ(3)=(Θ(3))Tδ(4)∗g′(z(3))
其中 g ′ ( z ( 3 ) ) g'(z^{(3)}) g′(z(3))是 S S S 形函数的导数,具体表达式为:
g ′ ( z ( 3 ) ) = a ( 3 ) ∗ ( 1 − a ( 3 ) ) g'(z^{(3)})=a^{(3)}\\ast(1-a^{(3)}) g′(z(3))=a(3)∗(1−a(3))
- 再前一层的误差
$ \\delta{(2)}=(\\Theta{(2)}){T}\\delta{(3)}\\ast g’(z^{(2)})$
第一层是输入变量,不存在误差
- 假设 λ = 0 \\lambda=0 λ=0,如果不做正则化处理时
∂ J ( Θ ) ∂ Θ i j l = a j ( l ) θ i ( l + 1 ) \\frac{\\partial J(\\Theta)}{\\partial \\Theta_{ij}^{l}}=a_j^{(l)}\\theta_i^{(l+1)} ∂Θijl∂J(Θ)=aj(l)θi(l+1)
对上面的式子中各个上下标的含义进行解释:
-
l l l代表的是第几层
-
j j j代表的是计算层中的激活单元的下标
-
i i i代表的是误差单元的下标
算法
-
利用正向传播方法计算每层的激活单元
-
利用训练集的真实结果与神经网络的预测结果求出最后一层的误差
-
最后利用该误差运用反向传播法计算出直至第二层的所有误差。
在求出: △ ( l ) i j \\triangle {(l)}_{ij} △(l)ij之后,便可以计算代价函数的偏导数之后,便可以计算代价函数的偏导数:
D ( l ) i j D{(l)}_{ij} D(l)ij
反向传播的直观理解
前向传播原理
- 2个输入单元;2个隐藏层(不包含偏置单元);1个输出单元
- 上标 i i i表示的是第几层,下标表示的是第几个特征或者说属性
图中有个小问题,看截图的右下角!!!
根据上面的反向传播法得到的结论:
以上是关于吴恩达机器学习-5-神经网络学习Neural Networks Learning的主要内容,如果未能解决你的问题,请参考以下文章 机器学习- 吴恩达Andrew Ng Week4 神经网络Neural Networks知识总结 价值连城 神经网络- 吴恩达Andrew Ng Coursera Neural Networks and Deep Learning 机器学习- 吴恩达Andrew Ng 编程作业技巧 for Week5 Neural Networks Learning 吴恩达机器学习作业neural network _python实现 机器学习- 吴恩达Andrew Ng 编程作业技巧 for Week4 Neural Networks 吴恩达深度学习编程作业(1-1):Logistic Regression with a Neural Network mindset
Z
1
(
3
)
=
Θ
10
(
2
)
∗
1
+
Θ
11
(
2
)
∗
a
1
(
2