前段时间看了不少关于人工智能方面的书籍博客和论坛,深深觉得了人工智能是个大坑,里面有太多的知识点和学科,要想深入绝非易事,于是萌发了自己写一些博客把自己的学习历程和一些知识点笔记都记录下来的想法,给自己一个总结收获,同时监督自己的动力,这样咱也算是“有监督学习”了:)
这里提到了“有监督学习”,在刚刚开始学习人工智能/机器学习的时候经常看到,对于这个概念从一无所知到懵懵懂懂到略有了解也花费了一点时间,对于老鸟来说这些概念都太基本了因此没有过多的篇幅来介绍,但对于新手来说,刚刚接触一个新的领域的时候往往看到的都是一个个“高大上”的名词,这种名词多了,学习曲线就陡峭了,因此我们还是从基本的概念开始整理整理吧。因此这篇笔记就是一个基本概念的梳理,若有不恰的地方望不吝赐教。
人工智能,机器学习,神经网络,深度学习的关系
刚刚接触人工智能的内容时,经常性的会看到人工智能,机器学习,深度学习还有神经网络的不同的术语,一个个都很高冷,以致于傻傻分不清到底它们之间是什么样的关系,很多时候都认为是一个东西的不同表达而已,看了一些具体的介绍后才渐渐有了一个大体的模型。
此图是笔者基于自己的理解而归纳的一个简化的分类图,人工智能(Artificial Intelligence)是一个大的概念,它是机器学习的父类。
此处我将机器学习之外的人工智能归纳成了“逻辑/算法编程”,也就是通过编程将人类所知的知识和逻辑告诉机器,从而借助机器的高速计算和海量存储等能力实现一些人类才能做的“弱智能”工作,我理解上个世纪的深蓝计算机应该就是属于这一类的吧,就是将国际象棋中所有可能的结果都通过预先编好的程序计算出来从而选择最佳的下法(穷举法)。从程序的实现上来说恐怕就是无数的if…else…吧。
而另一类就是基于数据的自我学习,即机器学习,把大量的数据告诉机器由机器自己去分析这些数据从而总结得出某种规律/逻辑,然后利用这种逻辑来处理新的数据。
毫无疑问,机器学习是人工智能中最为火热和最有前途的方向,让人去“学习”那么复杂的逻辑来告诉机器怎么做还不如让机器自己来学习呢,毕竟人都是懒的嘛,而“懒”就是人类进步的动力!
机器学习
机器学习是人工智能最重要的内容,先来看看它的一个定义(当然有很多不同的定义):
“Machine learning is the idea that there are generic algorithms that can tell you something interesting about a set of data without you having to write any custom code specific to the problem. Instead of writing code, youfeed datato thegeneric algorithmand itbuilds its own logicbased on the data.”
这里面有几个重要的关键词,就是你不用写专门的业务逻辑代码而是通过输入大量的数据给机器,由机器通过一个通用的机制来建立它自己的业务逻辑,也就是机器“自我学习”了业务的逻辑,当然这种学习后的逻辑可以用来处理新的数据。这和人类的学习过程有些类似,如下图:
当然这并不能说明机器学习和人类的学习是一样的,举个简单的例子,机器学习是不断的训练过程,其模型是在连续的优化调整中,随着训练数据越多其模型越准确,但是人类的学习不仅仅是一个连续学习过程,还有一种跳跃式学习,也就是常说的”顿悟“,这点是机器学习目前所没有的。
同时我们也可以看到,机器学习是通过大量的数据来训练得到模型的,因此其模型考虑的是相关性逻辑,而不是因果性逻辑,这和大数据分析的概念是一致的。
ok,总结起来说,机器学习就是”利用已有数据,得出某种模型,并利用此模型预测未来的方法“。
从前图可见,机器学习主要包括了两种学习方法,有监督学习和无监督学习,具体是代表什么含义呢?
有监督学习和无监督学习
这两个概念也是刚刚接触机器学习经常碰到的概念,通俗/简单点来说,所谓有监督学习就是训练用历史数据是既有问题又有答案,而无监督学习就是训练用历史数据是只有问题没有答案。
正式的说法一般是把答案称之为标签label
还有一种介于两者之间的混合学习方法,称为半监督学习
在无监督学习中,主要是发现数据中未知的结构或者是趋势。虽然原数据不含任何的标签,但我们希望可以对数据进行整合(分组或者聚类),或是简化数据(降维、移除不必要的变量或者检测异常值)。因此无监督算法主要的分类包含:
- 聚类算法 (代表:K均值聚类,系统聚类)
- 降维算法 (代表:主成份分析PCA,线性判断分析LDA)
有监督学习,可以根据预测变量的类型再细分。如果预测变量是连续的,那这就属于回归问题。而如果预测变量是独立类别(定性或是定类的离散值),那这就属于分类问题了。因此有监督学习主要的分类包含:
- 回归算法 (线性回归,最小二乘回归,LOESS局部回归,神经网路,深度学习)
- 分类算法(决策树,支持向量机,贝叶斯,K-近邻算法,逻辑回归,随机森林)
这里面提到了很多的算法,目前还不需要一一去掌握,相信在今后的学习中会经常看到,先混个眼熟:)
这些所有的算法中,目前最热的恐怕是深度学习了,但要了解深度学习必须先了解它的前任(前生,父类)。
神经网络
关于神经网络的介绍在网上有很多很多了,有不少大牛的介绍和课程,本人主要参考/推荐如下:
神经网络浅讲:从神经元到深度学习
用平常语言介绍神经网络
因此不再赘述细节,做了一个不完全的总结图:
好了,大体的一个机器学习的最最基本的概念总结完毕,其实学习这些基本概念还是比较简单方便的,毕竟我们有强大的搜索引擎,只要输入“机器学习”就能得到海量的知识让我们去学习,不过对于刚开始的初学者来说,先浅尝即止即可,有了一个框架性的了解,为后续的深入学习做准备。
准备接下来做一些具体的代码学习了,从一些基本的机器学习的算法做一些hello world :)
权威发布有关Imagination公司CPU,GPU以及连接IP、无线IP最新资讯,提供有关物联网、可穿戴、通信、汽车电子、医疗电子等应用信息,每日更新大量信息,让你紧跟技术发展,欢迎关注!伸出小手按一下二维码我们就是好朋友!
领取专属 10元无门槛券
私享最新 技术干货