概述
Hello,大家好,我是Tony
欢迎大家访问我的个人主页:Tony’s Blog,让我们一起站在巨人的肩膀之上!
神经网络的计算过程对应课程中9.1-9.8
神经网络的计算过程
对于二元分类问题(逻辑回归),系统输出的结果是1或0
对于多元分类问题,神经网络输出的结果是多维向量:
[
1
0
0
0
]
,
[
0
1
0
0
]
,
[
0
0
1
0
]
,
[
0
0
0
1
]
left[begin{array}{c} {1} \ {0} \ {0} \ {0} end{array}right],left[begin{array}{l} {0} \ {1} \ {0} \ {0} end{array}right], quadleft[begin{array}{l} {0} \ {0} \ {1} \ {0} end{array}right], quadleft[begin{array}{l} {0} \ {0} \ {0} \ {1} end{array}right]
⎣⎢⎢⎡1000⎦⎥⎥⎤,⎣⎢⎢⎡0100⎦⎥⎥⎤,⎣⎢⎢⎡0010⎦⎥⎥⎤,⎣⎢⎢⎡0001⎦⎥⎥⎤
因此可以类比逻辑回归的代价函数来写出神经网络的代价函数:
一、一些要点
1.逻辑回归的代价函数(加正则化):
J ( θ ) = − 1 m [ ∑ i = 1 m y ( i ) log h θ ( x ( i ) ) + ( 1 − y ( i ) ) log ( 1 − h θ ( x ( i ) ) ) ] + λ 2 m ∑ j = 1 n θ j 2 J(theta)=-frac{1}{m}left[sum_{i=1}^{m} y^{(i)} log h_{theta}left(x^{(i)}right)+left(1-y^{(i)}right) log left(1-h_{theta}left(x^{(i)}right)right)right]+frac{lambda}{2 m} sum_{j=1}^{n} theta_{j}^{2} J(θ)=−m1[i=1∑my(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))]+2mλj=1∑nθj2
对于逻辑回归、代价函数、代价函数正则化可以查看这篇博客:逻辑回归模型及代价函数正则化
对于机器学习中为什么要正则化可以查看这篇博客:机器学习中对过拟合的正则化策略
2、神经网络的代价函数
J ( Θ ) = − 1 m [ ∑ i = 1 m ∑ k = 1 K y k ( i ) log ( h Θ ( x ( i ) ) ) k + ( 1 − y k ( i ) ) log ( 1 − ( h Θ ( x ( i ) ) ) k ) ] + λ 2 m ∑ l = 1 L − 1 ∑ i = 1 s l ∑ j = 1 s l + 1 ( Θ j i ( l ) ) 2 begin{aligned}J(Theta)=&-frac{1}{m}left[sum_{i=1}^{m} sum_{k=1}^{K} y_{k}^{(i)} log left(h_{Theta}left(x^{(i)}right)right)_{k}+left(1-y_{k}^{(i)}right) log left(1-left(h_{Theta}left(x^{(i)}right)right)_{k}right)right] \&+frac{lambda}{2 m} sum_{l=1}^{L-1} sum_{i=1}^{s_{l}} sum_{j=1}^{s_{l+1}}left(Theta_{j i}^{(l)}right)^{2}end{aligned} J(Θ)=−m1[i=1∑mk=1∑Kyk(i)log(hΘ(x(i)))k+(1−yk(i))log(1−(hΘ(x(i)))k)]+2mλl=1∑L−1i=1∑slj=1∑sl+1(Θji(l))2
从上式可以看出 ,这相当于多个逻辑回归代价函数相加
3、反向传播算法(Back Propagation Algorithm)
利用反向传播算法计算DVec
4、梯度检测(Gradient Checking)
在进行梯度下降之后,要进行梯度检测,以保证梯度下降的正确性
for i=1:n
thetaPlus=theta;
thetaPlus(i)=thetaPlus(i)+EPSILON;
thetaMinus=theta;
thetaMinus(i)=thetaMinus(i)-EPSILON;
gradApprox(i)=(J(thetaPlus)-J(thetaMinus))/(2*EPSILON);
end
Check gradApprox≈DVex?(from backpop),就是看这样求出的导数是否接近反向传播算法的值
5 神经网络的计算过程theta值初始化
( − ϵ ≤ Θ i j ( l ) ≤ ϵ ) (left.-epsilon leq Theta_{i j}^{(l)} leq epsilonright) (−ϵ≤Θij(l)≤ϵ)
把theta值控制在[-E,E]之间
Theta1=rand(10,11)*(2*INIT_EPSILON-INIT_EPSILON;
Theta2=rand(1,11)*(2*INIT_EPSILON-INIT_EPSILON;
二、神经网络实现过程
-
随机初始化权重接近0的值
-
前向传播算法计算
h Θ ( x ( i ) ) h_{Theta}left(x^{(i)}right) hΘ(x(i)) -
计算代价函数J(θ)
-
反向传播算法计算局部偏导数
∂ ∂ Θ j k ( l ) J ( Θ ) frac{partial}{partial Theta_{j k}^{(l)}} J(Theta) ∂Θjk(l)∂J(Θ) -
梯度检测
-
梯度下降或其他高级算法来最小化代价函 数
重点:
确保 在迭代代码中不含梯度检测的代码,因为梯度检测速度比反向传播算法相比很慢,
最后
以上就是忧心网络为你收集整理的神经网络的计算过程神经网络的计算过程的全部内容,希望文章能够帮你解决神经网络的计算过程神经网络的计算过程所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复