首页 > 其他分享 >机器学习新手入门笔记02#AI夏令营#Datawhale X 李宏毅苹果书#夏令营

机器学习新手入门笔记02#AI夏令营#Datawhale X 李宏毅苹果书#夏令营

时间:2024-08-28 21:21:24浏览次数:7  
标签:02 函数 批量 Sigmoid ReLU 新手入门 参数 所示 夏令营

机器学习

一、线性模型

(一)概念

把输入的特征x乘上一个权重,再加上一个偏置得到预测的结果,这样的模型称为线性模型(linear model)

(二)分段线性曲线(piecewise linear curve)

局限性:Linear models have severe limitation:Model Bias,so we need a more flexible model!

分段线性曲线(下图中的红色线)可以看作是一个常数,再加上一堆蓝色的函数。分段线性曲线可以用常数项加一大堆的蓝色函数组合出来,只是用的蓝色函数不一定一样。要有很多不同的蓝色函数,加上一个常数以后就可以组出这些分段线性曲线。如果分段线性曲线越复杂,转折的点越多,所需的蓝色函数就越多。

同时,我们可以用分段线性曲线去逼近任何的连续的曲线,而每个分段线性曲线都可以用一大堆蓝色的函数组合起来。也就是说,只要有足够的蓝色函数把它加起来,就可以变成任何连续的曲线。

假设 x 跟 y 的关系非常复杂也没关系,就想办法写一个带有未知数的函数。直接写 Hard Sigmoid 不是很容易,但是可以用一条曲线来理解它,用 Sigmoid 函数来逼近 Hard Sigmoid。

二、机器学习三部曲

(一)设定模型

Sigmoid 函数概念:长得有点像是 S 型,所以叫它 Sigmoid 函数。

用 Sigmoid 函数来逼近 Hard Sigmoid,其公式和过程如下:

调整这里的 b、w 和 c 可以制造各种不同形状的 Sigmoid 函数,用各种不同形状的 Sigmoid函数去逼近 Hard Sigmoid 函数。如下图所示,如果改 w,就会改变斜率,就会改变斜坡的坡度。如果改了 b,就可以把这一个 Sigmoid 函数左右移动;如果改 c,就可以改变它的高度。所以只要有不同的 w 不同的 b 不同的 c,就可以制造出不同的 Sigmoid 函数,把不同的Sigmoid 函数叠起来以后就可以去逼近各种不同的分段线性函数;分段线性函数可以拿来近似各种不同的连续的函数。

我们可以用多个特征代入不同的 c, b, w,组合出各种不同的函数,从而得到更有灵活性(flexibility)的函数,如下图所示:

把i和j分别为1,2,3代入等式右边,依次得到r1,r2,r3,然后如下图所示,把各等式中的系数值转化为系数矩阵,此时我们得到了一个矩阵方程。

r1, r2, r3 分别通过 Sigmoid 函数得到 a1, a2, a3因此,如下图所示,蓝色虚线框里面做的事情,是从 x1, x2, x3 得到了 a1, a2, a3。

上面这个比较有灵活性的函数,如果用线性代数来表示,具体过程如下图所示:

接下来,如下图所示,x 是特征,绿色的 b 是一个向量,灰色的 b 是一个数值。W, b, cT, b是未知参数。把这些东西通通拉直,“拼”成一个很长的向量,我们把 W 的每一行或者是每一列拿出来。无论是拿行或拿列都可以,把 W 的每一列或每一行“拼”成一个长的向量,把 b, cT, b“ 拼” 上来,这个长的向量直接用 θ 来表示。所有的未知的参数,一律统称 θ。

(二)定义损失

之前的损失函数是 L(w, b),因为 w 跟 b 是未知的。现在未知的参数很多了,再把它一个一个列出来太累了,所以直接用 θ 来统设所有的参数,所以损失函数就变成 L(θ)。损失函数能够判断 θ 的好坏,其计算方法跟刚才只有两个参数的时候是一样的

如下图所示,先给定 θ 的值,即某一组 W, b, cT, b 的值,再把一种特征 x 代进去,得到估测出来的 y,再计算一下跟真实的标签之间的误差 e。把所有的误差通通加起来,就得到损失。

(三)优化

要找到 θ 让损失越小越好,可以让损失最小的一组 θ 称为 θ∗。一开始要随机选一个初始的数值 θ0。接下来计算每一个未知的参数对 L 的微分,得到向量 g,即可以让损失变低的函数。

或者,我们也可以使用梯度下降更新参数来计算出梯度为 0 向量,直至无法再更新参数为止,不过由于在实现上几乎不太可能梯度为 0,通常会停下来就是我们不想做了。

但实现上有个细节的问题,实际使用梯度下降的时候,如下图所示,会把N笔数据随机分成一个一个的批量(batch),一组一组的。每个批量里面有B笔数据,所以本来有N笔数据,现在B笔数据一组,一组叫做批量。本来是把所有的数据拿出来算一个损失,现在只拿一个批量里面的数据出来算一个损失,记为L1跟L以示区别。假设B够大,也许L跟L1会很接近。所以实现上每次会先选一个批量,用该批量来算L1,根据L1来算梯度,再用梯度来更新参数,接下来再选下一个批量算出L2,根据L2算出梯度,再更新参数,再取下一个批量算出L3,根据L3算出梯度,再用L3算出来的梯度来更新参数。

所以并不是拿L来算梯度,实际上是拿一个批量算出来的L1,L2,L3来计算梯度。把所有的批量都看过一次,称为一个回合(epoch),每一次更新参数叫做一次更新

更新跟回合是不同的东西。每次更新一次参数叫做一次更新,把所有的批量都看过一遍,叫做一个回合。

例子1

假设有 10000 笔数据,即 N 等于 10000,批量的大小是 10,也就 B 等于 10。10000 个样本(example)形成了 1000 个批量,在一个回合里面更新了参数 1000 次,所以一个回合并不是更新参数一次,在这个例子里面一个回合,已经更新了参数 1000 次了。

例子2

假设有 1000 个数据,批量大小(batch size)设 100,批量大小和 Sigmoid的个数都是超参数。1000 个样本,批量大小设 100,1 个回合总共更新 10 次参数。所以做了一个回合的训练其实不知道它更新了几次参数,有可能 1000 次,也有可能 10 次,取决于它的批量大小有多大。

三、模型变形

其实还可以对模型做更多的变形,不一定要把 Hard Sigmoid 换成 Soft Sigmoid。如下图所示,Hard Sigmoid 可以看作是两个修正线性单元(Rectified Linear Unit,ReLU)的加总,ReLU 的图像有一个水平的线,走到某个地方有一个转折的点,变成一个斜坡,其对应的公式为c ∗ max(0, b + wx1)。

如下图所示,2 个 ReLU 才能够合成一个 Hard Sigmoid。要合成 i 个 Hard Sigmoid,需要 i 个 Sigmoid,如果 ReLU 要做到一样的事情,则需要 2i 个 ReLU,因为 2 个 ReLU 合起来才是一个 Hard Sigmoid。因此表示一个 Hard 的 Sigmoid 不是只有一种做法。在机器学习里面,Sigmoid 或 ReLU 称为激活函数(activation function)。

注:还有其他常见的激活函数,但 Sigmoid 跟 ReLU 是最常见的激活函数。

如下图所示,Sigmoid 或 ReLU 称为神经元(neuron),很多的神经元称为神经网络(neural network)。人脑中就是有很多神经元,很多神经元串起来就是一个神经网络,跟人脑是一样的。人工智能就是在模拟人脑。神经网络不是新的技术,80、90 年代就已经用过了,后来为了要重振神经网络的雄风,所以需要新的名字。每一排称为一层,称为隐藏层(hidden layer),很多的隐藏层就“深”,这套技术称为深度学习

在本实验(视频的点击次数预测)中,使用 3 次 ReLU 的实验结果如下图所示:

注:真实的观看次数在除夕夜当天出现了最低点,但机器学习无法识别,因此会出现了少许偏差。

刚才只做到 3 层,应该要做得更深,现在网络都是叠几百层的,深度学习就要做更深。但4 层在训练数据上,损失是 100,在没有看过 2021 年的数据上,损失是 440。如下图所示,在训练数据上,3 层比 4 层差,但是在没看过的数据(测试数据)上,4 层比较差,3 层比较好。在训练数据和测试数据上的结果是不一致的,这种情况称为过拟合(overfitting)。

四、机器学习框架

训练数据与测试数据的区别

训练数据既有x又有y,而测试数据只有x没有y。

如下图所示,训练的过程共分为三个步骤:

标签:02,函数,批量,Sigmoid,ReLU,新手入门,参数,所示,夏令营
From: https://blog.csdn.net/2302_78188618/article/details/141649204

相关文章

  • 《2024 年最新 YouTube 转 MP3 攻略
    在当今数字化时代,我们常常会遇到想要将YouTube上的精彩视频内容转换为MP3音频格式以便于随时随地收听的情况。以下为大家介绍几种最新的实用方法:**方法一:利用在线工具**youtubemp3dl-**youtubemp3dl**:特别适用于Windows和Mac操作系统,是一款出色的基于互联网的YouTu......
  • 2024, 是时候告别CentOS了
    到了2024年,不管你有多喜欢CentOS,也到了该告别CentOS的时候了.那个可能在你职业生涯中陪伴了你非常多年,一直稳定运行的Linux系统,在2024年后,已经不再是你可靠的选择了. 最后一个仍然还在维护中的CentOS7将于2024年6月底就ENDOFLIFE了.这意味着,如果你仍然继续使......
  • Hitachi Vantara Programming Contest 2024(AtCoder Beginner Contest 368)F - Dividing
    https://atcoder.jp/contests/abc368/tasks/abc368_f#include<bits/stdc++.h>#definexfirst#defineysecondusingnamespacestd;typedeflonglongll;typedefpair<ll,char>pii;constintN=2e5+10,inf=1e9;lln,m,k;intb[N],sg[N],a[N];vector......
  • BaseCTF2024-week2-Crypto部分题目wp
    先放一下官方的wp(我这里只放我出的题):https://j0zr0js7k7j.feishu.cn/wiki/JQbiwKdvtiR49VkMj5RcmPvPn7crandom_primesfromCrypto.Util.numberimport*importrandomdefgen_n():primes=[getPrime(128)for_inrange(256)]n=1foriinrange(100):......
  • 【2024-08-27】学前准备
    20:00仅仅把得到别人的爱当成最高目标,你就不可能获得成功。想让别人真正爱你,只有让自己成为值得爱的人。                                                 ——M·斯科......
  • 信息学奥赛一本通1314:【例3.6】过河卒(Noip2002)
    【题目描述】棋盘上A点有一个过河卒,需要走到目标B点。卒行走的规则:可以向下、或者向右。同时在棋盘上的某一点有一个对方的马(如C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点,如图3-1中的C点和P1,……,P8,卒不能通过对方马的控制点。棋盘用坐标表示,A点(0,0)、B点(n,......
  • 2024羊城杯hiden和数据安全2解
     Misc-hiden 下载附件得到内容如下 音频没看到有明显的摩斯密码,再去研究一下txttxt内容为rot加密ROT47解码:得到一段标准代码凯撒解密,偏移量是13(或者直接rot13)代码意思如下:1、打开名为flag.txt的文件并以二进制模式读取其内容到变量txt_data,获取txt_data......
  • Data Visualisation for Managers (INFS6023)
    Data Visualisation for Managers(INFS6023)AssignmentCaseHydro EU:Visualizing Renewable Energy ProductionAcross EuropeBackgroundHydro EU, headquartered in Milan, Italy,stands as Europe’s leading producer of clean and renewableene......
  • 【专题】2024年中国AI人工智能基础数据服务研究报告合集PDF分享(附原数据表)
    原文链接:https://tecdat.cn/?p=37516随着人工智能技术的迅猛发展,AI基础数据服务行业迎来了前所未有的发展机遇。报告合集显示,2023年中国AI基础数据服务市场规模达到45亿元,且未来五年复合增长率有望达到30.4%。多模态大模型、长文本处理能力提升以及大模型小型化技术成为A......
  • 【办公类-54-02】20240827营养员《每周人数统计表》(双休国定假涂成灰色)
    背景需求:学校食堂的营养员发消息,让我再做一份“总园的每周人数统计”这是我去年2023年9月份做的,用word制作一页模版,营养员批量打印N张,用了2个学期。用途就是每个班级来园人数写在空格里,便于营养员统计当天要陪多少菜,每个班级根据人数,称重相应量的饭菜汤。但是时间久远,......