一文清晰理解机器学习到底在干嘛

在这里插入图片描述

🚀 该篇文章关于机器学习内容的知识分享,其内容核心主要来自于台湾大学李宏毅教授教授的机器学习课程,其视频链接如下 https://www.youtube.com/@HungyiLeeNTU
🚀 理解一切人工智能的核心都是理解其如何找到最优函数,或者说是如何定义损失函数。

1)什么是机器学习

现在随着人工智能的发展,我们多多少少都听过人工智能,机器学习这样的词汇,而其实所谓的人工智能都可以被抽象理解为一个函数(function),这个函数的功能十分强大,可以解决很多事情,有以下例子:

如上所示的例子,对于一个音频识别来说,就是将音频输入一个函数 fff 来说,该函数的功能是将音频的内容映射为对应的句子;对于图像识别来说说,当给函数输入一张猫的图片,函数会将其映射为"Cat"。所以不难理解,其实所谓的机器学习,人工智能都是在干一件事情 —— Looking a function 找一个函数,这个函数可以将输入(input)的转化为一个输出(output)结果。对于函数来说,只要想要实现的任务不同,函数设计就应该不同。

在机器学习中,主要分为三大类算法,

  • ①Supervised Learning 监督学习类算法,
  • ②Unsupervised Learning 非监督类学习算法,
  • ③Reainforced Leaning 强化学习;

这三大类算法其实核心都是通过输入数据找到一个强大的函数,这个强大的函数可以实现我们实际的需求。其实这种分类方法本质是根据训练过程中使用的数据类型及学习目标的不同。所谓的监督学习是输入数据存在标签;非监督学习输入的数据是没有标签的;强化学习是基于与环境的交互,通过试错学习最优化函数输出。

在机器学习中,还可以这样分类

  • ①Regression (回归)
  • ②Classification (分类)
  • ③Structed Learning (结构化学习)

例如我想实现一个机器学习算法,希望能够可以将接受到的邮寄进行自动化分类,分为垃圾邮件和不是垃圾邮件,显然我们是想让函数给我们完成一个分类任务;若我们想让函数给我们预测一下什么是股票会涨/跌到哪个百分点,显然函数会给我们一个具体的数值,这即是一个回归任务;若我们只是想让函数给我们唱首歌绘制一幅画,即就是想让机器给我们一个创造一些有结构的something,即结构化学习。所以根据函数的不同,我们可以将这些函数分为以上具体的三大类。

对于初学来说,可以优先记住第二种分类,这种分类方式更好理解,如理解不了,就留有一个印象即可,随着后面学习的深入,会自动明白其分类依据。

2)如何寻找到一个函数以实现具体的功能呢?

我们知道了其实所谓的机器学习就是根据输入信息 input 来寻找一个最优函数,这个函数可以很好的解决现实问题。那这个具体的函数又是如何根据输入信息来具体得到呢?或者换句话说,模型如何根据输入信息自动的学习,自动的找出最优函数呢?

举例:

任务:预测某youtube博主某视频的下一天观看人数;输入数据:某youtube博主每天视频的观看人数

开始寻找最优函数…

以下是一个 youtube博主每日视频的观看人数,我们现在的目标是要去寻找一个函数能够预测出下一天的观看人数;显然我们需要函数能够给我们一个具体的数值,这是一个典型的回归问题,那我们该如何去找到这样一个函数呢?

其实最开始我们不需要想的那么复杂,也许我们就可以先使用一个最简单的函数来作为我们要找的这个函数,例如y=b+wx1y=b+wx_1y=b+wx1 其中x1x_1x1 被称为特征(features),也就是什么是最影响后一天播放量的特征,这里话我们可以认为前一天的播放量与后一天的播放量存在直接的关系,所以这里的x1x_1x1可以被认为是前一天的播放量,而函数中bbbwww被称之为未知参数(unkown parameters),而其中的www又被叫做权重参数。

到这一步,其实我们的对于函数的选择已经完成了,可是函数中还存在未知参数,我们可以进一步通过2017年到2020年的已知数据去计算得到未知参数,以下我们接着去求解未知参数。

3)定义损失函数 L(b,w)L(b,w)L(b,w)

首先我们需要先知道什么是损失函数,假设我们现在已知了函数中的未知参数 bbbwww 的话,假设 b=0.5k,w=1b=0.5k,w=1b=0.5kw=1 的话我们就可以计算损失了。

计算的损失 e1e_1e1 如上所示,当 b=0.5k,w=1b=0.5k,w=1b=0.5kw=1 时,将 x1x_1x1带入方程,其最后预测得到的2017/01/02的结果是 5.3k5.3k5.3k,和实际结果相差 0.4k0.4k0.4k ,然后依次预测接下去每一天的观看值得到每一个损失,并且最后将所有的损失值都求和并除N

所以我们的损失函数定义如下Loss(b,w)=1/N(Σen)Loss(b,w)=1/N(\Sigma e_n)Loss(b,w)=1/N(Σen),很显然,我们的需求是想让损失函数越小越好,损失越小,函数给出的预测值和真实值就会越接近,即预测结果就越精准,所以最后求解最优的b和w转化为了找到最优的b和w,可以使得Loss最小

4)最优化(Optimization)

最优化其实就是最终求解未知参数的方法了,所谓的最优化目标也是让损失最小,即最优化,即找到最优的未知参数b和w。我们这里使用梯度下降(Gradiant descent)的方法来求解未知参数,为了更好的理解梯度下降求解未知参数的方法,我们先假设我们的Loss函数为 Loss(w)Loss(w)Loss(w),只有一个未知参数。

如上图展示的是Loss与w的关系图像;其求解未知参数w的过程如下:

  • 随机选择一个点,这里选择了w0w^0w0
  • 在点w0w^0w0处计算其微分,说白了也就是想要知道该点处的斜率

w0w^0w0点处的斜率为负值的话,说明此时的w值并不能使得Loss最小,即当增大w时,Loss会更小;所以斜率为negtive(负值)时,增加(increase)w的值,跟新其为w1w^1w1w0w^0w0点处的斜率为正值的话,说明此时的w值并不能使得Loss最小,即当减小w时,Loss会更小;所以斜率为postive(正值)时,减小(decrease)w的值,跟新其为w1w^1w1w0w^0w0点处的斜率为零的话,说明此时的w值能使得Loss最小,即找到最优解。

🚀 其中有一个小问题:w0w^0w0 在更新为 w1w^1w1 的时候该怎么更新呢?换句话说,该以什么样的倍率增大或减小呢?

如上图所示,w0w^0w0 在更新为 w1w^1w1 的时候是利用原来的数值减去η\etaη乘上在该点的微分,若w0w^0w0 点的微分负的很大时候,说明该点的斜率负的很大,即减去η\etaη乘上在该点的微分变成w0w^0w0 加上\eta$乘上在该点的微分,即让 www 值变大,相反,当某点的微分为正时,就会让其www值减小。

但是好像不加η\etaη也能实现www值的变化,但是为什么需要加η\etaη呢,η\etaη被称之为学习率,同时也被称之为超参数(hyperparameters)一般由自己设定,通过自主调节η\etaη值的大小,就可以控制www的变化快慢,这也就是为什么η\etaη也被称之为学习率的原因了。

但是到这里好像已经解决了怎么求解未知参数的问题,但是还有一个问题,就是随着梯度下降的进行,有可能会陷入局部最优的问题(local minima),如下图所示。

随着梯度下降的进行,当其跟新到wTw^TwT的时候,就会陷入局部最优从而梯度下降法永远到达不了真正意义上的全局最优点(global minima);这样看着好像local minima的问题是真的解决不了,但是其实不用担心,他是很好解决的,基本不可能会出现local minima的问题!

现在我们接下去看两个参数的通过梯度下降如何求解

同样的是随机选取一点,分别计算该点处的偏微分,每个参数分别更新,如下图所示。

最后的求解过程如下图所示,随机取点,计算该点处的微分,通过梯度下降一步一步走到最后,找到了最优解(w∗=0.97,b∗0.1kw^*=0.97,b^*0.1kw=0.97,b0.1k),且Loss为0.48k。

通过梯度下降求解出来两个未知的函数参数,这也就代表其实这个函数已经被我们求解出来了,并且我们让其在2017-2020年上的数据上表现良好,Loss为0.48k。

5)测试

在上面,通过梯度下降我们以及求解出来了函数,现在就需要进行测试,看下这个模型对于预测未来数据表现的如何,其结果如下图所示。

通过上图不难发现,预测的蓝色线特别像是红色线平移了一天得到的,其实原因就是我们就是使用前一天的观看人数来预测下一天的观看人数,所以就会导致出现这个现象,显然只看一天的数据来预测下一天的数据,是很不科学的,必然会导致有几天预测的结果和实际的结果相差
非常大,如下图所示:

竟然考虑前一天来预测下一天极其不合理,我们也许可以将前七天,或则前28天或者前56天都考虑进来预测下一天数据的话,也许会更好,其结果如下,现在随着更多天数的加入,我们的LossLossLoss的值最后达到了0.32k0.32k0.32k,同时预测未来的数据误差为0.46k0.46k0.46k

同时也暴露出来了一个问题,就是,无论怎么增大考虑进去的天数,最终的效果都不能在精进了,这是由于使用的是线性模型(liner model),必然限制住了其准确度。

感谢你能看到最后 ❤❤❤
今天是我正式放弃考研的第一天,写下了这篇文章,心情沉重,不知道这样的选择是否正确;正好今天的文章主题是梯度下降,我们的选择可能就是一个随机的起点,但是随机梯度下降告诉我们,不管起点在哪里,最后得到的解都是差不多的,即使很远,一路走下去,不断微调,终能到达 ! 当然有比梯度下降更复杂的算法来求解最优值,他们的思想是每一步都需要看的更远更准,想步子迈大,可是在深度学习里大家还是喜欢使用梯度下降,每次只瞄准当前的世界,做个快速决定,然后迈一小步,小步快跑,简单最好。不久的将来我们终会走到属于自己的global minima。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值