神经网络算法最近似“深度学习”,不过尽管深度学习在许多机器学习应用中具有巨大的潜力,但是由于深度学习算法往往经过精度调整,一般只适用于特定的应用场景。由于目前我们还未学习较为高深的算法,所以目前我们暂时只讨论一些相对简单的方法,即用于分类和回归的多层感知机(MLP,也被称为前馈神经网络或神经网络),可以将其作为研究深度复杂的深度学习方法的起点。
神经网络模型:MLP可以被视为广义的线性模型,在执行多层处理后得到结论,线性模型的预测公式为:y = w[0]*x[0] + w[1]*x[1] + ...+w[p]*x[p] + b (其中,y是输入特征想x[0]到x[p]的加权求和,权重为学到系数w[0]到w[p]。我们可以将这个公式可视化,如下图所示:
from IPython.display import display
display(mglearn.plots.plot_logistic_regression_graph())
图中,左边的每个结点代表一个输入特征,连线代表学到的系数,右边的结点代表输出,是输入的加权求和。在MLP中,对此重复这个过程计算加权求和的过程,首先计算代表中间的隐藏单元,然后再计算这些隐藏单元的加权求和并得到最终结果。单隐层的多感知机如下图所示:
这个模型需要学习更多的系数(也叫作权重):在每个输入与每个隐藏单元(赢藏单元组成了一个隐藏层)之间有一个系数,在每个隐藏单元与输出之间也有一个系数。
从数学的角度来看,计算一系列加权求和与只计算一个加权求和是一样的。因此,为了让这个模型比线性模型更加强大,我们还需要在计算完每个隐藏单元的加权求和之后,对结果再应用一个非线性函数(通常为校正非线性或叫校正线性单元或relu)或正切双曲线。然后将这个函数的结果加权求和,计算得到输出y。可通过如下示例来进行说明: