神经网络的计算过程
Hello,大家好,我是Tony
欢迎大家访问我的个人主页:Tony’sBlog,让我们一起站在巨人的肩膀之上!
神经网络的计算过程对应课程中9.1-9.8
神经网络的计算过程对于二元分类问题(逻辑回归),系统输出的结果是1或0
对于多元分类问题,神经网络输出的结果是多维向量:[1000],[0100],[0010],[0001]left[egin{array}{c}{1}\{0}\{0}\{0}end{array} ight],left[egin{array}{l}{0}\{1}\{0}\{0}end{array} ight],quadleft[egin{array}{l}{0}\{0}\{1}\{0}end{array} ight],quadleft[egin{array}{l}{0}\{0}\{0}\{1}end{array} ight]⎣⎢⎢⎡1000⎦⎥⎥⎤,⎣⎢⎢⎡0100⎦⎥⎥⎤,⎣⎢⎢⎡0010⎦⎥⎥⎤,⎣⎢⎢⎡0001⎦⎥⎥⎤因此可以类比逻辑回归的代价函数来写出神经网络的代价函数:
一、一些要点1.逻辑回归的代价函数(加正则化):J(θ)=−1m[∑i=1my(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))]+λ2m∑j=1nθj2J( heta)=-frac{1}{m}left[sum_{i=1}^{m}y^{(i)}logh_{ heta}left(x^{(i)} ight)+left(1-y^{(i)} ight)logleft(1-h_{ heta}left(x^{(i)} ight) ight) ight]+frac{lambda}{2m}sum_{j=1}^{n} heta_{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(Θ)=−1m[∑i=1m∑k=1Kyk(i)log(hΘ(x(i)))k+(1−yk(i))log(1−(hΘ(x(i)))k)]+λ2m∑l=1L−1∑i=1sl∑j=1sl+1(Θji(l))2egin{aligned}J(Theta)=&-frac{1}{m}left[sum_{i=1}^{m}sum_{k=1}^{K}y_{k}^{(i)}logleft(h_{Theta}left(x^{(i)} ight) ight)_{k}+left(1-y_{k}^{(i)} ight)logleft(1-left(h_{Theta}left(x^{(i)} ight) ight)_{k} ight) ight]\&+frac{lambda}{2m}sum_{l=1}^{L-1}sum_{i=1}^{s_{l}}sum_{j=1}^{s_{l+1}}left(Theta_{ji}^{(l)} ight)^{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、反向传播算法(BackPropagationAlgorithm)利用反向传播算法计算DVec
4、梯度检测(GradientChecking)在进行梯度下降之后,要进行梯度检测,以保证梯度下降的正确性
fori=1:nthetaPlus=theta;thetaPlus(i)=thetaPlus(i)+EPSILON;thetaMinus=theta;thetaMinus(i)=thetaMinus(i)-EPSILON;gradApprox(i)=(J(thetaPlus)-J(thetaMinus))/(2*EPSILON);endCheckgradApprox≈DVex?(frombackpop),就是看这样求出的导数是否接近反向传播算法的值
5神经网络的计算过程theta值初始化(−ϵ≤Θij(l)≤ϵ)(left.-epsilonleqTheta_{ij}^{(l)}leqepsilon ight)(−ϵ≤Θ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)} ight)hΘ(x(i))
计算代价函数J(θ)
反向传播算法计算局部偏导数∂∂Θjk(l)J(Θ)frac{partial}{partialTheta_{jk}^{(l)}}J(Theta)∂Θjk(l)∂J(Θ)
梯度检测
梯度下降或其他高级算法来最小化代价函数
重点:
确保在迭代代码中不含梯度检测的代码,因为梯度检测速度比反向传播算法相比很慢,
【人工智能学习笔记】用神经网络完成XOR异或操作原理
构作一个神经网络,用于计算含有2个输入的XOR函数。指定所用神经网络单元的种类。取权值向量(W1,W2,W3,W4,W5)为(0.3,0.3,1,1,-2);
神经网络输入输出关系:Y=f(X1W3+X2W4+Z*W5);
其中Z为隐含节点Nh的输出,Z=f(X1W1+X2W2);
f为输入输出关系函数,θ为0.5,即x=0.5,f(x)=1。