Loading...
墨滴

大数据真好玩

2021/03/23  阅读:20  主题:极客黑

机器学习实践鹿1

「小杜」不有趣的机器学习实践鹿-1

一个小杜
一个小杜

初衷

作为一个不好好学习的瓜皮,怎么可能舍得动脑动手推公式,所以我才觉得我对机器学习的很多概念都是表面功夫,银样蜡枪头,在做毕业设计的时候发现:基础不牢,做啥花里胡哨都是闲的

那就花亿点时间开始实践手推公式吧。从头学起,头疼~

告辞表情包

吃苦是不可能不吃苦的,但是可以把笔记做的有趣一点。(不可能的)

——鲁迅


Tags: 机器学习

🏸什么是机器学习

人类宝宝在第一次看到一台自行车的时候,不用父母告诉什么样是自行车,他自己就能记下它的特征;这个小宝宝第二次看到自行车的时候,他们能从经验中学习,最终意识到:“咦!是自行车!要啥自行车儿?”

那么一台计算机,可以让它也拥有从经验中“学习”的能力吗。没错,这个就是机器学习的概念。

目前我们的发展还没有达到《黑客帝国》里“天网”那样的等级,基本还算是“弱人工智能”,某些情况比人类幼崽还弱(比如说少样本学习),但某些情况下它也能解决很多单凭人类难以解决的问题。就像斯坦福机器学习课程描绘的:

  • 把电子医疗记录变成医学知识,更好的理解疾病
  • 计算生物学,分析大量基因数据序列,DNA序列,更好的了解人类基因组
  • 在机械应用中的无人驾驶等等

这也是我觉得它确实很有趣(如果不用手推公式的话)也在未来很有作为的一个方面。

癌症预测例子

最后简单归纳一下:

  • 人工智能(Artificial Intelligence)——“星辰大海”,是要达到的目标
  • 机器学习(Machine Learning)——“航空火箭”,是一个可靠的工具(但不局限于实现人工智能)
  • 深度学习(Deep Learning)——“长征5号”,是目前工具中较强大的一个类型(专注于模仿大脑的结构和学习的过程)
v2-a841443ccad24cae9108de63d9a305ff_r

也有这样的分类:

微信图片_20210317150111

🎠怎样看懂机器学习术语

我们可以先记住一个高中学过的函数:y=f(x),把这个函数作为类比

术语 解释
标签 就是 可以是任何事物
特征 就是 ,特征可以有多个, ···
样本 就是用于训练的一组 ,也可以是 ,即无监督学习
模型 就是x和y的关系:
回归模型 预测y的连续值,输入 会是0到1之间的一个值
分类模型 预测y的分类,输入 会是0和1中的一个类,如0是得病,1是不得病

机器学习就像是我们给人类幼崽看自行车的图片一样

需要给机器一些样本来训练,然后让机器学习到样本的特征,最后进行预测

好了,接下来是FBI警告,难度飙升~

🏑单变量线性回归 & 训练和损失

线性回归(Linear Regression)

对于一个宝宝而言,脑海里常常有一些问题:

  • 怎么去分辨一堆玩具中好玩的玩具和不好玩的玩具?(==分类==)
  • 已知爸爸妈妈每天的出门次数,怎样知道他们明天的出门次数(==回归==)

在现实生活中,这两类问题更加复杂头秃:

  • 怎么从病历信息中分辨一个人的乳腺肿瘤是良性还是恶性的?(==分类==)
  • 已经知道当前气象事件的历史数据,怎样预测未来的天气情况?(==回归==)

对于宝宝的简单问题来说,出门次数与天数很可能是一个线性关系。

基础折线图-副本 (1)
基础折线图-副本 (1)

其中:

  • 指的是父母每天出门的次数,即预测标签(理想输出值)
  • 指的是天数,即输入的特征的值(图中记录了0-35天)
  • 指的是直线斜率,即权重
  • 指的是直线的截距,即偏差

训练与损失(Train & Lost)

训练

训练就是通过已知的标签样本 ,来确定所有权重(也就是 )和偏差(也就是 )的理想值。

训练的目的就是通过训练样本来获得一个模型,这个模型可以最大限度减少犯错,这个过程叫做==经验风险最小化==。(对于宝宝来说思路就是犯错越少,自然就会越来越正确)

损失

损失是对糟糕预测的惩罚(也就是犯错)。也就是说:

  • 模型预测的越好,损失越低;
  • 预测的越糟糕,损失越大;
  • 完全预测正确损失则为0;

平方损失

我们有没有数学方法(损失函数Cost Function)来衡量损失呢,拿出高中知识可以知道,可以用预测值 减去实际值 的平方来计算损失

也可写成下面这样

这种损失叫做平方损失(也叫L~2~损失),衡量了单个 预测值的损失

均方误差(MSE)

均方误差指的是每个样本的平均平方损失,就是计算出每个 的平方损失,再除以样本数量

🚕 怎样降低损失

关于宝宝的问题,我们只有一个特征(天数)作为输入,这种回归叫做单变量线性回归(Linear Regression with One Variable)

实际情况中,输入的特征不止一个,会遇到更高维度,更多参数的情况,例如气象事件的历史数据,包括 等等;

梯度下降(Gradient Descent)

我们的目的是让损失降到最低,可以得知,损失最低的情况是模型完美的拟合了实际情况的所有点,此时损失为0。

对于宝宝的问题,我们的模型是

换一种写法

损失函数也换一种写法(因为损失函数不止MSE一种)

三个变量做一个等高线图:

image-20210317104141946

可以看出存在一个全局最优解(global minimum)(有的模型中也存在局部最优解(local minimum))

梯度

那么什么是梯度呢,定义是“函数的梯度是偏导数相对于所有自变量的矢量”

例如:

给定一个多变量函数:

相对于 的常规导数,把 当做常数

同理,求 的偏导数

那么这个多变量函数的梯度就是

梯度是一个矢量,具有方向、大小,指向函数下降(或者增长)速度最快的方向。

给定一个更加复杂的多变量函数:

那么这个函数的梯度就是

随着 的不断变化,梯度也在不断变化。梯度不断下降的过程,就是我们不断逼近最优解的过程。

梯度下降与损失函数相结合

那么我们如何将梯度下降与损失函数,还有训练联系到一起呢,下式就是一个很好地例子

其中:

  • == ==的意思就是重复训练很多轮次

  • == ==代表学习率,表示训练的步长

    • 学习率 过小,达到收敛所需的迭代次数会非常高,就会花费很长的时间

    • 学习率 过大,就会导致训练的下一轮(Batch)在最优点随意弹跳,有可能越过局部最小值无法收敛

      image-20210317105516713
    • 我们的目的是找到一个足够找到一个足够高的学习速率,该速率要能够使梯度下降过程高效收敛,但又不会高到使该过程永远无法收敛。

  • == ==表示 的偏导数,表示梯度,即为损失函数中增长最为迅猛的方向

  • == ==即为损失函数

📒 线性代数回顾

矩阵乘法

回忆起曾经学过的矩阵乘法, 的矩阵与 的矩阵相乘,会变成 的矩阵,如式1所示

  • 矩阵乘法不满足交换律
  • 矩阵乘法满足结合律
  • 单位矩阵 (有时也写作 )相当于1,有

逆、转置

矩阵的==逆==就是说,当 时, 矩阵就是 矩阵的逆矩阵,记作:

矩阵的==转置==就是说:

矩阵的转置的基本性质如下:

与梯度下降异曲同工的正规方程(Normal Equation)

既然梯度下降的最终目的是通过不断迭代,将 降到最低,得到一个最终的 值,那么是不是可以直接计算等式

求解出最终的 呢,这种方法就叫做正规方程,正规方程的解为

正规方程也是有局限性的,下表是关于梯度下降与正规方程的比较:

梯度下降 正规方程
需要学习率 不需要
需要多次迭代 一次运算得出
当特征数量较大时也能较好使用 特征数量大的话运算代价很大
适用于各种类型的模型 只适用于线性模型,不适合于逻辑回归等其他模型

📃参考资料


  1. Machine-Learning-Book
  2. Coursera-ML-AndrewNg-Notes

大数据真好玩

2021/03/23  阅读:20  主题:极客黑

作者介绍

大数据真好玩