主要来自下面这条新闻:微软研究人员在深度神经网络(deep neural network)上取得突破,使其在性能上能赶上目前最先进的语音识别技术。我只记得关于介绍里面说的很多用概率才能解决,包括语音识别,那么这一次是什么原理,能深入浅出地讲解吗?求讲课。Wiki上没写那个deep,不过我已经不大懂了。
从一个具体的例子出发,可能更容易理解这个概念。
比如,用深度神经网络来预测机票的价格。
你可以想一想,机票价格和哪些因素有关?
很容易想到是下面这些:
时间(比如客流高峰机票贵)
路程(一般而言越远越贵)
航空公司(比如有些廉价航空公司的价格很优惠)
差不多就是这些因素。再仔细想想,实际上还和机场有关。比如去某些大城市和枢纽机场的飞机票,因为竞争充分、返程空载率低等因素,往往机票价格较低。而这些机场周边城市的机场,路程差不多,却往往价格较高。所以我们可以把路程因素替换成始发地机场和目的地机场两个因素(始发地和目的地两个因素实际上隐含了路程因素)。
因此,我们得到了4个因素:
出发地机场
目的地机场
出发日期
航空公司
这4个因素,就可以作为我们的深度神经网络的输入。
下图中,我们用圆圈表示神经元(模拟生物神经元的一些结构)。这些神经元是相互连接的。
图片来源:CS231n网上课程
神经元可以分为3种不同类型的层:
输入层(上图左边的红色)
隐藏层(上图中间的蓝色)
输出层(上图右边的绿色)
我们看到,上图的神经网络包含了2个隐藏层,我们把这样的网络称为深度神经网络。换句话说,深度神经网络中的“深度”是指具有不止一个隐藏层。
上图仅仅是一个简单的深度神经网络的示意图。实际应用中的深度神经网络通常会比这个复杂。比如,上图输入层有3个神经元,但是机票价格取决于4个因素,所以我们需要4个神经元。另外我们可能也需要更多的隐藏层来进行运算。所以我们预测机票价格的深度神经网络大概是这个样子的。
输入层接收输入数据。上图中,输入层的4个黄色神经元分别代表出发地机场、目的地机场、出发日期和航空公司4个输入。输入层将输入传递给第一个隐藏层。
输出层返回输出数据(机票价格预测)。
那么,具体而言,机票价格是如何预测的呢?
神经元之间的每个连接都关联了一个权重。这个权重决定了输入值的重要性。
如果我们对领域一无所知,那么我们可以随机设置初始权重。有时候,如果我们已经有一些领域知识,那么为了加快深度神经网络的训练速度甚至改善最终表现,我们可以进行一些有意识的调整。比如,从经验上说,出发日期对机票价格的影响比较大,那么,我们就可以给出发日期一个较高的权重。
图片来源:CodeProject
然后,每个神经元都有一个激活函数。
简单来说,激活函数的目的之一是“规整化”神经元的输出。比如,最常用的激活函数ReLu,定义非常简单,就是max(0, n),换句话说,输出是正数的话,就保留输出,输出是负数的话,就将输出规整化为0。例如,假定有3个输出,分别是0.15、1.32、-0.37,经ReLu规整化之后,输出就变为0.15、1.32、0。这样规整化之后,后续的运算就比较方便。
一旦一组输入数据通过了神经网络的所有层,它就将通过输出层返回输出数据。
设计好了深度神经网络之后,我们还需要训练它。对于机票价格预测而言,那我们就需要机票价格的历史数据。
我们给深度神经网络提供数据集的输入,将深度神经网络的输出(预测票价)与数据集的输出(历史票价)进行比较。训练完整个数据集之后,我们可以创建一个损失函数。损失函数用于衡量深度神经网络的输出和数据集中的实际输出差异有多大。
然后,我们改变深度神经网络的权重,重新开始训练,直到损失函数足够低为止。
那么,如何改变权重呢?最粗暴的就是随机改变,随机尝试所有组合,直到找到一个满意(损失函数足够小)的组合。
这样的话,效率不是很高。所以,就发展出了各种改变权重的技术。最流行的技术,大概是梯度下降。
梯度下降是一种可以让我们找到一个函数的极小值的技术。
我们在每个数据集迭代之后少量增加权重,通过计算一定权重下的损失函数的导数(梯度),我们能够看到极小值在哪个方向上。这就比随机乱试效率高多了。
图片来源:Sebastian Raschka
一旦我们训练好了深度神经网络,我们就可以用它来预测未来的机票价格。
但是,有的时候,我们会遇到这样的情况,就是训练好的深度神经网络在训练数据集上跑得好好的(也就是说,损失函数的值很低),但真的拿它去预测未来的价格却并不准。这个问题称为过拟合。简单来说,过拟合意味着,深度神经网络模型过于贴近训练数据,以至于丧失了对新数据的适应性。
为了避免过拟合的问题,收集历史数据后,我们不要用所有历史数据来训练我们的深度神经网络。相反,我们随机地将历史数据切分成两部分,一部分作为训练集,一部分作为测试集。用训练集来训练我们的深度神经网络,而用测试集来检验我们训练的结果。这样,如果出现了过拟合的情况,在使用测试集检验的时候就能及时发现。这就类似把流水线上的工人分一部分去做检验员,在出厂前就发现产品的问题,而不是产品上市了出现问题再召回。
本文预测机票价格的例子取自@radu_raicea的Want to know how Deep Learning works? Here’s a quick guide for everyone. 谨致谢忱。
转自悟空问答 作者 论智
本文由「华尔街俱乐部」推荐,敬请关注公众号: wallstreetclub
声明:本文仅代表作者个人观点,不构成投资意见,并不代表本平台立场。文中的论述和观点,敬请读者注意判断。
版权声明:「华尔街俱乐部」除发布原创市场投研报告以外,亦致力于优秀财经文章的交流分享。部分文章推送时未能及时与原作者取得联系。若涉及版权问题,敬请原作者添加WSCHELP微信联系删除。
华尔街俱乐部凝聚华尔街投行的高端资源,为中国民营企业“走出去”提供全方位的顾问服务,包括企业赴美上市、战略投资、并购、私募路演和投资者关系等。在投资理念和技术方面提供华尔街投行专家实战培训,为您进入华尔街铺设成功之路。