机器学习、深度学习、遗传算法、神经网络各自的含义以及彼此间关系是什么?
人工智能要解决的问题是:如何让机器能够解决需要人类智能才能解决的问题?
该领域的理论和实践从上世纪50年代开始出现,早期由符号主义主导,
80年代的专家系统是符号主义人工智能的顶峰。
专家系统很难处理比较模糊的问题,比如自然语言翻译、图像分类、语音识别等,
而且维护成本很高,目前不是人工智能的主流。
与符号主义相对的,是机器学习,也就是把待求解的问题转化为优化问题,
或者叫寻找最优解问题。
以图像分类为例,专家系统的思路是:包含 a, b, c, d 特征的是猫,
包含 x, y, z, w 是狗,等等,不难看出这种方式会随着问题的复杂程度增加和变得越来越复杂,
并且不能保证所有的问题都能通过“如果-那么”的方式解决。
机器学习的思路是:创建一个“分类盒子”,给它1000张猫图片,1000张狗图片,
给盒子制定一条学习的规则:不断降低猜测错误率。
一开始盒子完全乱猜,但每次猜完都计算一次错误率,
然后调整盒子内部结构,让它的错误率降低,直到错误率达到令人满意的程度。
如果盒子内部结构采用各种数学函数,通过调整函数的参数降低错误率,就是统计学习,
如果是神经网络,通过调整神经网络的各种参数降低错误率,就是深度学习。
神经网络最早的灵感来自于生物体的神经网络,单个神经元非常简单粗暴,
但许多神经元组合在一起会变得非常灵活,能解决非常复杂的问题。
如何保证盒子能够不断降低错误率,并且能找到全局最优解,是优化技术要解决的问题,
神经网络多采用梯度下降算法,遗传算法则模拟自然选择过程,
通过交叉和突变生成新方案,保留其中效果好的方案,得到新一代,
这样进化N代后,就能够找到最优解,遗传算法是优化技术的一种。
机器学习框架 TensorFlow, Paddle 的区别
机器学习框架为机器学习算法开发者提供基础设施,比如构造神经网络层,
提供模型构建、监控、可视化、并行化工具等,
目前主流玩家包括 Google 的 TensorFlow,Facebook 的 PyTorch 等,
由于深度学习高度的复杂性,开源社区在这些基础设施上又构建了一个抽象层,
为开发者提供更友好的接口,目前最流行的 Keras。
Paddle 是与 TensorFlow, PyTorch 等对标的深度学习框架,某些场景下性能比 TensorFlow 更好,
它的短板在于:
深度学习是一个快速发展的领域,Google 又是重量级玩家,
其研究成果基本都是在 TensorFlow 上验证的,导致围绕 TF 的社区技术最先进,人数最多,工具最丰富。
最明显的例子,面向产品开发的算法基本都使用 Keras,底层调 TF,
可以显著降低算法开发成本,又具备 TF 在功能上的优势。
而围绕 Paddle 的社区目前还基本不存在,这一点类似于操作系统的现状。
百度的Apollo是自动驾驶算法开发平台,属于机器学习的增强学习领域。








网友评论