前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >经典智能算法快速入门——神经网络概念篇

经典智能算法快速入门——神经网络概念篇

作者头像
包子面试培训
发布2018-04-19 11:21:56
8030
发布2018-04-19 11:21:56
举报
文章被收录于专栏:包子铺里聊IT包子铺里聊IT

在大数据年代,各种机器学习算法的应用也日渐广泛。虽然在实际生产中只要调用各种成熟的算法库即可解决机器学习问题,但我们也需要对这些算法有概念上的了解。小编在这里就逐渐为大家带来各种经典算法的快速入门,希望大家有所收获。

悠久历史

神经网络是一个非常古老的传说。

自从40年代初心理学家 W.W.Mcculloch 和梳理逻辑家 W.Pitts 提出 M-P 模型以来,大家对其研究可谓是一波三折,跌宕起伏。神经网络不断地从「看好」到「被打击,到「被冷落」,再到「被看好」中循环。

以下列举了一些主要的神经网络发展的里程碑:

  1. 1957年,Rosenblatt 第一次建立神经网络感知模型。
  2. 1960年,B.Windrow 提出自适应线性单元,可用于自适应滤波,预测等。
  3. 1969年,M.Minsky 证明单层,甚至多层的神经网络感知能力有限,单层网络甚至不能解决抑或问题。
  4. 1982年,J.J.Hopfield 提出 hopfield 网络模型,首次引入网络能量。
  5. 1984年,Hinton 等人将模拟退火算法引入到神经网络中,提出了 Boltzmann 机网络模型。
  6. 1986年,D.E.Rumelhart 和 J.LMcclelland 提出了著名的 Backword-Propagation 算法。
  7. 1987年,R.Hecht - Nielsen 提出了对向传播神经网。
  8. 1992年,Holland 用模拟生物进化的方式提出了遗传算法, 用来求解复杂优化问题。
  9. 1995年,Mitra 结合模糊逻辑理论,概率论建立了模糊神经网络。
  10. 2006年,Hinton 等人提出深度学习,从此揭开了全新的一个篇章。

在学术界,神经网络作为一种以仿生模型开始建立的智能算法,一直有着较大的争议。

首先,不像 SVM 等经典算法,其本源上并没有一个清晰的数学模型;其次自从 1969 年 M.Minsky 提出单层甚至多层神经网络的感知能力有限后,人们对其有效性产生了很大的怀疑;再者,虽然神经网络模型比较容易理解,但是对其的训练却是 NP-Hard 问题,在实际应用中缺少了很多可行性。

当然,单纯地说神经网络只是人们对大脑探索的一个美好的梦不免过于偏颇;事实上,在解决很多复杂问题时神经网络一直有着很好的应用。

复杂问题

那么什么是复杂问题呢?

相对计算机而言,高难度的数值计算,方程求解是相对容易的问题;而连 1 岁小朋友都可以轻易做到的识别图片中的某一个物体,对传统计算机算法而言却是十分难。

对于那些「感性」,「模糊」,「定义不清」等不需要唯一精确结论的问题,绝大多数传统的算法都无能为力。

神经网络往往这在里大放异彩。

这种「复杂」的问题如果非要用数学来表示的话,那往往需要将问题所关心的对象投射到一个个非常高维度的向量之中(比如一张 n*m 大小的彩色图片,会被投射到 n*m 维度的向量,而每个像素的颜色则表示成每维向量的值),然后「模糊」地找出这些向量之间的关系或者是向量的特征。

对于经典的基于「图灵机」的算法而言,在如此庞大的问题空间中搜索,需要耗费的时间难以想象;而大脑这个大自然创造的「超大规模并行」神经网络,却往往可以在瞬间得到答案。

应用场景

说了一堆玄乎的道理,下面小编就来列举一些情况,帮助判断何时应当使用神经网络,何时有应该考虑其他方法。

首先我们先来看一下不该使用的情况:

  • 对于通过公式,步骤,状态机等描述的问题,应该考虑使用传统方法解决;
  • 对于问题答案都是很有限的问题,应该考虑通过查表解决;
  • 对于能通过专有硬件来解决的问题(比如真随机数生成等);
  • 你尝试要解决的问题会不断地向你无法预料的方向发展「进化」,因为某个类型的神经网络一般只擅长解决一类问题,不断发展的问题无法通过单一神经网络解决;
  • 对指定问题你如果不能十分容易地产生大量的输入输出数据,那神经网络将很难被训练成;
  • 对于那些要求精确解答的问题;

接着,我们再来看一些神经网络也许比较适合的场景:

  • 手中有着大量的被标记过的数据,但是你却对这些数据及其标记的逻辑关系无从下手;
  • 问题内部的约束或条件非常非常复杂(难以用常规方法表示),但你有能通过人类的直觉感到问题应该容易解决;
  • 对问题的答案没有精确要求,而且可以随着时间的改变做小范围的波动。

具体的应用场景来看,神经网络包括:分类,类聚,回归,异常识别,关联挖掘,特征学习等.

那么,那么机器人是否可以用一个神经网络来实现呢(模拟大脑)?

小编的答案是:你想多了。

当前的神经网络还无法单独撑起整个机器人的复杂功能。绝大多数的技能都是由人类对场景模式预编程的结果。包括你熟悉的 Siri,Cotana 等。当然,机器人在处理具体事务的时候,必然会借助神经网络来解决一些模式识别问题。

神经网络与 SVM

这是一个非常有争议的话题,在历史中已经被无数人折腾过了。小编在这里仅仅列一些已被绝大多数人接受的观点。

神经网络和 SVM 在智能算法发展史中代表着两个派别的泰斗级选手。现在绝大多数市面上所能看到的图像识别,行为预测,主题分类等领域的应用,无不是他们俩的身影。

二者在模型上的差异也是显而易见的:神经网络以仿生学起家,模型并非天然图灵机,而 SVM 则一出生便有着精确的数学模型。

正因如此,传统神经网络对比于 SVM 的一个最大的缺点便是它往往不易得到全局的最优解,而且在很多情况下其容易被不精确的训练数据给迷惑,也就是 Overfitting。其实这一点并不难理解,人类大脑也是非常容易被局部最优所误导。

SVM 天生不具备这些问题,而且由于其模型也更加适合图灵机表示,所以大多数情况下,SVM 的计算速度会快于神经网络。但 SVM 也有一些缺陷,比如 SVM 一般只适合做二元分类(元分类的 SVM 复杂度将会大大提高),而且我们必须人为地根据应用场景选择特定的 Kernel 函数。这点上说,神经网络并不需要人为其对数据经行分类降维选 Kernel 等操作,实为更加智能一些。

当然,也有研究指出,其实神经网络和 SVM 是互相等价的。比如,线性(Kernel) SVM 和单层的神经网络是等价的,而多层的神经网络又和 SVM 森林是等价的。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-08-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 包子铺里聊IT 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 悠久历史
  • 复杂问题
  • 应用场景
  • 神经网络与 SVM
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档