100天搞定机器学习-Day35 深度学习之神经网络的结构

?

这套Grant Dawei假设每个人都没有神经网络的基础,并解释了新手神经网络的基本概念。当您听说神经网络学习时,您可以理解它的含义。大榭选择了经典的多层感知器(MLP)结构来解决手写数字识别问题。原因是理解经典原创可以更好地理解强大的变体,如CNN和LSTM。

首先看看神经元和他们是怎么连接的

神经元可以理解为数字在0和1之间的容器。以28×28输入图像为例,每个原点是神经元,其中数字代表像素的灰度值,0表示纯黑色,1表示纯白色,这个数字称为“在神经网络中”。激活值“。

%5C

这784个神经元构成了网络的第一层。最后一层中的十个神经元代表十个数字0-9。类似地,它们的激活值也在0-1之间,表示输入图像。数字对应的可能性。网络的中间层称为隐藏层,可以视为黑盒子。这里完成了数字识别的具体工作。这里添加了两层隐藏层。每层有16个神经元。它只是看起来很好看。稍后,您可以稍后进行调整。

%5C

神经网络处理信息的核心机制完全相同。通过特定操作确定一层的激活值,以获得下一层的激活值。上面还提到784个神经元代表数字模式,然后下一层激活值也会产生一些特殊模式,最后输出层中最亮的神经元代表神经网络的选择。

%5C

让我们来看看如何训练,为什么这种分层结构会识别数字?

我们可以拆解这些数字。理想情况下,我们希望倒数第二层中的每个神经元都可以对应于之前的笔划。

%5C

观察隐藏层的第一层,当输入是带圆圈的数字9或8时,某个神经元的激活值将接近1,并且希望图像顶部的所有这些圆形图案会点亮。神经元,所以从第三次到输出层,我们只需要了解哪些组件可以与哪个组合。

%5C

但是你如何识别圆圈?以同样的方式,它可以分成更微妙的问题。

%5C

。神经元。

%5C

然后我们看看连线的作用

如何在第二层(隐藏层的第一层)中的神经元能够识别图像的这个区域中是否存在边缘?

%5C

我们设计允许第二层上的神经元正确识别图像区域中是否存在边缘。

%5C

我们取出第一层(输入层/第0层)的激活值并分配权重(要处理的区域的权重为正,否则为0),以便所有像素值都被加权并且仅累积聚焦区域的像素值。

%5C

绿色为正,红色为负,而较暗则为重量接近0

%5C

因此,如果您想确定是否存在边缘,则只需对圆周围的像素赋予负权重

%5C

计算的权重可以是任何大小

%5C

但我们需要的是将其压缩到0-1

之间

%5C

在这里你需要Sigmoid函数,它是激活函数。

%5C

激活值实际上是加权和的积极程度得分,但有时加权和大于0,并且您不想点亮神经元。例如,如果您希望加权和大于10,请让他开火。添加偏移值以确保它不会被激发。

%5C

权重告诉我们第二个神经元关注的像素模式

偏差告诉我们加权和有多大使神经元的激发有意义

%5C

这里要调整的参数超过13,000个,所以这里所谓的学习就是找到合适的权重和偏移量。一开始我们将神经元称为数字容器,但这些数字取决于输入图像,因此将神经元视为函数更为准确。它的输入是前一层中所有神经元的输出。输出值介于0和1之间。实际上,整个神经网络也是一个函数,输入784个值,输出10个值。但是,它是一个非常复杂的功能,具有13,000个权重和偏移参数。

%5C

%5C

应该指出的是,机器学习,特别是神经网络操作和线性代数是不可分割的。我之前介绍过,请继续:

%5C

神经网络中需要大量的矩阵乘法和S型映射操作

%5C

这种操作非常适合编程。例如,它可以使用Python numpy轻松实现。

%5C

最后,有必要提一下神经网络不再基本上使用sigmoid,更常用的是ReLU(线性整流功能)。

%5C