欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

神经网络的计算过程

程序员文章站 2024-03-14 11:41:16
...

Hello,大家好,我是Tony

神经网络的计算过程
欢迎大家访问我的个人主页:Tony’s Blog,让我们一起站在巨人的肩膀之上!

神经网络的计算过程对应课程中9.1-9.8

神经网络的计算过程

对于二元分类问题(逻辑回归),系统输出的结果是1或0

对于多元分类问题,神经网络输出的结果是多维向量:
[1000],[0100],[0010],[0001] \left[\begin{array}{c} {1} \\ {0} \\ {0} \\ {0} \end{array}\right],\left[\begin{array}{l} {0} \\ {1} \\ {0} \\ {0} \end{array}\right], \quad\left[\begin{array}{l} {0} \\ {0} \\ {1} \\ {0} \end{array}\right], \quad\left[\begin{array}{l} {0} \\ {0} \\ {0} \\ {1} \end{array}\right]
因此可以类比逻辑回归的代价函数来写出神经网络的代价函数:

一、一些要点

1.逻辑回归的代价函数(加正则化):

J(θ)=1m[i=1my(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]+λ2mj=1nθj2 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}

对于逻辑回归、代价函数、代价函数正则化可以查看这篇博客:逻辑回归模型及代价函数正则化

对于机器学习中为什么要正则化可以查看这篇博客:机器学习中对过拟合的正则化策略

2、神经网络的代价函数

J(Θ)=1m[i=1mk=1Kyk(i)log(hΘ(x(i)))k+(1yk(i))log(1(hΘ(x(i)))k)]+λ2ml=1L1i=1slj=1sl+1(Θji(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}

从上式可以看出 ,这相当于多个逻辑回归代价函数相加

3、反向传播算法(Back Propagation Algorithm)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mBKP8VqU-1581329680833)(E:\Typora\WorkSpace\image-20200206175124153.png)]

利用反向传播算法计算DVec

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CtG0drLb-1581329680834)(E:\Typora\WorkSpace\image-20200206175616537.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cukj9eog-1581329680835)(E:\Typora\WorkSpace\image-20200206193526054.png)]

4、梯度检测(Gradient Checking)

在进行梯度下降之后,要进行梯度检测,以保证梯度下降的正确性

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WMGgWHTU-1581329680836)(E:\Typora\WorkSpace\image-20200210165318872.png)]

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值初始化

(ϵΘij(l)ϵ) (\left.-\epsilon \leq \Theta_{i j}^{(l)} \leq \epsilon\right)

把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)

  • 计算代价函数J(θ)

  • 反向传播算法计算局部偏导数
    Θjk(l)J(Θ) \frac{\partial}{\partial \Theta_{j k}^{(l)}} J(\Theta)

  • 梯度检测

  • 梯度下降或其他高级算法来最小化代价函 数

重点:

确保 在迭代代码中不含梯度检测的代码,因为梯度检测速度比反向传播算法相比很慢,

相关标签: 机器学习