机器学习初探

一、背景


在我大学毕业后,人工智能和机器学习就越来越火,频繁的出现在我的视野中。但出于本能的拖延,我视而不见。

近期,为了协同新来的同事做大数据的数据挖掘和分析,我开始逐渐了解了一些机器学习领域的专有名词,再借助自己在网上检索的一些资料,故写下这篇文章,不求深入技术实现和细节,只是大概梳理下我对机器学习领域的一个的初步认知和理解。

二、几个名词的关系


人工智能 -> 机器学习 -> 深度学习 -> 神经网络

机器学习是实现人工智能的一个专业领域,而深度学习是近期发展势头迅猛的一种机器学习的方法,而神经网络是实现深度学习的一种技术手段。

三、机器学习


1、机器学习和传统编程的区别

传统编程:定义规则和逻辑。

机器学习:你不需要编写具体复杂的逻辑算法,而是通过提供大量的相关数据,来训练它。

2、机器学习的分类

(1)监督学习

你提供输入,也提供输出。

输入指的是带有特征的特定实例,例如一封邮件的标题或正文,可能蕴含着广告关键词暴露出它是垃圾邮件。

输出指的是这个特定实例经过监督后被贴上标签,例如一封邮件被人为的贴上垃圾邮件和非垃圾邮件的标签。

例如:通过提供手写草稿来对应书面字体的 OCR 系统。

(2)无监督学习

你提供输入,但不提供输出。

因为实例不会被人为的贴上标签,系统需要更靠自己的学习能力。所以与监督学习相比,无监督的学习更接近于机器自我学习的过程。

例如:你允许机器学习算法监视你的网络活动。 然后,它将根据其找到的模式设置正常网络活动的基准。根据这个标准,它将检测并且记录异常网络活动。

(3)强化学习

当你知道目标是什么,但无法定义达到目标的路径时,此方法特别有效。

例如:Google DeepMind 的 AlphaGo,会从经验中总结提升。

(4)遗传算法

模仿大自然适者生存的法则,建立一套淘汰机制。

这个需要依赖于大量的计算和存储资源来执行其任务,执行时受限于云服务和大数据。

例如:地图中的路径规划

3、深度学习 和 神经网络

虽然机器学习是人工智能的一个分支,但深度学习是机器学习的专门分支。 深度学习使用神经网络,一个具有人类大脑结构和功能的复制品。

(1)深度学习原理

深度学习算法并不是直接通过将输入映射到输出的方式,而是依赖于几层处理单元。 每个层将其输出传递到下一个层,进行处理,然后再传递到下一层。 在某些模型中,计算可能会在处理层之间来回流动多次。虽然这个机制很像大脑的神经网络,但是还是有很实质性的不同。

(2)神经网络分类

A、卷积神经网络 CNN

用于图像识别、视频分析,语音识别, 例如 AlphaGo。

B、循环神经网络 RNN

用于写稿、作曲。

4、机器学习的工具

(1)numpy 和 pandas

科学计算库 numpypandas 是处理矩阵的好帮手。

pandas 是基于 numpy 的封装,功能更加强大。

(2)框架

TensorFlowMxnet

其实好一些机器学习框架也有自己处理数据的模块,但大多是通过封装 numpy 得到的。

(3)包管理工具

Anaconda 是一种 Python 语言的免费开源发行版,使用 Conda 进行包管理,帮你预装了很多机器学习常用的第三方库。例如画图库 matplotlib

Anaconda 在 zsh 环境下安装后会有问题,需要在~/.zprofile结尾处添加export PATH=Anaconda位置/bin:$PATH(如export PATH="/anaconda3/bin:$PATH"),即可把 conda 加入到环境变量中。

5、机器学习的缺点

(1)基于大量数据集

必须基于要大量的数据集去学习,但人类却不是这样,你给小孩看一辆自行车的样子,他就会记住自行车的特征。

(2)不透明度性

随着算法变得越来越复杂,特别是深度学习,人类越来越难以解释它们是基于什么做出的决定。


参考资料:

[《关于机器学习,这可能是目前最全面最无痛的入门路径和资源!》]( https://36kr.com/p/5109465.html](https://36kr.com/p/5109465.html )

有趣的机器学习系列 | 莫烦Python

机器学习速成课程  |  Google Developers 【还没看完】

原文地址:https://www.cnblogs.com/xjnotxj/p/9843345.html