神经网络(Neural Network)是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。
代价函数
J
(
Θ
)
=
−
1
m
∑
i
=
1
m
∑
k
=
1
s
L
(
y
k
(
i
)
log
(
h
Θ
(
x
(
i
)
)
)
k
+
(
1
−
y
k
(
i
)
)
log
(
1
−
h
Θ
(
x
(
i
)
)
)
k
)
J(\Theta)=-{\frac {1} {m}} \sum_{i=1}^{m} \sum_{k=1}^{s_L} ( y^{(i)}_k\log(h_{\Theta}(x^{(i)}))_k +(1-y^{(i)}_k)\log(1-h_{\Theta}(x^{(i)}))_k )
J(Θ)=−m1i=1∑mk=1∑sL(yk(i)log(hΘ(x(i)))k+(1−yk(i))log(1−hΘ(x(i)))k)其中
x
(
i
)
x^{(i)}
x(i)代表第
i
i
i个样本的输入向量,
h
(
x
(
i
)
)
h(x^{(i)})
h(x(i))代表第
i
i
i个样本的输出向量, 第
L
L
L代表层数,
s
l
s_l
sl代表第
l
l
l 层的单元数,
a
i
(
l
)
a_i^{(l)}
ai(l)代表第
l
l
l 层的第
i
i
i 个元素。
求解方法
- 反向传播算法(Back propagation Algorithm)
通过迭代
Θ i j ( l ) = Θ i j ( l ) − α ∂ ∂ Θ i j ( l ) J ( Θ ) \Theta_{ij}^{(l)}=\Theta_{ij}^{(l)}-\alpha{\frac {\partial}{\partial\Theta_{ij}^{(l)}}}J(\Theta) Θij(l)=Θij(l)−α∂Θij(l)∂J(Θ)确定参数 Θ \Theta Θ。
为了保证反向传播算法的正确实施,我们需要进行梯度检验(Gradient Checking)。其具体步骤如下:
- 从训练集中随机抽取一些样本。
- 随机初始化参数。
- 通过前向传播计算损失函数。
- 分别计算解析梯度与数值梯度。
实现步骤
- 随机初始化参数。
- 通过前向传播计算 h Θ ( x ( i ) ) h_{\Theta}(x^{(i)}) hΘ(x(i))与代价函数 J ( Θ ) J(\Theta) J(Θ)。
- 进行梯度检验。
- 通过反向传播算法确定参数。