前向传播和反向传播
神经网络理解
神经网络通俗地可以理解成一个函数近似器,它需要近似一个输入x到输出y的映射函数。我们所要训练的网络参数其实就是在拟合这个映射函数的未知量。神经网络的训练可以分为两个步骤:一个是前向传播,另一个是反向传播。
神经网络的典型训练过程如下:
- 定义包含一些可学习参数(或者叫权重)的神经网络
- 在输入数据集上迭代
- 通过网络处理输入
- 计算loss(输出和正确答案的距离)
- 将梯度反向传播给网络的参数
- 更新网络的权重,一般使用一个简单的规则:weight = weight - learning_rate * gradient
前向传播
神经网络前向传播从输入层到输出层:前向传播就是从输入层开始,经过一层层的Layer,不断计算每一层的神经网络得到的结果及通过激活函数的本层输出结果,最后得到输出的过程。
反向传播
- 前向传播计算出了输出值(也即预测值),就可以根据输出值与目标值的差别来计算损失loss。
- 反向传播就是根据损失函数loss来反方向地计算每一层的偏导数,从最后一层逐层向前去改变每一层的权重,也就是更新参数,核心就是损失函数对每一网络层的每一个参数求偏导的链式求导法则。
神经网络迭代本质
神经网络就是通过不断的前向传播和反向传播不断调整神经网络的权重,最终到达预设的迭代次数或者对样本的学习已经到了比较好的程度后,就停止迭代,那么一个神经网络就训练好了。这就是神经网络的本质:通过计算误差、不断修正权重以拟合输入输出的映射函数曲线。
激活函数
参考神经网络激活函数的作用是什么?
不带激活函数的单层感知机和不带激活函数的多个感知机只能解决线性的回归问题,使用激活函数增强神经网络拟合的非线性能力。
网络、模型和算法区别解析
1、网络:一种简单的网络结构,不包含任何权重参数。net.py
一般用于搭建网络架构。
2、模型:设计一个网络后,在某些数据集上进行训练,得到一个包含权重参数的数据,称为模型。模型一般保存在/model
文件夹中,后续加载后,用于测试和预测。
3、算法:在模型的基础上通过一些代码具体实现某些相关目的,这些代码以及模型文件等等资源被称为某算法。