神经网络-识别手写数据集


前言

简单神经网络python实现


一、初识神经网络!

1.1 神经元如何工作

在学习神经网路之前,我们先来了解一下神经元是如何工作的:
生物上,神经元有着多样的形式,但是所有的神经元都是将电信号从一端传输到另一端,沿着轴突,将电信号从树突传到树突。继而,这些信号从一个神经元传到另外一个神经元。
现在我们已经了解了,神经元是如何去工作的===>它接收了一个电输入,输出为另外一个电信号。映射到机器学习上就是,接收一个输入—>中间处理===>弹出一个输出。

1.2 阈值?

在生物上,神经元不会立即反应,而是会抑制输出,直到输入增强,强大到可以触发输出。我们可以认为在产生输出之前,输入必须达到一个阈值。就比如往水杯里面倒水—水满了就会溢出。换而言之,我们可以想象一下,用打火机去烧手指,如果你的火在手指下停留的时间短,你几乎不会有疼痛,但火稍微久一点,你就会感到被烧到了,
这就相当于是达到了阈值,你的神经元将输入的信号转换为疼痛感了。
了解了阈值这个概念以后,我们就需要定义神经网络里面阈值的激活函数了,
在数学上,有许多激活函数可以达到这样的效果,如简单的阶跃函数,以及S函数(sigmoid function)===>y=1/1+e^-x
如图我们可以这样理解,当输入较小的时候,输出为0,一旦输入达到阈值,输出就一跃而起。就如神经元被激发了。

在这里插入图片描述

1.3 多层神经网络

我们知道了一个神经元的输入输出了。
但是,实际中,每个神经元接受来自其之前多个神经元的输入,并当神经元被激发了,它也同时提供信号给更多的神经元。将这种理解映射到神经网络上,也就是将这种自然形态映射到我们人造的模型上:就是构建多层神经元,每一层中的神经元都在与其前后层的神经元互相连接.

在这里插入图片描述

1.4 权重

这里,我们需要解释w是什么?
w就是我们常说的权重,较大的权重将放大信号,较小的权重将弱化信号。
加上权重的神经网络图:
在这里插入图片描述

1.4 思考复杂模型?

对于这种简单的模型我们可以手写计算,但是对于更复杂的模型我们应该怎么办呢?
这就可以联系到我们学过的线代的知识,利用矩阵计算,而这也是更容易让计算机去表达的一种计算形式。
如:你有三个输入记为in1,in2,in3,你的权重就会有3*3=9个。
要算出你的总输入值:
在这里插入图片描述
联系上面的三层神经网络图这是很清晰的,利用这种形式,我们将这模型推广可以写为,W为权重矩阵,I为输入矩阵
最后输出则为:,O为输出矩阵。
上面我们介绍了输入和输出两层。但隐藏在输入输出中还有若干的隐藏层我们也称其为中间层。

在这里插入图片描述
在这里插入图片描述

总结

此项目github地址为:神经网络,代码也在其中。