【参考资料】
http://www.ai-start.Jom/ml2014/html/week4.html
http://www.ai-start.Jom/ml2014/html/week5.html
【神经网络】
1、特征量N的增多导致二次项数的剧增N**2/2,图像识别中尤为显著
2、术语:
输入层/输入神经元
输出层/输出神经元
隐层/隐层神经元
权值、偏置、激活函数
3、实现核心
依赖链式关联,逆向快速计算梯度
1) 依层递推求解梯度
2) 普通逻辑回归需要逐个θ求解梯度
【前向传播过程】
1、激活函数
1)、代数方程: a[l](j) = g(∑w[l](j,k)*a[l−1](k) + b[l](j))
2)、矩阵方程: a[l] = g(w[l]*a[l−1] + b[l])
3)、神经元状态函数: z[l] = w[l]*a[l−1] + b[l],
4)、神经元激活函数: g(z) = 1/(1+e**-z)
5)、符号说明
a[l-1]:第l-1层神经元的输出,
b[l]:第l-1层到第l层偏执,
w[l]:第l-1层到第l层的权重,
z[l]:第l层神经元的输入,
a[l]:第l层神经元的输出,
[l]:第l层,(j):第j个神经元
2、神经网络损失函数
1)、代数方程
J(θ) = {∑[i=1->m]∑[j=1->k](−y(i,j) * ln(g(x(i,j))) − (1 − y(i,j)) * ln(1 − g(x(i,j)))}/m
其中,m:样板个数,k:输出层个数
2)、矩阵方程
J(θ) = {∑[i=1->m](- ln(a[L](i, :))*y(:, i) - (log(1 - a[L](i, :)) * (1 - y(:, i)))}/m
3)、正则约束: Reg = λ/(m*2) * ∑ θ**2
3、正向传递方程
a[1] = X (add b[1])
z[2] = θ[1]*a[1]
a[2] = g(z[2]) (add b[2])
z[3] = θ[2]*a[2]
a[3] = h(x) = g(z[3])
【反向传播过程】
1、反向传递方程
δ[3] = a[3]′ - y
δ[2] = θ[2]′*δ[3].*g′(z[2])
2、基本方程
1)、输出层的误差方程
(BP1) δ[L] = (∂J/∂a[L]) * g'(z[L]) 实际取值 a[L] - y(L:神经网络最后一层)
数学推导:
a[l] = g(z[l])
=> ∂a[l]/∂z[l] = g'(z[l])
=> ∂J/∂z[l] = (∂J/∂a[l])*(∂a[l]/∂z[l])
= (∂J/∂a[l]) * g'(z[l])
2)、误差传递方程
(BP2) δ[l] = θ[l]′*δ[l+1].*g′(z[l])
数学推导:
z[l+1] = θ[l]′*a[l] = θ[l]′*g(z[l])
=> ∂z[l+1]/∂z[l] = θ[l]′*g'(z[l])
=> δ[l] = ∂a[l]/∂z[l]
= (∂J/∂z[l+1])*(∂z[l+1]/∂z[l])
= δ[l+1]*(θ[l]′*g'(z[l]))
= θ[l]′*δ[l+1].*g'(z[l])
3)、代价函数对偏置的改变率
(BP3) ∂J/∂b[l] = δ[L]
数学推导:
z[l] = θ*a[L-1] + b
=> ∂z/∂b =1
=> ∂J/∂b[l] = (∂J/∂z[l]) * (∂z[l]/∂b[l])
= δ[l]
4)、代价函数对权重的改变率
(BP4) ∂J/∂θ[l] = a[L-1]*δ[L]
数学推导:
z[l] = θ*a[L-1] + b
=> ∂z/∂θ = a[L-1]
∂J/∂θ[l] = (∂J/∂z[l]) * (∂z[l]/∂θ[l])
= δ[L] * a[L-1]
【训练神经网络】
1、选择神经网络模型并随机初始化参数
2、利用正向传递方程计算各层神经元状态z、激活值a
3、计算代价函数J(θ)
4、反向传播方法计算δ和grad
δ[3] = a[3] - y
δ[2] = θ[2]′*δ[3]*g′z[2]
∂J/∂θ[l] = a[L-1]*δ[L]
5、进行梯度检验,然后关闭
6、计算最小化代价函数