前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >多层感知机理解(多层感知机原理)

多层感知机理解(多层感知机原理)

作者头像
全栈程序员站长
发布2022-07-26 09:38:45
1.5K0
发布2022-07-26 09:38:45
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

一.网络的原理和结构

多层感知器(Muti-Layer Percetron)和卷积网络(Convolutional Neural Network)。这两种网络都属于前馈型网络(Feedforward network),其中多层感知器(MLP)是最简单也是最常见的一种神经网络结构,它是所有其他神经网络结构的基础,

好在我对神经网络的了解是从卷积神经网络开始的,对基本的原理和模型已经有了了解,所以学习起来相对容易,先看多层感知机的模型:

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

如何设计一个网络,输入代表像素的值,输出0-9之间的一个正确的数字

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

先把神经元当做数字

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

每个神经元里面是我们要提取的特征值,即像素的灰度值,0表示纯黑,1 表示纯白

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

这784个神经元组成了第一层,即神经网络的输入层

网络的最后一层是输出层,输出的是可能的概率,哪个概率最大,就代表识别的结果是哪个数字

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

网络的中间是隐藏层,包含这一些算法

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

比如网络的第三层,我们已经提取到局部的特征,只需要考虑将局部特征组合起来有多少 可能组成某一个数字

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

那再往前推,前面的一层网络就要能提取出更小的局部特征,把他们组合起来

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

通过权重值w,来提取我们关注的区域的值

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

这个加权和,再通过激活函数映射到[0,1]的区间

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

而通过偏置值,控制加权和不过早的激发

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

将加权和减去一个数,不让不必要的神经元激活,

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

权重代表我们关注什么样的图案,而偏置值代表加权和有多大激活神经元才有意义

在网络的第二层,每一个神经元都和上一层的784个神经元保持全连接

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

每个神经元都带一个权重和偏置值

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

用向量表示

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

所以,网络中每一个神经元更像一个函数,接收输入,输出0-1的值

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

进而整个网络也可以看成一个函数,接收输入,输出一个结果

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

二.网络如何学习

在网络训练的时候,我们需要定义一个代价函数,来告诉网络与正确值的差距

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

定义正确值1,其他为0,将网络输出的结果与实际结果相减,再将他们差的平方加起来,得到一个损失值

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

代价函数输出单个数值,来评价整个网络中的权重和偏置值与正确结果的差距

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

网络需要知道如何调整这些输入参数使输出接近正确的结果

以二维图像为例

随便 选一个输入值,然后考虑向左还是向右

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

计算斜率,斜率为正,表示函数是上升,那么我们梯度的反方向即向左

斜率为负,表示梯度是下降的,我们继续往右找到最低点

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

在每一点这样重复的计算斜率,直到找到局部最低点

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

在三维空间如何计算

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

同样也是计算梯度,沿梯度的反方向下降一小步

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

梯度如何计算:

梯度,就是封装了所有偏导的向量

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

这样我们就有了一个权重向量和一个反向梯度向量

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

将两个向量的对应的每一项相加,得到新的权重,再更新权重,如此循环

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

同时,代价值的绝对值表示每个w和B的重要程度

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

假如有一个函数的在点[1,1]的梯度向量是 [ 3 1 ] \begin{bmatrix} 3\\1\\ \end{bmatrix} [31​]

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

也可以理解为改变x对函数影响更大

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

这样来看,网络的代价函数是把权重和偏置作为输入

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

三.反向传播法

通过代价函数我们得到了误差值

然后需要把所有样本的误差值平均值

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

我们求出的负梯度,同时反映了代价函数值的重要程度,

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

比如样本2,网络输出的值与正确的值差距较大,如何增大这个输出呢

多层感知机理解(多层感知机原理)
多层感知机理解(多层感知机原理)

如何让这个结果变大

我们知道这个结果是上一层的输出+权重+偏置再通过激活函数得到的

那么有三个方法

*增大上一层的输出

*增加权重

*增加偏置值

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

如何增加权重

比较亮的神经元,对应的权重对结果影响相对更大,所以增加相对亮的神经元,训练的效率会更高

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

所以当反向传播的时候,不仅要看高边哪些权重,还要看改变那些权重性价比高

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

如何改变上一层的输出

和更改权重一样,如果我们需要结果更大的时候,依据权重的大小,对上一层的结果做出呈比例的改变

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

结果2期待上一层的值如何改变,比如增大

结果3期待上一层的值如何改变,比如减小

我们把这些期待全部加起来,作为如何改变上一层的值的指示

如此往复循环,达到训练的效果

这就是反向传播的理念

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

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/128227.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档