机器学习入门导论

机器学习的分类

按标签分类:

  • 有监督学习:SVM,神经网络
  • 无监督学习:聚类、EM、PCA
  • 半监督学习
  • 强化学习:不关注具体的标签,而是关注最后预测的结果,强调对结果的满足。

按标签的类别分类:

  • 回归问题:标签为连续的值
  • 分类问题:标签为离散的点

需要注意的是,两者并无大的区别,通常两者的算法可以通用。只是对最后标签的处理方法不同而已。

除了以上两大类,还有Structured Learning,让机器画一张图 写一篇文章,这种叫机器產生有结构的东西的问题。

课程内容概述

以红、白细胞图片的识别为例。

给定训练集

求对红白细胞图片的分类。

特征提取

特征提取是所有步骤中最关键的一步,好的特征决定了好的结果、但是由于特征提取并非一成不变而是与具体的问题息息相关。所以得具体问题具体分析。

根据观察、想象特征、筛选特征。

对特征提取结果进行分析,比对

  1. 面积、周长呈线性相关,所以我们只取其中一个即可。
  2. 圆形度,如图可见,圆形度对细胞的划分比较明显。

图像分析

机器学习的任务

根据特征的分布,找到一条线,划分类别。

难点:

  • 维度,通常特征的维度不止上述的2维,而是上万维。划分的不是直线而是超平面。
  • 标准,我们有无数种选择画这条线。不同的算法会使用不同的标准来划分这条线。

总结:我们无法笼统的说那种算法更好,我们只是学习到底用什么标准去划线,用什么标准去评价算法。对各种算法的划线方法的优势和劣势进行分析,选择其适用场景。

天下没有免费的午餐

如果我们不对特征空间有先验假设,则所有算法的平均表现是一样的。

如:我们已知O预测下一个标签,如果我们不对OO或OX有一个已知的概率,那预测O、X的概率相同。

但是我们、机器是如何认为这个预测值呢?

总结:

NFL定理表明没有一个学习算法可以在任何领域总是产生最准确的学习器。不管采用何种学习算法,至少存在一个目标函数,能够使得随机猜测算法是更好的算法 。

数学化的理解机器学习任务

机器学习找这个函式的过程,分成三个步骤。

1. Function with Unknown Parameters

第一个步骤是我们要写出一个,带有未知参数的函式,简单来说就是 我们先猜测一下,我们打算找的这个函式,它的数学式到底长什麼样子。举例来说,我们这边先做一个最初步的猜测,我们写成这个样子

  • y是我们要预测的东西
  • x是已有的数据资料
  • b跟w是未知的参数,它是准备要透过资料去找出来的,我们还不知道w跟b应该是多少,我们只是隐约的猜测

2. Define Loss from Training Data

第二个步骤,是我们要定义一个东西叫做Loss,Loss它也是一个Function,那这个Function它的输入,是我们Model里面的参数这个Function输出的值代表说,现在如果我们把这一组未知的参数,设定某一个数值的时候,这笔数值好还是不好大L越大,代表我们现在这一组参数越不好,这个大L越小,代表现在这一组参数越好估测的值跟实际的值之间的差距,其实有不同的计算方法

  • 绝对值误差 (MAE) , L = |Y - y| , y = w*x+b
  • 平方根误差 (MSE) , L = sqrt((Y - y)**2)

Error Surface

我们可以為不同的w跟b的组合,都去计算它的Loss,然后就可以画出以下这一个等高线图.

image-20210303170054572

在这个等高线图上面,越偏红色系,代表计算出来的Loss越大,就代表这一组w跟b越差,如果越偏蓝色系,就代表Loss越小,就代表这一组w跟b越好

3. Optimization

接下来我们进入机器学习的第三步,那第三步要做的事情,其实是解一个最佳化的问题,找一个w跟b,把未知的参数,找一个数值出来,看代那一个数值进去,可以让我们的大L,让我们的Loss的值最小,那个就是我们要找的w跟b,那这个可以让loss最小的w跟b,我们就叫做w*跟b*代表说他们是最好的一组w跟b,可以让loss的值最小.

我们会经常使用一种optimization方法叫做Gradient Descent(梯度下降法)

我们先假设我们未知的参数只有一个w,我们先假设没有b那个未知的参数,只有w这个未知的参数。

当我们w代不同的数值的时候,我们就会得到不同的Loss,这一条曲线就是error surface。

只有一个参数,所以我们看到的这个error surface,是1维的。

image-20210303210559053

如何找一个W,让loss最小?

  • 首先随机选取一个初始的点,那这个初始的点,我们叫做W0
  • 计算,在W等於W0的时候,W这个参数对loss的微分是多少$∂L/∂w |(w=w^0 )$
  • 更新W,$w_新 = w_旧 - η ∂L/∂w_旧|(w=w_旧 )$

更新loss的速度如何决定?

  • loss更新的步长由这个地方的斜率有多大(对loss的微分)决定,斜率越大,步长越大。
  • loss更新的步长由η,学习率决定。学习率越大,步长越长。但也容易发生跳过最小值的问题。
  • 其中学习率η,也是一个超参数(需要手动设置的参数)。

让学习停下的条件

  • 找到了让loss = 0的极值点,但可能只是一个局部极小值!
  • 达设置的计算次数,也是一个超参数

参考:

https://www.bilibili.com/video/BV1dJ411B7gh?p=5

https://baike.baidu.com/item/%E6%B2%A1%E6%9C%89%E5%85%8D%E8%B4%B9%E5%8D%88%E9%A4%90%E5%AE%9A%E7%90%86/8848514?fr=aladdin

李宏毅的机器学习课程2021