分享

深度学习 | 简析深度学习和神经网络算法的基本思路

 小施施小 2017-06-27

深入学习(DL)可能是当前最热门的技术热点之一了。下面是俺看到的一篇文章,简单介绍深度学习和神经网络的基本原理。



最近开始学习深度学习Deep Learning,总体感觉是一种新的算法革命,因为深度学习算法不仅带来新领域问题解决的突破,同时类似卷积神经网络算法本身也有一种普世建模思想,带来全新的方法论变革!很多大型公司和创新企业都涉足深度学习和人工智能AI领域。

当然,深度学习的核心依然是大数据的特征,如果你认为大数据很重要,那么你应该关心深入学习。


“经济学人”说,数据是二十一世纪的新石油。如果数据是原油,数据库和数据仓库是在互联网上挖掘和抽取数据的采油机,那么深度学习视为炼油厂,最终将原油转化为有用和有价值的产品。地下藏有很多“石化燃料”,市场上还有很多钻机和水泵,但没有正确的炼油工具,您就不会提炼有价值的东西,这就是深入学习的重要原因。


今天,用户在线行为,做任何事都会产生数据。与石油不同,数据是“可持续的”,并且“爆炸式”地增长。好消息是,随着数据的不断增长,我们的“炼油机”——深度学习算法越来越好,特别是得益于GPU运算能力和Google开源了度学习的算法库,例如:Tensorflow等。


理论上说:只要数据不是垃圾,那么深入学习就不会有垃圾,因此,数据越多越好。


深度学习算法在过去几十年中有所改善,特别是近一年有了突破性变革,主要是开源库、GPU等算法优化。开发人员已经TensorFlow,Theano,Keras这样的开源框架做出了贡献,都使我们可以轻松构建深度学习算法,就像使用乐高零件一样。而且由于世界各地玩家的需求,GPU(图形处理单元)使我们有可能利用深度学习算法,以高效的方式构建和训练具有令人印象深刻结果的模型!


深度学习:Deep Learning


深度学习逐渐热起来得益于DeepMind公司设计的AlphaGo战胜了世界围棋高手。你可能已经阅读了这个消息,并且知道深度学习是很多令人兴奋技术领域发展秘诀,有很多疯狂的梦想也许成真。


不知您最近感觉到没有,google的网页翻译已经可以自动翻译网页没有阅读障碍。人工智能的发展得益于深度学习计算的强大和解决方案:

  • 人脸识别技术

  • 自动驾驶技术

  • 识别手写数字和文本

  • 视频和图像识别和分类技术

  • 视频内容和语音实时文本

  • 语音识别技术

  • 语言自动翻译

  • 自然语言处理

  • 游戏玩家


人工智能AI,机器学习ML和深度学习DL

人造智能(AI),机器学习(ML)和深度学习(DL)在微博微信都是热点,他们之间区别是什么?

人工智能AI:你可能知道图灵测试:一台电脑通过图灵测试,如果一个人在向计算机提出一些书面问题之后,无法判断书面答复是来自一个人还是计算机。


Peter Norvig和Stuart Russell定义了计算机为了通过图灵测试而必须指定的4种能力:

  • 自然语言处理:以英文成功沟通

  • 知识表示:存储计算机读取的知识内容

  • 自动推理:使用存储的知识回答问题,并得出新的结论

  • 机器学习:适应新情况,识别新模式


机器学习ML:是关于采用自动或半自动方法,采用线性回归,KNN,K-Means,决策树,随机森林和SVM训练数据集的一系列学习算法,通过ML建模,算法可以学习并适应新的情况,找到可能有趣和重要的模式、趋势或相关性。ML是数据驱动的,机器学习算法有很多奇怪的术语,需要慢慢学习。


监督类学习:对于训练ML,数据集可以被标注,例如它附有“已知结果或答案”,告诉计算机正确的答案是什么,例如:哪些电子邮件是垃圾邮件,哪些不是;流失或在网等,被称为监督学习,并且诸如线性回归、logistics回归和KNN的算法用于这种监督回归或分类。


非监督类学习:数据集可能不被标记,你是从字面上讲的算法,如K-Mean,关联或Cluster集群模式,它发现没有任何的答案,这被称为无监督学习。


深度学习DL:计算机需要能够完成计算机视觉:感知周围的物体;能够让计算机控制机器人:操纵物体并移动。像脸部识别或手写文字识别这样的事情与计算机视觉有关,需要将图形输入计算机进行分析。语言翻译或语音识别等其他任务与自然语言处理(NLP)有关。所以DL是ML的一个分支,因为它还有一套可以训练和学习数据的学习算法,更具体地说DL由神经网络提供支持。此外,DL实际上可以在机器学习区域之外执行,并协助其他领域,如计算机视觉和NLP,支持人工智能AI的实现!


神经网络:什么是神经网络算法呢?它是否模仿实际神经元细胞的行为?还是某种神奇的黑盒子?形象说神经网络确实类比人的神经网络,通过刺激神经末梢不断反馈后,人们就有了感知,也就学会了,成为一种感知器。


感知器:尽管其新发现的名声,神经网络领域根本不是新鲜事物。1958年,美国心理学家弗兰克·罗森布拉特(Frank Rosenblatt)试图建立“ 感觉,认识,记忆和回应人类心灵的机器”,并将机器称为感知器。


对于机器来模拟人类神经系统的感知器类似于:


现在,上面感知器的图看起来如何工作的,其实很像前面的神经细胞图。感知器和其他神经网络受到我们大脑中真实神经元的启发。注意它只是灵感,不能像真正的神经元一样工作。


感知器处理数据的过程如下:

  1. 在左侧,您有x的神经元(小圆圈),下标1,2,...,m携带数据输入。

  2. 我们将每个输入乘以一个权重 w,也标记为下标1,2,...,m,沿箭头(也称为突触)到中间的大圆。所以w1 * x1,w2 * x2,w3 * x3等等。

  3. 一旦所有的输入乘以一个权重,我们将它们全部加起来,并添加另一个称为偏差的预定数字。

  4. 然后,我们把结果推到右边。现在,我们在矩形中有这个step函数。这意味着如果步骤3的结果是等于或大于0的任何数字,那么我们得到1作为输出,否则如果结果小于0,我们将get=0作为输出。

  5. 结果:输出为1或0。


请注意,如果在激活函数中将偏差移动到激活函数的右侧,如sum(wx)≥-b,那么这个-b称为阈值。因此,如果输入和权重的总和大于或等于阈值,则激活触发1。否则,激活结果为0。选择哪种方法帮助您更好地理解,其实这两种表示方式是可互换的。




下面添加另一个感知器图,这一次每一步用不同颜色。非常重要的是,您完全了解它并记住每一步中发生的情况,当我们讨论更复杂的神经网络结构时,将忽略图形中的中间步骤:


  1. 输入进入感知器

  2. 权重乘以每个输入

  3. 求和然后加上偏见

  4. 启用激活功能。


请注意,这里我们使用一个阶梯函数,但还有其他更复杂的激活函数,如Sigmoid,双曲正切(tanh),整流器(relu)等。

输出被触发为1或不是0。注意,我们使用y帽来标记由感知器模型产生的输出


在将来,有时可能会简化感知器,而不用提及步骤3和4.我们刚才谈到的这种感知器也是单层感知器,因为我们将输入直接处理成输出,而不需要任何更多的神经元层在中间:



感知器:直觉理解

为了理解感知器,我们来看一个不一定是现实但非常简单的例子。


假设下面因素决定你是否想学深度学习,有三个因素影响您的决定:

  1. 掌握DL后可以赚更多的钱(是的,1,否:0)

  2. 相关数学和编程是否容易(是的:1,否:0)

  3. 您可以立即使用DL,而不需要昂贵的GPU(是的,1,否:0)


我们使用x1,x2和x3作为每个因素的输入变量,并为每个因素分配一个二进制值(1或0),因为答案只是“是”或“否”。假设你真的很喜欢DL,你愿意克服你对数学和编程的一生的恐惧。而且您也有一些储蓄现在投入昂贵的Nvidia GPU来训练您的DL型号。假设这两个因素同样不那么重要,但是,在学习DL之后花费了大量的时间和精力,您真的想要赚更多的钱。


所以对投资回报的期望很高,如果你以后不能赚更多的钱,你不会浪费你在DL上的宝贵时间。

为了了解您的决策偏好,让我们假设您在学习DL后有100%获得更多收益的概率,因为市场需求很少。所以x1 = 1。让我们说数学和编程是超级难。所以x2 = 0。最后,假设你必须拥有像Titan X这样的强大的GPU,所以x3 = 0。好的,我们已经准备好了输入,也可以初始化权重。


我们设定权重:w1 = 6,w2 = 2,w3 = 2。重量越大,相应输入的影响越大。所以,因为你最重视挣钱来决定学习DL,w1> w2和w1> w3。


我们假设阈值阈值为5,这相当于偏置项偏差为-5。我们加上这一切,加上偏见标准检验。


检查以下内容以确定您是否使用感知器来学习DL。



注意阈值为5,如果你想赚更多钱,就要学习深入学习技术。这两个数学公式都很简单(x2 = 1),并且您不需要花钱购买GPU(x3 = 1),如果以后无法赚取更多的钱,您仍然不会学习DL,见下图:



现在你知道偏差/阈值的技巧。这个5的高阈值意味着您的主导因素必须满足感知器触发1的输出,否则,输出将为0。


有趣的事情:改变权重和阈值/偏差将导致不同的可能决策模型。因此,如果我们降低从阈值的阈值= 5至阈值= 3,则我们有更多的可能的方案的输出为1。现在,最低要求用于输出= 1是:


  1. 情景1: 你以后会赚更多的钱,所以x1 = 1保证您决定学习DL, 无论x2和x3的值如何

  2. 情景2: 数学很简单,您不需要购买GPU,所以x2 = x3 = 1也保证您决定学习DL, 而不管x1的值如何


下面是说明:



感知器:行动学习


前面简单的例子可以帮助您了解感知器如何学习。现在,我们用这个例子与输入和权重一起来说明单层感知器,尽管有限制可以实现它。



在一个真正的DL模型中,我们给出了输入数据,我们并不能改变。同时,在训练神经网络模型之前,偏置项被初始化,假设我们假设偏差为7。


现在,我们假设以下输入数据,假设情景:1-你会赚更多的钱;2-DL的数学和编程将是困难的;3-你必须花费1400美元才能使用GPU来工作在DL上。


最重要的是,我们假设你实际上想要学习深入学习,我们将它作为理想的感知器正确预测或确定理想的输出:



我们进一步假设权重初始值:



输入数据,偏差loss和输出标签:



当然神经网络的实际输出与您想要学习DL的真正决定有所不同。那么,由于实际和期望的输出之间的差异,神经网络应该如何帮助自己学习和改进呢?


我们不能改变输入数据,现在我们已经初始化了我们的偏差。所以我们唯一可以做的就是告诉感知器调整重量!如果我们告诉感知器将w1增加到7,而不改变w2和w3,那么:



调整权重是感知器学习过程的关键。具有分段函数的单层感知器可以利用下面列出的学习算法在处理每组输入数据后调整权重。尝试用这个算法更新权重:



我们完成了一个简单的有点不太现实的例子,其实,我们不需要购买一个带GPU的电脑。如果您正在训练较小的数据集作为初学者,则很有可能不需要GPU。然而,当您开始使用大量图像文件训练更大的数据集时,您可以使用AWS,Cloud google或者Google TPU等云服务,而不是真正的去买GPU电脑。(我测试了一下,一个小时的成本大概1美金,不包括存储)。

此外,DL的数学原理不容易,但也不是不可逾越的。

大多数情况下,我们只需要掌握一些矩阵运算和基本演算。但请记住,也不是什么很简单的事情,还需要有基于Python 的Numpy等数据预处理和计算能力。


激活函数不能是线性的,因为具有线性激活功能的神经网络只有一个隐含层,而不管其架构如何复杂。网络的输入通常是线性变换(输入*权重),但现实世界问题往往非线性的。为了使输入数据非线性,我们使用称为激活函数的非线性映射。


激活函数是确定特定神经特征的存在的决策函数。它映射在0和1之间,其中零表示特征不存在,而1表示该特征存在。不幸的是,在权重中发生的小变化不能反映在激活值中,因为它只能取0或1。因此,非线性函数必须在该范围之间是连续的并且可以区分。神经网络必须能够从-∞到+∞的任何输入,但是在某些情况下,它应该能够将其映射到范围在{0,1}之间或{-1,1}之间的输出 - 因此需要激活功能。


在激活函数中需要非线性,因为其在神经网络中的目的是通过权重和输入的非线性组合产生非线性决策边界。


下图是卷积神经网络的深度学习模型:



俺边学习边分享!


改编原文:https:///towards-data-science/introducing-deep-learning-and-neural-networks-deep-learning-for-rookies-1-bd68f9cf5883




沈浩老师

——————
中国传媒大学新闻学院教授、博士生导师
中国传媒大学调查统计研究所所长

大数据挖掘与社会计算实验室主任

中国市场研究行业协会会长







    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多