学习始终是一件让人疲惫的事情,而我个人又特别钟爱发散性学习,所以虽然这几天如饥似渴的学习了很多新内容,但学习笔记却一拖再拖,始终没有落笔。

简单的来说,这几天除了观看了吴恩达的视频之外,还开始根据其中提到的术语,通过搜索引擎以及维基百科,不断拓展学习的外延,先后了解了DNN/CNN/RNN等术语,然后又查看了TensorFlow/Caffee等框架,由于个人目前比较钟爱Swift语言,所以又通过Apple Developer网站阅读了部分Core ML以及Vision的文档。但这些知识直到目前为止,尚未真正落实到纸面上。所以随着看到的资料越多,疑惑也越来越大。最终决定,还是需要收收心,先从基础入手。

什么是机器学习

维基百科上关于机器学习是这样介绍的:

机器学习有下面几种定义:

  • 机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特 别是如何在经验学习中改善具体算法的性能。
  • 机器学习是对能通过经验自动改进的计算机算法的研究。
  • 机器学习是用数据或以往的经验,以此优化计算机程序的性能标准。

一种经常引用的英文定义是:A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.

这个定义似乎把“机器学习”说明白了,但似乎又云里雾里,并不是特别让人能够记忆深刻。作为一个曾经的开发者,我准备把这个定义简单化,机器学习就是让电脑从一堆杂乱无章的数据中,自行找到规律,并且形成算法的科学。

在以前写代码的过程中,算法总是由程序员根据需求固化好的,然后将用户的输入,比如鼠标、触控、键盘输入等,根据一定的规律,转化为屏幕上的文字、动画或者语音给输出。但在面临一些特别复杂问题时,比如语音、图像识别、无人驾驶等,可能无能为力。而这些领域,恰恰是机器学习可以发挥特长的领域。

机器学习的分类

机器学习主要划分为监督式学习以及非监督式学习。其主要区别在于训练集是否有人对元素进行标注。

监督式学习

维基百科上的定义如下:

监督学习从给定的训练数据集中学习出一个函数,当新的数据到来时,可以根据这个函数预测结果。监督学习的训练集要求是包括输入和输出,也可以说是特征和目标。训练集中的目标是由人标注的。常见的监督学习算法包括回归分析和统计分类。

在监督式学习中,我们有一些现有的数据,并且这些数据是现实中客观存在的"right answer"。而且这些数据有着各种各样的标签。

回归分析

吴恩达的视频当中,给出了两个示例,第一个是关于房价的,我们搜集了一些房价数据,这个房价数据主要与房屋面积相关。将房屋面积作为横坐标,房价作为纵坐标,我们可以这些训练集标注在二维坐标系中,如果仔细观察,这其中会有一定的规律,基本上可以达到当有人告诉你一个房屋面积时,你可以告诉他房价大体的价格。而这个规律,其实就是一个线性函数。类似于下图。

回归分析

统计分类

关于统计分类,吴恩达给出了一个关于癌细胞的示例,比如根据过往的记录,我们有了一系列的实测到的细胞标本,这些标本中有些是癌细胞,有些是良性肿廇,每个细胞的大小都不一样。所以当我们拿到一个新检测到的细胞时,根据其大小,可以基本推测其是恶性或者是良性的。

非监督式学习

维基百科上的定义如下:

无监督学习与监督学习相比,训练集没有人为标注的结果。常见的无监督学习算法有聚类。

我们得到了一系数据,这些数据并没有准确的标签,不存在任何给定的标签。但这些数据总是会扎堆出现,所以当出现一个新数据时,如何给它找到一个合适的“堆”,是我们需要解决的问题。

举例来说,现在的搜索引擎都有类似于“相关新闻”的内容,同样一件新闻,在不同的媒体平台(CNN/凤凰卫视/BBC/CCTV)都有报道,如何将所有不同媒体平台对于同一个新闻的报道给“堆”在一起,这就是无监督式学习所要解决的。

总结

纸上得来终觉浅,作为刚刚了解了机器学习定义以及分类的入门者来说,还有很多知识要学。不过能够学习新知识总是很兴奋的。我已经在我的Mac电脑上使用Docker安装了TensorFlow,准备再利用一周的时间了解一下基础知识,届时再来给大家汇报。[]{.mce_SELRES_start mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;"}