Datawhale X 李宏毅苹果书 AI夏令营 task 1 打卡
task 1 机器学习案例分析笔记
机器学习
机器学习通过对大量数据的分析和处理,从中提取出有用的信息和知识。这些数据可以是文本、图像、音频、数字等各种形式。机器学习算法会根据数据的特征和标签(如果有标签的话)进行训练,不断调整模型的参数,以提高对新数据的预测或分类准确性,具体又分为监督学习,无监督学习,强化学习和半监督学习。
深度学习
深度学习是一种基于人工神经网络的机器学习方法,使用深度神经网络作为智能体的大脑,它通过构建具有多个层次的神经网络模型,从大量数据中自动学习复杂的特征和模式,以实现对数据的高效分类、预测和生成等任务。
李宏毅课程学习笔记
机器学习
机器学习就是让机器具备找一个函数的能力。
这个函数显然非常复杂,人类难以把它写出来,因此想通过机器的力量把这个函数自动找出来。
随着要找的函数不同,机器学习有不同的类别。
例如:需要的是一个函数,该函数的输入是声音信号,输出是这段声音信号的内容。这个函数显然非常复杂,人类难以把它写出来,因此想通过机器的力量把这个函数自动找出来。
回归(regression)
假设要找的函数的输出是一个数值,一个标量(scalar),这种机器学习的任务称为回归。
假设机器要预测未来某一个时间的 PM2.5 的数值。机器要找一个函数 f,其输入是可能是种种跟预测 PM2.5 有关的指数,包括今天的 PM2.5 的数值、平均温度、平均的臭氧浓度等等,输出是明天中午的 PM2.5的数值,找这个函数的任务称为 回归
分类(classification)
分类任务要让机器做选择题。人类先准备好一些选项,这些选项称为类别(class),现在要找的函数的输出就是从设定好的选项里面选择一个当作输出,该任务称为分类。
结构化学习(structured learning)
除了回归跟分类以外,还有结构化学习。机器不只是要做选择题或输出一个数字,而是产生一个有结构的物体,比如让机器画一张图,写一篇文章。这种叫机器产生有结构的东西的问题称为结构化学习。
案例分析
以视频的点击次数预测为例介绍下机器学习的运作过程。假设有人想要通过视频平台赚钱,他会在意频道有没有流量,这样他才会知道他的获利。假设后台可以看到很多相关的信息,比如:每天点赞的人数、订阅人数、观看次数。根据一个频道过往所有的信息可以预测明天的观看次数。找一个函数,该函数的输入是后台的信息,输出是隔天这个频道会有的总观看的次数.
找函数的过程:
1.定义带未知参数的函数
y跟x都是数值,y表示要预测的人数,x是前一天观看的人数
b和w是未知的参数,w 称为权重(weight),b 称为偏置(bias)
2.定义损失函数
损失是函数 L(b, w),其输入是模型参数 b 跟w。损失函数输出的值代表,现在如果把这一组未知的参数,设定某一个数值的时候,这笔数值好还是不好。举一个具体的例子,假设未知的参数的设定是 b = 500,w = 1,预测未来的观看次数的函数就变成 y = 500 + x1。要从训练数据来进行计算损失,在这个问题里面,训练数据是这一个频道过去的观看次数。
N 代表训验数据的个数,即 3 年来的训练数据,就 365 乘以 3,计算出一个 L,,L 是每一笔训练数据的误差 e 相加以后的结果。L 越大,代表现在这一组参数越不好,L 越小,代表现在这一组参数越好。
有一些任务中 y 和 yˆ 都是概率分布,这个时候可能会选择交叉熵(cross entropy),这个是机器学习的第 2 步。
真实的后台的数据,所计算出来的结果。可以调整不同的 w 和不同的 b,求取各种w 和各种 b,组合起来以后,我们可以为不同的 w 跟 b 的组合,都去计算它的损失,就可以画出图 1.2 所示的等高线图。在这个等高线图上面,越偏红色系,代表计算出来的损失越大,就代表这一组 w 跟 b 越差。如果越偏蓝色系,就代表损失越小,就代表这一组 w 跟 b 越好,拿这一组 w 跟 b,放到函数里面,预测会越精准。
3.优化
找一个 w 跟 b,把未知的参数找一个数值出来,看代哪一个数值进去可以让损失 L 的值最小,就是要找的 w 跟 b,这个可以让损失最小的 w 跟 b 称为 w∗ 跟 b∗ 代表它们是最好的一组 w 跟 b,可以让损失的值最小。梯度下降(gradient descent)是经常会使用优化的方法。
常用梯度下降的方法:
第一件事情是这个地方的斜率,斜率大步伐就跨大一点,斜率小步伐就跨小一点。• 另外,学习率(learning rate)η 也会影响步伐大小。学习率是自己设定的,如果 η 设大一点,每次参数更新就会量大,学习可能就比较快。如果 η 设小一点,参数更新就很慢,每次只会改变一点点参数的数值。这种在做机器学习,需要自己设定,不是机器自己找出来的,称为超参数(hyperparameter)。
右侧红点这个位置是真的可以让损失最小的地方,称为全局最小值(global minima),而 wT 这个地方称为局部最小值(local minima)
当w=wT,斜率为0,这个地方称为局部最小值
随着w的不断更新,loss的斜率会逐渐变化,最终成0
4.最后
在深度学习框架里面,比如 PyTorch 里面,算微分都是程序自动帮计算的。就是反复同样的步骤,就不断的更新 w 跟 b,期待最后,可以找到一个最好的 w,w∗ 跟最好的 b∗,观察数据,理解,再不断更新模型