公众号:尤而小屋
作者:Peter
编辑:Peter
本文是在上节神经网络的基础上,做了进一步的阐述,内容包含:
对几个参数的标记方法进行说明解释:
主要是两类:二分类和多类分类
二类分类: 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^{(…
解释说明:
为了计算神经网络中代价函数的偏导数 ∂ 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)})$
第一层是输入变量,不存在误差
∂ 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
图中有个小问题,看截图的右下角!!!
根据上面的反向传播法得到的结论:
Z 1 ( 3 ) = Θ 10 ( 2 ) ∗ 1 + Θ 11 ( 2 ) ∗ a 1 ( 2 ) + Θ 12 ( 2 ) ∗ a 2 ( 2 ) Z^{(3)}_{1}=\Theta_{10}^{(2)}*1+\Theta_{11}^{(2)}*a^{(2)}_1+\Theta_{12}^{(2)}*a^{(2)}_2 Z1(3)=Θ10(2)∗1+Θ11(2)∗a1(2)+Θ12(2)∗a2(2)
上面的式子中实现了怎么利用反向传播法计算代价函数的导数,在这里介绍怎么将参数从矩阵形式展开成向量形式
如何求解在某点的导数
在代价函数中怎么对某个参数θθ求导
在构建神经网络的时候,首先考虑的是如何选择网络结构:多少层和每层多少个神经单元