通过学习本篇文章和视频,我对深度学习有了一定的了解。机器学习是让机器具备找一个函数的能力,以完成各种任务;而深度学习是机器学习的一个重要分支。
机器学习的任务类别有三种,一个是回归:输出是一个数值(标量),例如预测未来某一时间的 PM2.5 数值;一个是分类:输出是从设定好的选项中选择一个,例如检测邮件是否为垃圾邮件,AlphaGo 下围棋也是分类问题;一个是结构化学习:让机器产生有结构的物体,如画图、写文章等。
通过案例学习,我对视频点击次数预测也有了一定的了解。基本上分为以下几个步骤:
- 步骤一:写出带有未知参数的函数,如,其中是预测的今天频道的观看次数,是前一天的观看次数,和是未知参数。称为权重,称为偏置。
- 步骤二:定义损失函数,输入是模型参数和,输出代表参数设定某一数值时的好坏。通过训练数据计算损失,如根据过去的观看次数计算预测值与真实值的差距,可采用平均绝对误差(MAE)或均方误差(MSE)等方法。不同的和组合会得到不同的损失,可画出误差表面(等高线图)。
- 步骤三:解最优化问题,找到使损失最小的和(和)。常用梯度下降法,假设只有一个未知参数,随机选取初始点,计算该点的微分以确定移动方向,移动步伐大小取决于斜率和学习率(超参数)。梯度下降可能存在局部最小值问题,但实际中局部最小值并非主要难题。
通过案例学习找到使损失小到 480 的和,在已知数据上计算损失较小,在未看过的数据上预测未来观看次数的误差为 0.58。
学习中我也发现了一些隐藏任务。
术语 | 解释 | ||
---|---|---|---|
回归(regression) | 假设要找的函数的输出是一个数值,一个标量(scalar),这种机器学习的任务称为回归。例如,机器要预测未来某一个时间的 PM2.5 的数值,其输入是可能与预测 PM2.5 有关的指数,输出是明天中午的 PM2.5 的数值,找这个函数的任务就称为回归。 | ||
分类(classification) | 分类任务要让机器做选择题,人类先准备好一些选项,这些选项称为类别(class),现在要找的函数的输出就是从设定好的选项里面选择一个当作输出,该任务称为分类。例如,检测一封邮件是否为垃圾邮件就是一个分类任务,分类不一定只有两个选项,也可以有多个选项。AlphaGo 下围棋也是一个分类问题,机器从 19×19 个可以落子的位置里面选出下一步应该要落子的位置。 | ||
结构化学习(structured learning) | 机器不只是要做选择题或输出一个数字,而是产生一个有结构的物体,比如让机器画一张图,写一篇文章,这种叫机器产生有结构的东西的问题称为结构化学习。 | ||
损失(loss) | 损失也是一个函数,其输入是模型里面的参数,输出的值代表现在如果把这一组未知的参数设定某一个数值的时候,这笔数值好还是不好。例如,通过计算预测值与真实值的差距来评估参数的好坏。 | ||
平均绝对误差(Mean Absolute Error, MAE) | 计算 y 与ˆy 之间绝对值的差距,如式 $e = | \hat{y} - y | $ 所示,用于衡量预测值与真实值之间的平均误差大小。 |
均方误差(Mean Squared Error, MSE) | 计算 y 与ˆy 之间平方的差距,如式所示,用于衡量预测值与真实值之间的误差平方的平均大小。 | ||
梯度下降(gradient descent) | 一种常用的优化方法,用于找到使损失最小的参数。通过随机选取初始点,计算该点的微分来确定移动方向,移动步伐大小取决于斜率和学习率,不断更新参数位置,直到满足停止条件。 | ||
学习率(learning rate) | 在梯度下降中,学习率是自己设定的超参数。如果学习率设大一点,每次参数更新就会量大,学习可能就比较快;如果学习率设小一点,参数更新就很慢,每次只会改变一点点参数的数值。 | ||
超参数(hyperparameter) | 在机器学习中,需要自己设定的参数,不是机器自己找出来的,例如梯度下降中的学习率、调整参数时计算微分的次数等。 | ||
局部最小值(local minima) | 在梯度下降中,参数可能会停留在一个地方,该地方的左右两边都比这个地方的损失还要高一点,但它不是整个误差表面上面的最低点。 | ||
全局最小值(global minima) | 在误差表面上可以让损失最小的地方。 |
希望之后自己能坚持机器学习方面的学习。