介绍反向传播算法(Back Propagation)的文章有很多,但讲得通俗易懂的很少,有的只给出公式推导,很难理解,有的虽然给出了例子,但介绍得过于复杂,看完之后在脑海里很难形成一个清晰且具象的认识。本文将通过一个简单的例子来说明反向传播算法,目标是读者顺着这个例子读完之后,对反向传播算法有一个清晰的认识。文章首先简单介绍神经元和神经网络的基本概念,然后通过前向传播引出优化问题,即最小化Loss函数,再引出通过反向传播来求解参数,最后解决问题。
神经元
神经元是构成神经网络的最小单元,可以理解为一个对输入产生变换的函数,示意图如图1:
图1
每一个输入x都有一个对应的权重w,函数的功能是将每个输入乘以对应的权重然后求和,再用一个激活函数进行非线性变换,常用的激活函数有ReLU,sigmoid,tanh等。图1的公式表达如下:
神经元也称为感知器或感知机(Perceptron)。
神经网络
由于单个神经元表达能力有限,一般将多个神经元组合在一起构成神经网络来解决问题。下面的神经网络有一个输入层(有两个神经元),一个隐藏层(两个神经元),一个输出层(一个神经元)。
图2
接下来,我们要用这个神经网络来根据身高和体重预测性别,训练数据如表1。