神经网络基本原理
文章目录
前言
神经网络是一门重要的机器学习技术,它是目前最为火热的研究方向----深度学习的基础。本文以一个生活中的小场景切入,不去调用别人训练好的神经网络模型,手撸每一行代码,详细的介绍了人工神经网络的本质基本原理。
一、神经网络是什么?
神经网络是机器学习中的一种模型,是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。
1.1 神经网络的分类
- 前馈神经网络:在网络中,当前层的输入只依赖于前一层的节点输出,与更早的网络输出状态无关;
- 反馈神经网络:将输出经过一步时移再接入到输入层,输入不仅仅取决于上一层节点的输出
1.2 神经网络结构图
一个经典的神经网络,一般包含三个层次的神经网络。红色的是输入层,绿色的是输出层,紫色的是中间层(也叫隐藏层)。输入层有3个输入单元,隐藏层有4个单元,输出层有2个单元。
几点说明:
1️⃣ 设计一个神经网络时,输入层与输出层的节点数往往是固定的,中间层则可以自由指定;
2️⃣ 神经网络结构图中的拓扑与箭头代表着预测过程时数据的流向,跟训练时的数据流有一定的区别;
3️⃣ 结构图里的关键不是圆圈(代表“神经元”),而是连接线(代表“神经元”之间的连接)。每个连接线对应一个不同的权重(其值称为权值),这是需要训练得到的。
1.3 神经元
下图为生物神经网络中一个神经元。
我们的人工神经网络也可以类比生物神经网络,神经元模型是一个包含输入,输出与计算功能的模型。输入可以类比为神经元的树突,而输出可以类比为神经元的轴突,计算则可以类比为细胞核。
下图是一个典型的神经元模型:包含有3个输入,1个输出,以及2个计算功能。中间的箭头线称为“连接”,每个箭头线上都有一个“权值”。一个神经网络的训练算法就是让权重的值调整到最佳,以使得整个网络的预测效果最好。
我们使用a来表示输入,用w来表示权值。一个表示连接的有向箭头可以这样理解:在初端,传递的信号大小仍然是a,端中间有加权参数w,经过这个加权后的信号会变成aw,因此在连接的末端,信号的大小就变成了aw,最终神经元计算得到的输出信号z=g(a1w1+a2w2+a3*w3)。
1.4 为什么神经网络能预测?
从宏观上来理解:根据历史数据(即训练集),利用神经网络,建立从输入到输出之间的映射关系,并且假定该映射关系在未知的预测集上也同样成立,从而在给定预测集输入的基础上给出输出,实现预测。
具体到上图的神经元模型就是利用三个已知属性的值a1,a2,a3,通过神经元计算公式,计算出未知属性的值z。这里,已知的属性称之为特征,未知的属性称之为目标。假设特征与目标之间确实是线性关系,并且我们已经得到表示这个关系的权值w1,w2,w3(训练集训练得到的)。那么,在遇到未知数据集时,我们就可以输入未知数据集的特征(已知属性a1,a2,a3),通过神经元模型预测新样本的目标(未知属性z)。
二、 一个最简单的神经网络模型
人脑中的神经网络是一个非常复杂的组织,成人的大脑中估计有1000亿个神经元之多。今天我们只用一个神经元对案例中的问题进行信息处理。
1.去不去爬山?
为了能说清楚神经网络的本质和实际意义,我们首先引入生活中的一个场景——去不去爬山?
小A、小B、小C、小D是登山爱好者,经常相约一起去爬山。我们用数字“1”表示去爬山了,数字“0”表示没去爬山,前五次的结果如下表:
小A | 小B | 小C | 小D |
---|---|---|---|
0 | 1 | 0 | 1 |
1 | 1 | 0 | 1 |
1 | 0 | 1 | 0 |
0 | 0 | 1 | 0 |
0 | 1 | 1 | 1 |
今天四个人又相约去爬山,结果如下:
小A | 小B | 小C | 小D |
---|---|---|---|
0 | 1 | 0 | ? |
现在我们根据上面的几组数据找一下规律,预测下小D今天去不去爬山呢?
我们可能已经发现了,小D是不是喜欢小B呢?因为每次小B去,小D也会去。今天小B决定去爬山,所以我们预测小D也会去爬山。刚刚我们动用了1000亿个神经元的人脑神经网络对上述问题进行信息收集、处理和计算,最终得到小D会去爬山的结果,待会我们用只有一个神经元的人工神经网络对上述问题进行预测。
2.案例代码
针对上述问题,我们构建一个最简单的神经网络对小D今天是否去爬山做个预测。
2.1 引入类库