1.什么是神经网络和深度学习
神经网络是一种我们用于预估数据的数学模型。它就像是一个黑匣子,当我们输入一些参数的数值时,通过神经网络我们就可以得到另一些参数的预测值,从这一点来看,神经网络与我们学习自动控制原理和现代控制理论时所接触到的传递函数或是状态空间有一些类似,不同的是我们对于传递函数和状态空间的内部结构是知道的,而神经网络内部的结构我们不知道也不需要知道,从某种意义上讲,不需要知道神经网络内部的规则也正是它的优势所在。
下面我们看一个最简单的神经网络的例子。
假设我们现在手里有若干组数据,每组数据包含两个参数:房屋的面积和它的价格。现在我又有了一个房屋面积的数值,我想利用之前的数据来预测这个房屋的价格该怎么办?
如果我们学过线性回归,我们会知道,通过之前的若干组数据,我们可以将房屋价格与面积的对应关系拟合成如下图的修正线性函数。这里之所以要修正是因为房屋的价格不能出现负值。
有了这个对应函数,我们只要将房屋的面积带入,便可以得到其对应的价格。抽象出来就是,我们输入房屋的size(面积),经过一个对应函数的运算,得到这个房屋的price(价格)。中间的这个对应函数就是一个最简单的神经网络模型。
下面我们将这个问题稍微复杂化一些,我们知道房屋的价格不可能单单只由面积决定,现在我们不仅对房屋的面积做出调查,同时还对每个房屋的卧室数量,邮编和区域富裕程度作出调查,这时我们同样得到若干组数据,每一组包含五个参数,分别是房屋的size(面积),bedrooms(卧室数量),zip code(邮编),wealth(区域富裕程度)和price(价格)。我们可以通过这些数据找到价格与其他四个参数之间的大致关系,但我们同时也可以发现这四个参数之间并不是独立的,换句话说,他们是有关联的:面积和卧室数量可以一定程度上表征了房屋可以容纳的家庭成员数量,邮编可以表征到其他地区的距离,邮编和区域富裕程度一起,又可以表征周边学校的质量。这样一来我们可以先从输入的四个参数首先预估容纳的家庭成员数量,到其他地区的距离,周边学校的质量这三个参数,而后再由这三个参数进一步预估房屋的价格。
这样我们就得到了一个稍微复杂一些的神经网络模型,我们管size,bedrooms,zip code,wealth叫做输入层,管familily size,walkability,school quality叫做中间层,管price叫做输出层。我们将这种神经网络叫作多层神经网络。有了神经网络和输入层数据,我们便可以预测输出层的数据。
那么我们如何得到一个优良的神经网络模型呢?方法就是用许多现成的输入输出数据来训练神经网络,使神经网络模型的预估越来越准,直到达到我们的要求。深度学习就是一种训练神经网络的方法。深度学习神经网络一般来说具有多级隐层。所谓的训练就是指利用深度学习,逐渐优化我们的神经网络,使神经网络的各项参数最终达到最佳,这样我们搭建的神经网络才会具有较强的预测功能。下面我们具体来看看参数是如何经过训练达到最佳的。
2.logistic回归
logistic回归适用于二分分类的情况,所谓的二分分类就是预估结果只有两种,‘是’或者‘不是’,一般我们用1来表示‘是’,用0来表示‘不是’。下面我们来看一个例子:假如我给我的神经网络输入一张图片,我想要得出这张图片是否是猫这一结论,这是便可以用logistic回归来解决。
首先,我们虽然输入的是一张图片,但在电脑存储过程中是以三个矩阵来进行存储的,这三个矩阵分别对应着红,绿,蓝这三种颜色的数值。假设我们的像素是64 * 64的,那么将这张图片划分成64 * 64这么多个小格,提取每种颜色的数值,再将同一个颜色组成一个矩阵,那么便可以得到3个64 * 64的矩阵。
我们习惯性将这三个矩阵中的数值首尾相连,得到一个列向量x,这个列向量同样包含这个图片的所有特征。
之前介绍线性回归时说到,起预测作用的神经网络其实就是某种函数,我们仿照线性函数 的形式,令
, w是与x同长度的列向量,这样得到的就是一个数。确切的说应该是一个概率,
,即当输入为X向量时,
的概率,这样当y估计贴近1时,我们认为判定结果贴近‘是猫’,y估计趋近于0,我们认为判定结果趋近‘不是猫’。由于y估计是一个概率,因此必须介于0和1之间,但这样定义的y估计不一定在0和1之间,于是我们想了个办法,重新定义y估计,令<