神经网络与深度学习笔记(一)

第一章 使用神经网络识别手写数字

1.1 感知器

一个感知器

    一个感知器接受几个二进制输入,并产生一个二进制输出:
这里写图片描述
    神经元的输出:0或者1,由分配权重后的总和大于或小于阈值来决定。权重衡量这个输入的重要程度,权重被赋予更大的值,则意味着这个输入对于结果很重要。
这里写图片描述

多个感知器

这里写图片描述
    第一列感知器权衡输入做出三个非常简单的决定;第二列感知器中的每一个都在权衡第一列的决策结果并做出决策。以这种方式,第二列中的感知器比第一列的感知器做出更复杂和抽象的决策。在第三列中的感知器甚至能进行更复杂的决策。这样,一个多层的感知器网络可以从事复杂巧妙的决策。
    注意,一个感知器只有一个输出,上图中一个感知器看上去有多个输出,实际上,它们仍是单输出的。多个感知器输出箭头仅仅便于说明一个感知器的输出被用于其他感知器的输入。

1.2 S型神经元

这里写图片描述
    到底什么才是网络学习权重和偏置?
    如果,我们对权重或者偏置进行一点微小的改动,而这些改动能够引起输出发生微小的变化,那我们可以利用这一事实来修改权重和偏置,让网络能够表现得像我们想要的那样。例如,假设网络错误地把一个9的图像分类为8。我们能够计算出怎么对权重和偏置做些小的改动,这样网络能够接近于把图像分类为9。然后重复这个工作,反复改动权重和偏置来产生更好的输出。这时网络就在学习。
    对于单个感知器来说,上一个权重或偏置的微小改动,有时候会引起那个感知器的输出完全翻转,如0变到1。这样的翻转可能接下来引起其余网络的行为以极其复杂的方式完全改变。因此,虽然你的9被正确分类,网络在其他图像上的行为很可能以一些很难控制的方式被完全改变。这使得逐步修改权重和偏置来让网络接近期望行为变得困难。
    引入S型神经元解决这个问题。S型神经元和感知器类似,但是S型神经元对权重和偏置的微小改动只引起输出的微小变化。
这里写图片描述
    S型神经元的输出不是0或1,而是 s i g m o i d ( w x + b ) ,它可以是0和1之间的任何实数。
这里写图片描述
    sigmoid函数具有平滑性,平滑性意味着权重和偏置的微小变化,会让神经元产生一个微小的输出变化。这个变化可以近似表示为:
这里写图片描述

1.3 神经网络的架构

这里写图片描述
    由S型神经元而不是感知器构成的多层网络被称为多层感知器。
    前馈神经网络:以上一层的输出作为下一层的输入。网络中没有回路,信息总是向前传播,从不反向回馈。
    递归神经网络:存在反馈回路,当前神经元的输入依赖于上一个神经元的输出。

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

这里写图片描述
    网络的输出层包含10个神经元。哪一个神经元具有最高的激活值,就表明网络认为是哪一个数字。
    如果这样设计:输出层包含4个神经元,把每一个神经元当做一个二进制值,结果取决于它的输出更靠近0还是1。4个神经元足够编码这个问题,因为2^4=16大于10种可能的输入。经验上来说,这种设计不好。从根本上理解神经网络,其实神经元也是靠对数字的形状进行一层层的抽象,最后组合起来进行判断的。上述的设计,会让第一个输出神经元去判断数字的最高有效位是什么。把数字的最高有效位和数字的形状联系起来不是一个简单的问题。经验表明,用隐藏层探测数字的组成形状是靠谱的设计。

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

损失函数

C ( w , b ) = 1 2 n x | | y ( x ) a | | 2

问题

    为什么要用上述损失函数,而我们最初感兴趣的内容是能正确分类的图像数量,为什么不直接最大化这个数量,而是去最小化上述损失函数?因为被正确分类的图像数量所关于权重和偏置的函数并不是一个平滑的函数。大多数情况下,对权重和偏置做出的微小变动完全不会影响被正确分类的图像数量,这会导致很难去解决如何用权重和偏置中的微笑改变来取得更好的效果。

梯度下降

这里写图片描述
这里写图片描述

猜你喜欢

转载自blog.csdn.net/weixin_37904412/article/details/80949181