【深度学习讲解笔记】第1章-机器学习基础

1.机器学习是什么

机器学习(Machine Learning,ML),顾名思义就是让机器学会做一件事情,比如语音识别,机器听一段声音,产生这段声音对应的文字。或是识别图片中有几个人,几辆车。这些复杂的功能,归结起来就是:**让机器具备找一个函数的能力。**这个函数显然非常复杂,人类难以把它写出来,因此想通过机器的力量把这个函数自动找出来。AlphaGo 也可以看作是一个函数,该函数的输入是棋盘上黑子跟白子的位置,输出是机器下一步应该落子的位置。

随着要找的函数不同,机器学习有不同的类别。假设要找的函数的输出是一个数值,一个标量(scalar),这种机器学习的任务称为回归。比如输入房子的面积,楼层,地段来预测房价;或是输入上一周的气温预测今天的气温等。这类任务输出是连续空间中的一个值。

除了回归以外,另一个常见的任务是分类(classification)。分类任务要让机器做选择题。人类先准备好一些选项,这些选项称为类别(class),现在要找的函数的输出就是从设定好的选项里面选择一个当作输出,该任务称为分类。举个例子,每个人都有邮箱账户,邮箱账户里面有一个函数,该函数可以检测一封邮件是否为垃圾邮件。分类不一定只有两个选项,也可以有多个选项。这类任务输出是离散空间中的一个值。

2.机器学习做什么

以视频的点击次数预测为例介绍下机器学习的运作过程。假设后台可以看到很多相关的信息,比如:每天点赞的人数、订阅人数、观看次数。根据一个频道过往所有的信息可以预测明天的观看次数。找一个函数,该函数的输入是后台的信息,输出是隔天这个频道会有的总观看的次数。

1.定义函数

数学上的函数不胜枚举,如果让机器自己找会十分费力,我们可以简化一下过程:人类给出一系列函数,让机器自己找到其中最适合当前任务的一个 。比如人类告诉机器某天的播放量y与前一天的播放量x有如下关系: ,其中w和b是未知的参数,故而上述公式中包含了一组函数 。如y = 1.5x + 2, y = -0.4x都在里面。让机器自己去找到最适合预测观看次数的w和b的值,从而确定唯一的函数。如y = 0.9x + 1。

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

2.定义损失

那么如何让机器找到最合适的函数呢?比如机器怎么知道y = 1.5x + 2, y = -0.4x 和 y = 0.9x + 1 哪个更好呢?这就需要定义损失 (loss)。损失也是一个函数。这个函数的输入是模型里面的参数,

模型是 y = b + wx,而 b 跟 w 是未知的,损失是函数 L(b, w),其输入是模型参数 b 跟w。损失函数输出的值代表当前的b和w确定的模型好还是不好。

计算损失的方法有:平均绝对误差,均方误差,交叉熵等。在回归问题中,损失越小,代表回归模型对样本的拟合越好;在分类问题中,损失越小,代表分类模型对样本的分类越准确。

3.优化模型

到这里你可能想问:机器怎么找到损失最低的模型呢?让机器一个一个蒙?先蒙一个y = 1.5x + 2,再试y = -0.4x,再试y = 0.9x + 1,从这3个中选一个损失最低的。如果3次不够,就试100次,1000次,反正有的是时间。这样做的问题就是:运气的成分太大了。机器学习的任务是从无穷多的模型中找到一个效果较好的,有限次的采样必然不能找到最好的;另外这种方法有一个问题:小张训练1000次得到的模型和小李训练1000次的模型效果差异很大,小张运气好采到了最优解,而小李运气差些没有采到最优解,这种结果肯定不是我们想要的。

我们再想一下:我们要找到最好的模型,就是找到使损失函数值最小的模型参数。回顾损失函数公式:L(b, w),欸,模型参数是损失函数的自变量。你可能也想到了,这就是数学中的最优化问题。 解决最优化问题的方法很多:求导找驻点,拉格朗日乘子法等。在计算机求解中常用迭代 的方法,机器学习中用的是梯度下降法(gradient descent)。

讲解梯度下降法的文章很多,这里简略说明,梯度下降法就是逐渐沿着函数向低处走。

由于损失函数是我们定义的,所以我们可以告诉计算机它的偏导数公式,对于较复杂的损失函数,我们很难对其微分的话,在计算机中有自动微分符号微分数值微分等办法。

损失函数L(b, w)的图像也叫误差表面。

L(b, w)是关于b和w的二元连续函数,其Z轴难以画出故而用颜色深浅代替函数值。

梯度下降法每次按照一下公式更新参数:

其中η为超参数 ,不能由机器自己学习到,需要我们定义,这里η叫学习率,通常很小,如0.1,它决定每次沿着损失表面走多少距离。

上述公式也可以写为:

这样写更直观的反映了"梯度下降"的本质,同时当模型中不止有2个参数,而是有很多个参数时,这种写法更方便。

梯度下降的过程如下图:

这样机器就会自动沿着误差表面一步步地"学习",知道找到损失最小的,也就是最优的模型。

相关推荐
无脑敲代码,bug漫天飞1 小时前
COR 损失函数
人工智能·机器学习
HPC_fac130520678162 小时前
以科学计算为切入点:剖析英伟达服务器过热难题
服务器·人工智能·深度学习·机器学习·计算机视觉·数据挖掘·gpu算力
冰帝海岸5 小时前
01-spring security认证笔记
java·笔记·spring
小二·6 小时前
java基础面试题笔记(基础篇)
java·笔记·python
wusong9999 小时前
mongoDB回顾笔记(一)
数据库·笔记·mongodb
猫爪笔记9 小时前
前端:HTML (学习笔记)【1】
前端·笔记·学习·html
Resurgence039 小时前
【计组笔记】习题
笔记
pq113_69 小时前
ftdi_sio应用学习笔记 3 - GPIO
笔记·学习·ftdi_sio
老艾的AI世界10 小时前
AI翻唱神器,一键用你喜欢的歌手翻唱他人的曲目(附下载链接)
人工智能·深度学习·神经网络·机器学习·ai·ai翻唱·ai唱歌·ai歌曲
DK2215110 小时前
机器学习系列----关联分析
人工智能·机器学习