Datawhale X 李宏毅苹果书 AI夏令营-深度学习入门task1:通过案例学了解机器学习

一、机器学习基本概念

1.机器学习的概念

机器学习,顾名思义,机器具备有学习的能力。具体来讲,机器学习就是让机器具备找一个函数的能力。

2.机器学习的分类

随着要找的函数不同,机器学习有不同的类别。

  • **回归(regression):**要找的函数的输出是一个数值,一个标量(scalar)

例子:假设机器要预测未来某一个时间的 PM2.5 的数值。机器要找一个函数 f,其输入是 可能是种种跟预测 PM2.5 有关的指数,包括今天的 PM2.5 的数值、平均温度、平均的 臭氧浓度等等,输出是明天中午的 PM2.5的数值,找这个函数的任务称为回归。

  • 分类(classification):让机器做选择题。人类先准备好一些选项,这些选项称为类别(class),现在要找的函数的输出就是从设定好的选项里面选择一个当作输出。

例子1:每个人都有邮箱账户,邮箱账户里面有一个函数,该函数可以检测一封邮件是否 为垃圾邮件。分类不一定只有两个选项,也可以有多个选项。

例子2:AlphaGo 也是一个分类的问题,如果让机器下围棋,做一个 AlphaGo,给出的选项 与棋盘的位置有关。机器找一个函数,该函数的输入是棋盘上黑子跟白子的位置,输出就 是从可以落子的位置里面,选出下一步应该要落子的位置。

  • **结构化学习(structured learning):**机器不只是要做选择题或输出一个数字,而是产生一个有结构的物体,比如让机器画一张图,写一篇文章。

二、案例学习

接下来以视频的点击次数预测为例介绍下机器学习的运作过程。根据一个频道过往所有的信息可以预测明天的观看次数。找一个函数,该函数的输入是后台的信息,输出是隔天这个频道会有的总观看的次数。

机器学习找函数的过程,分成 3 个步骤。

1.写出一个带有未知参数的函数 f,预测未来观看次数

比如将函数写成

其中,y 是准备要预测的东西,要预测的是今天这个频道总共观看的人,y 就假设是今天总共的观看次数。x1 是这个频道,前一天总共的观看次数,y 跟 x1 都是数值,b 跟 w 是未知的参数,它是准备要通过数据去找出来的,w 跟 b 是未知的,只是隐约地猜测。猜测往往来自于对这个问题本质上的了解,即领域知识(domain knowledge)。

带有未知的参数(parameter) 的函数称为模型(model) 。模型在机器学习里面,就是一个带有未知的参数的函数,特征(feature) x1 是这个函数里面已知的,它是来自于后台的信息,而 w 跟 b 是未知的参数。w 称为权重(weight) ,b 称为偏置(bias)

2.定义损失(loss),损失也是一个函数,估测预测值与实际值的差距。

损失函数输出的值代表,现在如果把这一组未知的参数,设定某一个数值的时候,这笔数值好还是不好。

举一个具体的例子,假设未知的参数的设定是 b = 500,w = 1,预测未来的观看次数的函数就变成 y = 500 + x1。x1 代入 4800,预测隔天的观看次数结果为 yˆ = 5300,而已知的真正的结果是 4900,真实的值称为标签(label),它高估了这个频道可能的点击次数。同时可以把每一天的误差,通通加起来取得平均,计算某一段时间内每天的误差。

估测的值跟实际的值之间的差距,其实有不同的计算方法,如:

  • 平均绝对误差(Mean Absolute Error,MAE)

e = |yˆ − y|

  • 均方误差(Mean SquaredError,MSE)

e = (yˆ − y)2

有一些任务中 y 和 yˆ 都是概率分布,这个时候可能会选择交叉熵(cross entropy)。

可以调整不同的 w 和不同的 b,求取各种w 和各种 b,组合起来以后,我们可以为不同的 w 跟 b 的组合,都去计算它的损失,就可以画出所示的等高线图。

在这个等高线图上面,越偏红色系,代表计算出来的损失越大,就代表这一组 w 跟 b 越差。如果越偏蓝色系,就代表损失越小,就代表这一组 w 跟 b 越好,拿这一组 w 跟 b,放到函数里面,预测会越精准。画出来的等高线图称为误差表面(error surface)。

3.优化

找一个 w 跟 b,可以让损失 L 的值最小。**梯度下降(gradient descent)**是经常用到的方法。

简化问题,假设未知参数只有w,首先要随机选取一个初始的点,然后计算参数 w 对损失L的微分,斜率为负右移,为正左移。

移动的步伐取决于两点

  • 第一件事情是这个地方的斜率,斜率大步伐就跨大一点,斜率小步伐就跨小一点。
  • 第二就是学习率(learning rate) η 也会影响步伐大小。学习率是自己设定的,如果 η 设大一点,每次参数更新就会量大,学习可能就比较快。如果 η 设小一点,参数更新就很慢,每次只会改变一点点参数的数值。这种在做机器学习,需要自己设定,不是机器自己找出来的,称为超参数(hyperparameter)

损失函数是自己定义的,所以损失可以为任何值,即有可能是负值。

梯度下降的时候有两种情况会停下来:

  • 自己设定,在设置参数的时候,设定最多计算几次。
  • 当不断调整参数,微分为0时

梯度下降有一个很大的问题,没有找到真正最好的解,可能会停留在局部最小值(local minima) ,而不是全局最小值(global minima)

当有多个参数时,与以上单个参数的步骤类似,改为计算多个参数对损失的微分。

相关推荐
余生H27 分钟前
transformer.js(三):底层架构及性能优化指南
javascript·深度学习·架构·transformer
果冻人工智能1 小时前
2025 年将颠覆商业的 8 大 AI 应用场景
人工智能·ai员工
代码不行的搬运工1 小时前
神经网络12-Time-Series Transformer (TST)模型
人工智能·神经网络·transformer
石小石Orz1 小时前
Three.js + AI:AI 算法生成 3D 萤火虫飞舞效果~
javascript·人工智能·算法
罗小罗同学1 小时前
医工交叉入门书籍分享:Transformer模型在机器学习领域的应用|个人观点·24-11-22
深度学习·机器学习·transformer
孤独且没人爱的纸鹤1 小时前
【深度学习】:从人工神经网络的基础原理到循环神经网络的先进技术,跨越智能算法的关键发展阶段及其未来趋势,探索技术进步与应用挑战
人工智能·python·深度学习·机器学习·ai
阿_旭1 小时前
TensorFlow构建CNN卷积神经网络模型的基本步骤:数据处理、模型构建、模型训练
人工智能·深度学习·cnn·tensorflow
羊小猪~~1 小时前
tensorflow案例7--数据增强与测试集, 训练集, 验证集的构建
人工智能·python·深度学习·机器学习·cnn·tensorflow·neo4j
极客代码1 小时前
【Python TensorFlow】进阶指南(续篇三)
开发语言·人工智能·python·深度学习·tensorflow
zhangfeng11331 小时前
pytorch 的交叉熵函数,多分类,二分类
人工智能·pytorch·分类