深度学习之神经网络的结构
神经网络的结构
当你看到这三个“3”的时候,其实它们还是有着不小的区别,但是我们的大脑可以分辨出来。
现在我们提出一个小问题:一个N*N像素的方格,我们来编写程序判断里面的数字到底是什么?
要解决这个问题,我们首先来学习一下什么是神经网络。
神经网络: 它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。
首先通过名字来理解;神经(元)网络,神经(元)可以理解为一个装有数字的容器,放着许多的0到1之间的数字。
看一个例子:这个28*28=784的像素点存放着许多神经元,每一个神经元存着各自的灰度值(0表示全黑,1表示全白),我们把神经元里面的数字叫做激活值,这784个神经元就构成了网络的第一层。
中间会有一些隐含层,里面进行着数据处理的具体工作,最后一层得激活值对应着是这个数字的可能性。上一层的激活值影响着下一层的激活值。所以神经网络的核心就是:一层得激活值是怎么通过运算得出下一层的激活值。
现在我告诉你们了,我们是这样做的,现在我们来讨论一下我们为什么可以通过这种层状的结构来做到智能判断。
例如在这个数字的例子中:我们可以看到0-9这些数字就是由一些“0”或者“1”等几个简单的组件构成的,同理这些小的组件又可以由更小的组件构成,这就是我们的每一层。更一步的扩展,我们可以将这个思想拓宽到图像识别,语音识别等更有意思的领域。世界上的各种人工智能的任务,都可以转化为抽象的元素,一层一层的抽丝剥茧。
知道了每一层的含义后,我们就可以通过给每一种小组件赋予不同的权重以及偏置来计算,来推断。
在神经元中,output = sum (weights * inputs) + bias。偏置实际上是对神经元激活状态的控制。
然后对于这个计算过程,我们可以简化为一个矩阵计算,所以我们可以看到机器学习和线性代数是不分家的。
最后简化成代码就非常的优雅了。
下一章节就更新我们到底是怎样获取合适的权重和偏置。
梯度下降法
深度学习
更新中~~