机器学习的应用场景,发展历史什么的都不再赘述了,这些东西在随便一本和机器学习有关的书的开头都能找到。在这就只讲理论了。
1.什么是机器学习
机器学习有很多定义,但是却没有一个统一的定义。
一些定义如下:
吴恩达:
Machine Learning is the science of getting computers to act without being
explicitly programmed. Machine learning is a technique of data science that
helps computers learn from existing data in order to forecast future behaviors, outcomes, and trends. -------- Andrew Ng
微软:
Machine learning is a technique of data science that helps computers learn from existing data in order to forecast future behaviors, outcomes, and trends. ------ Microsoft
Mitchell:
利用经验来改善计算机系统自身的性能
其他还有很多定义。但是,其核心思想基本上都是从已知的数据里寻找一些知识来解决未知的问题。
吴恩达的定义说机器学习是一种数据科学的技术,机器学习需要数据来进行学习,但是并非我们搜集到一堆数据扔给计算机就完事了。我们需要对数据进行加工,设定机器的学习规则(也就是算法),才能让机器找到解决问题的方法。在某种程度上,机器学习和统计学密不可分,我们可以通过Excel表对一个数据进行各种统计,绘图,计算,从而得出一些有用的结论,机器学习只不过是我们不再自己做决策,而是告诉机器怎么找到正确的决策,找的过程让他自己来。
2.人工智能,机器学习,深度学习的关系
人工智能是一个大的概念,非常广泛,机器学习只是其中的一个领域,机器学习又分为很多种方法,其中深度学习是连接主义的一个领域,也是近年来发展最火的一个研究热点。
深度学习的别名其实就是神经网络。
x乎上经常有人会问:学习深度学习要不要先学习机器学习?
针对这个问题,不同的人有不同的看法,不同专业的人学习ml和dl的目的也不一样,所以也不太好给出一个具体的建议。
个人觉得,深度学习入门简单,传统机器学习入门稍难。因为传统的机器学习算法大都需要比较多的数学,而深度学习在入门时需要的数学不是特别多。所以,对于以后没有打算在这一行业深入研究、而只是因为一些原因不得不学的人来说,传统机器学习的很多算法的原理没那么重要,了解思想即可。而对于那些这个专业或者立志将来从事这一领域工作的人来说,机器学习一定是要学的。
至于开始深度学习之前,是否一定要先看完传统机器学习,个人感觉大可不必。因为即使是传统机器学习内容还是很多的,即使你学了一遍,也不见得完全掌握。可以先了解一些基本算法,也可以学了一点深度学习之后再去学习传统机器学习,对于理解也是有帮助的。
3.基本术语
- 样本:数据中的一个例子。比如,样本xi = {d1, d2, …, dn} ,样本xi由n个特征描述。一个完整的样本xi还应有其对应的结果yi,可用(xi,yi)表示一个训练样本。
- 特征: 描述样本的属性,比如描述一个人,可以用身高,体重,性别,年龄等等。身高,体重,这些就是特征。
- 特征空间(样本空间,输入空间):由样本的特征张成的空间。特征空间里的一个点(一个示例)就是一个样本。
- 输出空间:我们的结果输出的取值范围,比如我们区分男女,{男,女}就是输出空间。
- training set(训练集):机器用来学习的样本集合。
- validation set(验证集)在机器的学习过程中,用来指导其学习的样本集合。相对于,机器学习一遍,给他打一个分,让他知道自己的努力结果。
- test set(测试集):用来测试机器学习效果好坏的集合。
还有很多知识点,一开始可能不太理解,随着学习的过程,慢慢就会自动明白了。
训练集,验证集,测试集的关系:
训练集是用来训练算法的,验证集是训练过程中对算法进行评估的,测试集是最终算法要解决的问题,我们希望算法能够在测试集上表现非常好。但是,验证集和测试集有时候并不做区分,也就是,没有验证集也可以,只要训练集和测试集。
举个例子:你是一个老师,小明要参加高考(假设满分100),你给他出1000道题让他练习,这1000道题就是训练集,小明把这1000道题写了一遍,你想知道他学的怎么样,你出了100道题考他,这100道题当然不是那1000道题里有的。这100道题就是验证集。结果小明才考了20分,这还差得远呢,于是你又让他继续做一遍1000道题,之后,再拿100道考他,结果,考了40分,还是不够,让他继续写。直到有一次,他考了95分,你觉得差不多了。让他去参加高考,高考出的题又是不同的,可能都不是原题,然后他考了80分,还不错。高考的题就是测试集。
但是,如果你不想每次小明做完1000道题就给他来一个测试,而是一直让他反复做那1000道题,你可能会发现这1000道题他做的越来越好,但是你不知道他遇到新题会怎么样,不过你也不一定关心这个,到了高考,考多少你就知道他复习的怎么样了。这种情况就没有验证集,或者说验证集和测试集是同一个。
4.机器学习三要素
- 模型:解决具体任务所要使用的某一个基础模型
- 策略:获得最优模型的准则。也即评价模型好坏的指标,通过减小指标,就达到优化模型的目的,神经网络中就是损失函数。
- 算法:优化模型的方法。神经网络中可以选择不同的梯度下降方法。
任何一个机器学习的完整模型都是由这三部分组成,确定一个初始的模型,这个模型可能效果很差,但是有多差必须要有一个评价的指标,可以是预测的结果和实际的结果的区别等等,知道了误差,就是改怎么去优化模型了。不同的教材或者老师可能对这三要素的叫法不同。
5.学习的任务
- 回归
- 分类
- 聚类
- 强化学习