什么是神经网络
神经网络(Neural Network)是人工神经网络的简称,简单来说,它就是指源于人脑神经网络而构建的一种计算模型,该模型可以用于解决回归问题。
本文所涉及的是最基本的神经网络模型,后续会介绍广泛应用于计算机视觉领域的卷积神经网络(Convolutional Neural Network)以及广泛应用于自然语言处理的循环神经网络(Recurrent Neural Network)。
线性回归模型
为什么我要讲线性回归模型呢?其实就是主要针对对神经网络目前还完全小白的人,为了让你们觉得神经网络并不是离你们很远,也并不是非常复杂的模型。其实它本质上是线性回归模型的推广,只不过神经网络构造的是一个非线性的模型罢了。学完这个,你就可以掌握70%的神经网络模型。
那么,什么是线性回归呢?
为了更加具体,我们举一个房价预测的例子,假设现在你是一个房地产公司聘用的高级数据分析人员,他们交给你一个任务,要你基于他们以往买房子时搜集的数据(下表截取了3组数据)为他们制定一个自动制定房价的模型。
那么,首先为了制定线性回归的模型,我们需要引入一些变量记号。
x1————房屋面积
x2————房间数
x3————离市中心距离
y ————房价
y_p————模型预测的房价
现在,可以开始构建线性回归模型了。
第一步,对模型进行假设
这里的w1、w2、w3、b都是模型参数。
第二步,把数据“喂”给这个模型让它“学习”
要完成房产公司的任务(根据他们提供的新房源的x1,x2,x3,立刻给他们提供一个合适的房价),那么其实只要找到合适的w1,w2,w3和b,问题就迎刃而解了。那么,怎么找到合适的模型参数呢?说的玄乎一点,那就是把数据喂给这个模型让他去学习总结。
现在我们来看看具体它的学习过程吧!
-
初始化模型参数
首先我们可以考虑让模型参数w1,w2,w3,b都为0。 -
用模型来预测房价
用我们的模型对房产公司提供的所有数据(输入x1,x2, x3)进行预测房价(输出y_p),来看看它对刚才那三组数据的预测效果:
好吧,我知道你要笑我了,这个模型太烂了,它不就变成了y恒等于0了嘛, 那难道房子都不要钱了嘛!别急,别急,你想想,这不是模型还没正式开始学习嘛,你得原谅它,它还只是个孩子。 -
评价一下模型的效果
为了评价模型,我们定义一个函数来检测预测房价和真实房价之间的差距,我们给这个差距一个炫酷的名字,叫代价。
单单用一组数据评价模型是不够的,我们假设房产公司提供了m组数据,可以将模型在m组数据上的代价求和取平均,给它一个名字叫代价函数。这里的上标I就表示第I组数据
注意理解,为什么说代价函数C的自变量是w1,w2,w3和b。其实因为y_p的取值是依赖w1,w2,w3,b的,而y,x1,x2,x3都是Excel的数据,都是常数。 -
利用梯度下降法更新模型
首先,我们来思考一个问题,为了很好地完成房产公司交给我们的任务,我们是不是得构建这样一个模型,它能对房产公司以往的数据有很好的预测效果,也就是预测房价y_p要尽可能接近真实房价y,也就是代价函数C(w1, w2, w3,b)要尽可能地小。所以实际的问题现在就转化为了一个数学问题,求解使得C取最小值的w1,w2,w3,b。
这里就要涉及一个炫酷的数学工具的使用了,叫梯度下降法(Gradient Descent)。这个工具还挺复杂的,而且在深度学习里有非常广泛的用处,我之后会再另外开一篇博客具体讲。这里的话我们就只介绍它的作用和使用方法,具体背后的原理就不深究。
简单来说,梯度下降法就是一个工具,它可以通过利用导数(也就是梯度)来更新自变量,从而使梯度不断下降,使我们的代价函数取到最小值。没看懂这句话没关系,我们来看看怎么在我们这个模型了用它。
首先,分别计算一下代