[Coursera] 机器学习入门

[Coursera] 机器学习入门

@斯坦福公开课 Machine Learning 学习笔记

基本思想

机器学习(machine learning)是一种方法或算法,它能够通过“学习”,来解决一些特定的问题。

接下来,我将以具体的实例,阐述机器学习的产生和设计过程。

以认人识物为例,只要你告诉一个之前不知道苹果的人“这是苹果,那是苹果,那也是苹果”,当你再拿一个新的苹果,问他是什么,他便能够回答出“这是苹果”。

这对于人来说,是一个很自然,不需要什么努力就能完成的任务,但这对机器却不是。如果要让机器能够认出这个苹果,我们要先思考 “我们人,是怎么认出这个苹果的”。

将认苹果的过程抽象出来,我们可以得到以下过程:

这里写图片描述

即人眼看到苹果,获取苹果的图像传递给大脑,大脑对图像进行判断,得出结果。将此过程再抽象扩展,我们得到更一般的过程。

这里写图片描述

即给定一个或多个输入,通过一个处理器处理,得到一个或多个输出。

此即人对此类问题处理方法的概况,也即“人是怎么认出苹果来的”。同时,这个过程也给了我们要让机器认出苹果的方法。即解决两个问题:

  1. 如何获取输入
  2. 如何处理输入,并给出输出

不同的问题有不同的获取输入的办法,以认苹果为例,利用数码照相机对苹果成像得到照片(即一系列像素)即可作为输入。通常来说,输入的获取较为容易(当然也不全是这样),而处理部分则相对困难。

对于处理,也有很多不同的办法,其主要思想在于构造一个函数,能够将不同输入映射到不同的输出上去。

然而我们不可能针对每个问题都设计一个算法,认苹果一个,认桃子一个这样做,我们需要让机器学习,让它自己设计出这个“算法”,我们要做的就是

  1. 提供给机器学习的办法
  2. 提供给机器评估算法好坏的办法

至此,我们最初“让机器认物品(苹果)”这个问题就转换为,如何让机器通过一系列输入,在这个例子中为物品的照片,学习出识别的算法 和 如何评估算法的优劣,好让机器调整算法。

至此,我们便清楚了机器学习究竟在做什么以及它大体上是如何做的。

下面简单介绍一种模型:


解决模型

线性回归

线性回归分为单变量线性回归和多变量线性回归。其中单变量线性回归就是大家初高中求回归直线基本一样,而多变量就是将回归直线扩展到平面,空间,高维空间。

我们知道线性回归就是用一个线性函数去拟合给定的一个数据集,就像这样。

h(X)=θ0+θ1x1+θ2x2+...+θnxn

这里写图片描述

(图片来自CS229)

我们求线性回归就是要求那些参数 θ ,对与线性回归我们是有解析法的,但是让机器去算这些公式并不现实,同时对于很多非线性回归问题并没有解析法可用,因此我们还有另外一种求参数 θ 的办法,即 梯度下降(Gradient descent)

它通过一个给定的初始参数,利用一个评估函数指导如何修正参数,不断迭代,从而求出最终参数。

评估函数(cost function):

J(θ0,θ1)=12mi=1m(y^iyi)2=12mi=1m(hθ(xi)yi)2


一些建议

复习线性代数

机器学习的绝大多数算法,都要利用矩阵向量化(vectorization)来加快运算速度,所以一定要熟练掌握将各种加法乘法运算,转换为矩阵运算。

θ0+θ1x1+θ2x2+...+θnxn 可以转换为两个矩阵相乘 θX

编程语言的选择

初学者不必强求自己实现各种机器学习算法,可以多利用现有的第三方库。

不建议一开始就用 Java, C#, C, C++ 进行学习,甚至Python也不要

建议使用 matlab 或 octave

它们只需简单的几行代码就能实现复杂的功能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章