
作者:Matthew Stewart
翻译:车前子
校对:陈丹
本文约5500字,建议阅读12分钟。
本文的知识将提供一个强有力的基础,带你入门神经网络的性能,应用于深度学习应用。
“你的大脑并不产生思想。你的思想塑造了神经网络。”——Deepak Chopra
引文
J. Nocedal y S. Wright, “Numerical optimization”, Springer, 1999
TLDR: J. Bullinaria, “Learning with Momentum, Conjugate Gradient Learning”, 2015
作为阐明神经网络背后的理论以及如何设计和实现神经网络系列文章的第一篇,本文力求向更广泛的受众群体详细、深入的介绍神经网络,使对神经网络的工作几乎一无所知,或相对熟悉但可能还没有完全掌握的读者都能从中获益。我将在这篇文章中介绍神经网络的动机和基础知识。在以后的文章中将对神经网络和深度学习的设计和优化进行更深入的讨论。
本系列教程大部分基于哈佛和斯坦福的计算机科学及数据科学系的课程。
本系列教程中所有(全连接)机器学习的代码都在我的神经网络Github存储库中,通过以下链接就可以找到。
https://github.com/mrdragonbear/Neural-Networks
不论你之前对神经网络有多少了解,都希望你能愉快的看完这篇文章并学到一点知识。现在我们开始吧!
神经网络的动机
没有训练过的神经网络就像刚出生的婴儿:他们对于世界还一无所知(就白板理论而言),只有通过与世界的接触,如获得后验知识,才能慢慢改变他们的无知。算法则是通过数据感受世界——我们通过基于相关数据集训练神经网络来改变它的无知。在这个过程中我们评价的方法是监测神经网络产生的错误。
在深入神经网络的世界前,了解神经网络背后的动机,并理解它们的工作原理是很重要的。为此我们先简要介绍一下logistic回归。
回归是针对定量响应变量(出租车乘客数量,自行车租赁数量)建模并预测的方法,如岭回归、LASSO等。当响应变量是分类变量,这个问题就不再叫做回归问题,而被称为分类问题。
我们来考虑一个二分类问题。目标是基于一系列预测变量X,将每一个观测分到定义为Y的类别(如某一级别或集群)中。
如我们可能会根据病人的特征预测其是否有心脏病。这里的响应变量是分类变量的,只有有限个结局,更明确的说,只有两个结局,因为响应变量是二分类的(是/否)。
这里实际有很多特征,但现在我们只使用MaxHR。
为了做出预测,我们使用logistic回归。Logistic回归通过估计患者在给定X值时患心脏病的可能性P(y=1),来解决这个问题。
Logistic回归通过logistic函数来对P(y=1)建模:
这样,模型就能用S型曲线预测P(y=1),这也是logistic函数的基本形状。β0控制曲线右移或左移c=-β0/β1,而β1控制S型曲线的陡峭度。
注意,如果β1是正数, P(y=1)预测值随着X取值由小到大而从0到1变化,如果β1是负数,二者关系则相反。
作图总结如下:
既然我们明白了怎么控制logistic回归曲线,我们就可以通过调整一些变量来得到我们想要的曲线。
我们可以改变β0来移动曲线的偏移量。
我们可以调整β1来改变曲线的梯度
手工做这些事情太无聊了,而且你也很难调整到理想的取值。为解决这个问题我们用一个损失函数来量化基于目前参数产生残差的水平。然后寻找能够最小化损失函数的参数值。
因此神经网络的参数与网络生成的错误有关,当参数改变时,错误也会改