读书笔记-神经网络与深度学习(一)-使用神经网络识别手写数字

目录如下

1、感知器

2、S型神经元

3、神经网络的架构

4、一个简单的分类手写数字的网络

5、使用梯度下降算法进行学习

6、实现我们的网络来分类数字

7、迈向深度学习



1、

感知器规则可以重写为:


2、S型神经元

S型神经元和感知器类似,但是被修改未权重和偏置的微小改动只引起输出的微小变化。

S型神经元定义为:


S型神经元与感知机的区别:S型可以输出0、1和它们中间的数,而感知器只能输出0、 1 


3、神经网络的架构





设计网络的输入输出层通常是比较直接的。例如,假如我们尝试确定一张手写数字的图像上是否写的是“9”,很自然的,我们可以将像素强度进行编码作为输入神经元来设计网络。如果图像是一个64x64的灰度图像,那么我们需要4096=64x64个输入神经元,每个强度取0和1之间合适的值,输出层只需要包含一个神经元,当输出值小于0.5时表示“输入图像不是一个9”,否则是。

隐藏层设计比较复杂,通过经验法则来总结隐藏层设计流程是不可行的,相反,研究人员开发了许多最优法则,这些法则可以帮助权衡隐藏层数量和训练网络所需的时间开销。后面将会介绍。


前馈神经网络:上一层的输出作为下一层的输入,这意味着网络没有回路,信息总是向前传播,从不反向回馈。

递归神经网络RNN:反馈回路是可行的,设计思想是:是具有休眠前会有一段有限的时间内保持激活状态的神经元。这种激活状态可以刺激其他神经元,使其随后被激活并同样保持一段有限的时间,这样会导致更多的神经元被激活,最终得到一个级联的神经元激活系统。RNN更接近大脑的实际工作。


4、一个简单的分类手写数字网络

   分类单独的数字

 

训练数据为28x28的手写数字图像组成,输入层包含28x28=784个神经元,值为0.0表示白色,值为1.0表示黑色,中间数值表示逐渐暗淡的灰色。

第二层为隐藏层,我们用n表示神经元的数量,我们讲给n实验不同的数值,先选择n=15.

网络的输出层包含10个神经元,若第一个神经元被激活,即输出为1,表明网络认为数值为1,若第二个神经元被激活,则网络认为为2,一次类推。



为什么不用二进制编码表示输出? 基于经验主义,10个的更好,首先考虑10个神经元的情况,我们首先考虑一个输出神经元,它告诉我们一个数字是不是0,它能这么做是因为它能权衡隐藏层来的信息


上面所说只是一个启发性的方法,没有什么理由表明这三个层的神经网络必须按照我们所描述的方式运行,即隐藏层是用来探测数字的组成形状,可能一个聪明的学习算法会找到一个合适的权重让我们仅仅用4个输出神经元就行,但是这个启发性的方法通常会很有效,他会节省大量时间去设计一个好的神经网络。


5、使用梯度下降算法进行学习

mnist数据分为两个部分,第一部分包含60,000个训练数据的图像,描述了250个手写样本,这些图像是28x28大小的灰度图像,第二部分是10,000幅用于测试数据的图像,大小和训练集相同。

用x表示一个训练输入,为了方便,把每个训练输入x看成28x28=784维向量,每个向量中的值代表图像中单个像素的灰度值。我们用y=y(x)表示对应的期望输出,这里y是一个20维的向量。


接下来,我们希望找到权重和偏置,以至于网络的输出可以拟合所有的输入x,,为了量化这个目标,定义一个代价函数


要找的代价函数的最小值,在图像中可以一眼看到。一种可行办法是用微积分求极值。运气好的话,只有一个或者几个少数变量的函数,但是变量过多就是噩梦了。现实确实最大的神经网络有大量的参数,机器复杂。

=


为了使梯度下降能够正确运行,我们需要足够小的学习速率是的方程能得到很好的近似,如果不这样,我们会以偏差大于0 结束,学习速率也不能太小,这样会使变化太小,在真正应用中,学习速率一般是变化的。



其中两个求和符号是在当前小批量训练数据中的所有训练样本Xj上进行的,然后我们在挑选另一随机选定的小批量数据去训练。直到我们用完了所有的训练输入,这杯成为完成了一个训练迭代(epoch),然后我们就开始了一个新的训练迭代期。



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值