机器学习初探
一、背景
在我大学毕业后,人工智能和机器学习就越来越火,频繁的出现在我的视野中。但出于本能的拖延,我视而不见。
近期,为了协同新来的同事做大数据的数据挖掘和分析,我开始逐渐了解了一些机器学习领域的专有名词,再借助自己在网上检索的一些资料,故写下这篇文章,不求深入技术实现和细节,只是大概梳理下我对机器学习领域的一个的初步认知和理解。
二、几个名词的关系
人工智能 -> 机器学习 -> 深度学习 -> 神经网络
机器学习是实现人工智能的一个专业领域,而深度学习是近期发展势头迅猛的一种机器学习的方法,而神经网络是实现深度学习的一种技术手段。
三、机器学习
1、机器学习和传统编程的区别
传统编程
:定义规则和逻辑。
机器学习
:你不需要编写具体复杂的逻辑算法,而是通过提供大量的相关数据,来训练它。
2、机器学习的分类
(1)监督学习
你提供输入,也提供输出。
输入指的是带有特征的特定实例,例如一封邮件的标题或正文,可能蕴含着广告关键词暴露出它是垃圾邮件。
输出指的是这个特定实例经过监督后被贴上标签,例如一封邮件被人为的贴上垃圾邮件和非垃圾邮件的标签。
例如:通过提供手写草稿来对应书面字体的 OCR 系统。
(2)无监督学习
你提供输入,但不提供输出。
因为实例不会被人为的贴上标签,系统需要更靠自己的学习能力。所以与监督学习相比,无监督的学习更接近于机器自我学习的过程。
例如:你允许机器学习算法监视你的网络活动。 然后,它将根据其找到的模式设置正常网络活动的基准。根据这个标准,它将检测并且记录异常网络活动。
(3)强化学习
当你知道目标是什么,但无法定义达到目标的路径时,此方法特别有效。
例如:Google DeepMind 的 AlphaGo,会从经验中总结提升。
(4)遗传算法
模仿大自然适者生存的法则,建立一套淘汰机制。
这个需要依赖于大量的计算和存储资源来执行其任务,执行时受限于云服务和大数据。
例如:地图中的路径规划
3、深度学习 和 神经网络
虽然机器学习是人工智能的一个分支,但深度学习是机器学习的专门分支。 深度学习使用神经网络,一个具有人类大脑结构和功能的复制品。
(1)深度学习原理
深度学习算法并不是直接通过将输入映射到输出的方式,而是依赖于几层处理单元。 每个层将其输出传递到下一个层,进行处理,然后再传递到下一层。 在某些模型中,计算可能会在处理层之间来回流动多次。虽然这个机制很像大脑的神经网络,但是还是有很实质性的不同。
(2)神经网络分类
A、卷积神经网络 CNN
用于图像识别、视频分析,语音识别, 例如 AlphaGo。
B、循环神经网络 RNN
用于写稿、作曲。
4、机器学习的工具
(1)numpy 和 pandas
科学计算库 numpy
和 pandas
是处理矩阵的好帮手。
pandas 是基于 numpy 的封装,功能更加强大。
(2)框架
TensorFlow
和 Mxnet
等
其实好一些机器学习框架也有自己处理数据的模块,但大多是通过封装 numpy 得到的。
(3)包管理工具
Anaconda
是一种 Python 语言的免费开源发行版,使用 Conda
进行包管理,帮你预装了很多机器学习常用的第三方库。例如画图库 matplotlib
。
Anaconda 在 zsh 环境下会有问题,暂时懒得解决。
5、机器学习的缺点
(1)基于大量数据集
必须基于要大量的数据集去学习,但人类却不是这样,你给小孩看一辆自行车的样子,他就会记住自行车的特征。
(2)不透明度性
随着算法变得越来越复杂,特别是深度学习,人类越来越难以解释它们是基于什么做出的决定。
参考资料:
[《关于机器学习,这可能是目前最全面最无痛的入门路径和资源!》]( https://36kr.com/p/5109465.html](https://36kr.com/p/5109465.html )
机器学习速成课程 | Google Developers 【还没看完】