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)

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

相关推荐
阡之尘埃1 小时前
Python数据分析案例61——信贷风控评分卡模型(A卡)(scorecardpy 全面解析)
人工智能·python·机器学习·数据分析·智能风控·信贷风控
孙同学要努力3 小时前
全连接神经网络案例——手写数字识别
人工智能·深度学习·神经网络
Eric.Lee20213 小时前
yolo v5 开源项目
人工智能·yolo·目标检测·计算机视觉
其实吧34 小时前
基于Matlab的图像融合研究设计
人工智能·计算机视觉·matlab
丕羽4 小时前
【Pytorch】基本语法
人工智能·pytorch·python
ctrey_4 小时前
2024-11-1 学习人工智能的Day20 openCV(2)
人工智能·opencv·学习
SongYuLong的博客5 小时前
Air780E基于LuatOS编程开发
人工智能
Jina AI5 小时前
RAG 系统的分块难题:小型语言模型如何找到最佳断点?
人工智能·语言模型·自然语言处理
-派神-5 小时前
大语言模型(LLM)量化基础知识(一)
人工智能·语言模型·自然语言处理
johnny_hhh5 小时前
AI大模型重塑软件开发流程:定义、应用场景、优势、挑战及未来展望
人工智能