Hornik 等人的工作(http://www.cs.cmu.edu/~bhiksha/courses/deeplearning/Fall.2016/notes/Sonia_Hornik.pdf)证明了一句话,“只有一个隐藏层的多层前馈网络足以逼近任何函数,同时还可以保证很高的精度和令人满意的效果。”
本节将展示如何使用多层感知机(MLP)进行函数逼近,具体来说,是预测波士顿的房价。第2章使用回归技术对房价进行预测,现在使用 MLP 完成相同的任务。
对于函数逼近,这里的损失函数是 MSE。输入应该归一化,隐藏层是 ReLU,输出层最好是 Sigmoid。
下面是如何使用 MLP 进行函数逼近的示例:
在只有一个隐藏层的情况下,该模型在训练数据集上预测房价的平均误差为 0.0071。下图显示了房屋估价与实际价格的关系:
在这里,使用 TensorFlow 操作层(Contrib)来构建神经网络层。这使得工作稍微容易一些,因为避免了分别为每层声明权重和偏置。如果使用像 Keras 这样的 API,工作可以进一步简化。下面是 Keras 中以 TensorFlow 作为后端的代码:
前面的代码给出了预测值和实际值之间的结果。可以看到,通过去除异常值(一些房屋价格与其他参数无关,比如最右边的点),可以改善结果: