Datawhale X 李宏毅苹果书 AI夏令营 深度学习入门笔记01

目录

一、学习资料

二、学习笔记

(一)机器学习定义

(二)机器学习类别

(三)案例学习——怎么让机器找到一个函数

1、Function with Unknown Parameters 写出带有未知数的函数

2、 Define Loss from Training Data 定义损失

3、Optimization 最佳化


一、学习资料

Datawhale提供的苹果书:Datawhale (linklearner.com)

李宏毅老师对应视频课程:预测本频道观看人数(上) - 机器学习基本概念简介_哔哩哔哩_bilibili

二、学习笔记

(一)机器学习定义

让机器具备找函数的能力。

如AlphaGo。要让机器下围棋,我们需要一个函数。函数输入:棋盘上黑子和白子的位置。输出:下一步该落子的位置。

(截图自李宏毅老师视频,下同)

(二)机器学习类别

1、Regression(回归):The function outputs a scalar(标量). 我们要找的函数输出是一个数值。

2、Classification(分类): Given options (classes(类别)), the function outputs the correct one. 人类预先准备好选项(类别),然后让机器做选择题。函数的输出就是从我们设定好的选项中选择一个输出。

如,甄别邮件是否为垃圾邮件。如,AlphaGo下一步下在哪里,就是一道选择题,棋盘上有19*19个位置,让AlphaGo做选择。

3、Structured Learning(结构化学习):Create something with structure (image, document). 让机器学会创造。

(三)案例学习——怎么让机器找到一个函数

案例:从YouTube后台查看过往访问资料,预测该频道隔天的点击率。

分为三个步骤:

1、Function with Unknown Parameters 写出带有未知数的函数

设要预测的参数为y,已知的(过往的)参数为x1。

存在y=w*x1+b

【插入补充:

①w和b均为未知的参数,是准备要通过数据去找出来,目前只是猜测。而猜测往往来自于对这个问题本质上的了解,即领域知识(domain knowledge)。

②在机器学习里,带有未知的参数(parameter)的函数称为模型(model)。

③x1称为特征(feature),是这个函数里面已知的(来自后台,过往点击的总次数是已知的),而w和b是未知的参数。

④与feature相乘的w称为权重(weight),没有与feature相乘的b称为偏置(bias)。】

2、 Define Loss from Training Data 定义损失

假设此时w=1, b=500,则y=x1+500

代入后台提供的已知数据中,假设从2017.1.1预测1.2的数值,则y=1*4800+500=5200

与1.2实际数值(label标签)相比,5200≠4900,定义二者差距为e1,数值为e1=/y-y'/=400。以此类推,可得到一串e1~en的数值。

平均绝对误差(Mean Absolute Error,MAE):把e1~en取平均值,命名为L,是每一个训练资料的误差。L越大,说明目前这一组的参数越不好,反之越小则越好。

除了求平均绝对误差之外,还有另一种计算方法:均方误差(Mean SquaredError,MSE)=(y-y')^2。

具体使用哪种方法……it depends.

如果y和y'都是概率分布,这个时候可能会选择交叉熵(cross entropy)

可以随意调整w和b,得出不同的y=w*x1+b。在此之上计算出不同的loss,画出一张等高线图,称之为误差表面(error surface)。

越红代表L越大,也就是误差越大。越蓝代表L越小,误差越小,这一组w, b越好。

(红点所在的区域是最准确的)

从中取w=1时,b大约在100左右,这时候是最准确的、最接近实际情况的函数。

3、Optimization 最佳化

找一组w和b,使L最小,就是最佳的y=w*x1+b

如何找到?使用梯度下降(gradient descent)

(1)为了简化问题,先假设误差表面(error surface)图中L只受一个未知数w的影响,画出w关于L的图。

随机在曲线上选取一个w点,名之为w0。计算在这一个w0点上误差表面L的微分(切线斜率)。

如果在w0上的切线斜率是负的(切线左高右低),把w的值变大(向右移动w点),就可以让损失L变小;如果在w0上的切线斜率是正的(左低右高),就把w往左移,可以让损失值L变小。

最终目标是要找到斜率为0的w点。

(老师:我们可以想像说有一个人站在这个地方,他左右环视一下,算微分就是左右环视,它会知道左边比较高还是右边比较高,看哪边比较低,它就往比较低的地方跨出一步。)

那么这一步要跨多大?也就是w0到w1移动距离是多远?由两个因素决定:

一是斜率。如果w0这个地方的斜率大,那么步伐就跨大一点,即w0到w1移动远一点;反之斜率小,步伐就跨小一点。

二是学习率(learning rate)η 。学习率是自己设定的,如果 η 设大一点,每次参数更新就会量大,学习可能就比较快。如果 η 设小一点,参数更新就很慢,每次只会改变一点点参数的数值。在机器学习中,该数值需要自己设定,不是机器自己找出来的,称为超参数(hyperparameter)。

大佬解释:首先选择一个点,随后我们在这个点取微分,并且定义一个学习率,我们假设步长为该点的微分乘上学习率(这样做的好处,当曲线趋近平缓的时候,微分也小,往后逼近的速度也会变慢),我们就按照这个步长依次往最小点逼近,直到逼近或者达到一个相对满意的效果。如果是两个变量,就要乘以负数的步长,因为这个双变量的微分是有方向的,我们要按照一个钝角的方向才能靠拢,而最好的方向显然就是180度,所以要乘负号。

根据上述逻辑,重复寻找w点直到模型停止。有两种情况会使模型停止:

一是达到了学习次数的上限。在计算微分的时候,设置更新次数(最多计算几次)(该数值也是一个超参数)。比如上限设为 100 万次,在参数更新 100 万次后,就不会再继续更新了,模型也会停止。

二是到达理想情况,斜率为0了。0乘学习率 η 还是0,所以w就不会再移动位置。

但在本案例中,出现了一个问题。即斜率=0的点未必是L最小的点。也就是说,w没有找到真正的最好的解。

右侧红点这个位置是真正的损失L最小的地方,称为全局最小值(global minima),而wT这个点虽然斜率也为0,但它不是整个误差表面上的最低点,称为局部最小值(local minima)。

(2)回到原本的问题,实际上L受w和b两个参数的影响。刚才为了简化,只取了w一个参数。

如果刚才的一个参数没问题的话,可以直接推广到两个参数。

还是一样,随机取值w0和b0,算这个点上的微分。

(两个变量的微分人不会算的话没关系,AI会算就行了)

然后同上的方法,一直移动,直到找到使斜率为0的点。

最后得出结果,w=0.97,b=100时,L达到最小值,此时L=480。

至此,为一个完整的确定函数的步骤。

总结一下哪三步:①写出带有未知数的函数 ②定义损失Loss ③找到最佳的w和b

  • 16
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值