概念描述
神经网络是一种重要的机器学习算法,可以用于分类、聚类等多种任务。与其他传统算法不同,神经网络回归得到的模型是一个黑盒子,没有显式的公式或代数表达,但是凭借其复杂的结构,学习效果往往更优。
与其他模型求解问题一样,训练神经网络,是一个最优化问题,即找到让模型效果最好的哪些参数。为了解决这个问题,传统算法有的通过数学解析计算理论最优,有的通过启发式算法搜索效果最好。神经网络的做法,是前向传播和反向传递的组合。
前向传播,是将输入值(观测值)经过一层层的计算(包括线性计算和非线性激活)得到输出值的预测值的过程。算法开始之前,线性计算的参数W和b都是随机给出,因此预测值与真实值之间差异很大。
反向传播,是根据预测值与真实值之间的差异,调整模型参数W和b。为了保证调整参数的方向是减小这一差异,这里用到了梯度下降的原理。
通过两个步骤的不断迭代,最终预测值与真实值之间差异将足够小,神经网络的参数将达到最优。这就是模型训练的过程。下面用数学方式表达。
数学描述
记观测的输入值为 x x x, 输出为 y y y,模型预测值为 y ^ = f ( x ) \hat{y}=f(x) y^=f(x)。
这里 f ( x ) f(x) f(x) 可以是简单的多项式,也可以是复杂的无法写出公示的黑盒子。x下面我们用一个一般线性函数 f ( x ) = w x + b f(x)=wx+b f(x)=wx+b 作为例子进行说明。
初始化神经网络模型时, f ( x ) f(x) f(x)的参数是随机值。对于观测值 x x x,随机参数为 w 0 , b 0 w_0, b_0 w0,b0,计算 f ( x ) = w 0 x + b 0 f(x)=w_0x+b_0