神经网络快速入门学习笔记

一、一个简单的神经元

如图就是一个简单的神经元。
2个输入:X1,X2;
1个输出:Y。

w1,w2是weight权重,b是bias偏差;

偏差的重要性是:主要功能是为每个节点提供可训练的常数值(除了该节点接受的常规输入外)

经过这个神经元,处理为w1X1+w2X2+b;
再经过一个激活函数f,则形成输出。
激活函数f通常是非线性函数,目的是将非线性引入神经元的输出中。因为大多现实世界的数据是非线性的,所以希望神经元去学习这样非线性的形式。
在这里插入图片描述
激活函数主要介绍3个:
1、sigmoid:将输入的值压缩成0~1之间的数。
在这里插入图片描述
其图如下:
在这里插入图片描述
2、tanh:压缩到[-1,1]。
在这里插入图片描述
其图如下:
在这里插入图片描述
3、Relu:如果输入是负值,则=0;如果输入是非负值,则不变。
在这里插入图片描述
其图如下:
在这里插入图片描述
4、softmax:对于分类问题,一般选用softmax function作为激活函数,确保输出是代表概率,且加起来=1

二、前馈神经网络

一个前馈神经网络的简单示例如图所示:
具有一个输入层:3个神经元,对应三个输入
一个隐藏层:3个神经元
一个输出层:2个神经元,对应两个输出
在这里插入图片描述
两个前馈网络的示例:
1、单层感知器:没有隐藏层
2、多层感知器MLP(multi-layer-pereptron):有1个或多个隐藏层

1个隐藏层可以学到线性函数,多层隐藏层可以学到线性和非线性函数。

给定一组特征X=(x1,x2,…)和目标y,多层感知器可以学习特征与目标之间的关系,以进行分类或回归。

三、如何训练MLP:反向传播算法

比如有监督的学习:训练数据都是有标记的,即输入和输出都给定。输入经过神经网络后会有输出,与正确输出进行对比,从错误中学习。若发生错误,则通过修改参数的值进行纠正。

最初,所有边缘权重随机分配值,对于训练数据集中的每个输入,都会激活神经网络并观察输出,将输出对比。将错误反向传播给上一层,记录错误并调整权重,重复该过程,知道输出的误差低于预定阈值为止。(即错误的误差是我设定的可接受的范围)

使用反向传播计算梯度,将误差传回网络。使用梯度下降等优化方法,调整权重,减少误差。对于每个训练数据都重复以上步骤,最终网络便学会了。

对于测试集,则将数据输入,前向传播,得到结果即可。

学习来源:https://ujjwalkarn.me/2016/08/09/quick-intro-neural-networks/

猜你喜欢

转载自blog.csdn.net/Shadownow/article/details/113092589
今日推荐