前段时间,google的alphaGo让大家的眼睛都聚焦到这一“人工智能”上了。那么就当时应景吧,写一写我关于机器学习的一些笔记及认识,内容主要根据在Coursera上Andrew Ng大神的课程来做笔记。
首先,什么是机器学习?
参照百度百科的讲解,“机器学习是一门多领域交叉学科,设计概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习能力,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。”什么意思呢?也就是说,机器学习是一门跨领域的学科,是一种能够让机器模仿人类学习能力的一种学科。在Andrew的课程中,提到了几个机器学习的定义:
1,Arthur Samuel (1959) : Machine Learning is a field of study that gives computers the ability to learn without being explicitly programmed.
塞缪尔亚瑟 : 机器学习是一门给予计算机不需要显式编程而获得学习能力的领域。
2,Tom Mitchell (1998) : Well-posed Learning Problem : A computer program is said to learn from experience E with expect to some tasks T and some performance measure P , if its performance on T , as measured by P , improve with experience E.
汤姆米切尔: 学习程序的问题:计算机程序如果通过一些预期的任务T在一些特定的特征P的标准下学习到经验E,那么就说明这个计算机程序通过经验E获得了提升。(比较抽象)
米切尔的定义,是比较抽象但是又比较准确的,能够大体概括出机器学习的主要方法和目的。通俗点儿讲,当你手上有一堆带有指标的数据,比如一个班级学生的身高(height)、体重(weight)、性别(gender)、成绩排名(rank),看上去这些数据是没有什么必要联系的,但是你想模拟出一个公式来计算或预测一个学生的成绩是和身高、体重、性别有某些必然联系,假设
rank = ø0+ø1*height + ø2 * weight + ø3 * gender
但是你又无法确定ø0、ø1、ø2、ø3这些参数的值,所以获取这几个参数的值的方法,就是机器学习算法。
那么机器学习有哪些方法呢?
机器学习,大体上分成两个分类:监督学习(supervised learning)和非监督学习(unsupervised learning);细分的话,还有半监督学习(half-supervised learning)和增强学习(reinforcement learning)
如何来区分监督学习和非监督学习呢?其实很简单,只要看,你的训练集是有输入有输出,那么通过这样的训练集获取到的算法,就是监督学习算法;反之,如果你的训练集是只有输入没有输出,那么最后得到的算法就是无监督学习算法。半监督学习呢,就是当你的训练集中,有一部分是标记的数据(有input和output),一部分是非标记数据(有input无output),那么就是半监督学习;强化学习,通过其他学习后得到的算法,在你的另外一组数据的刺激下得到的更为精准的算法,这样的方式就是强化学习。
OK,后续的blog会继续做机器学习的笔记及分享。