当前位置: 首页> 汽车> 车展 > 拉萨今日消息_しょうじょ少女视频_今日新闻简讯30条_湖南官网网站推广软件

拉萨今日消息_しょうじょ少女视频_今日新闻简讯30条_湖南官网网站推广软件

时间:2025/7/12 5:31:34来源:https://blog.csdn.net/s478527548/article/details/144141250 浏览次数: 0次
拉萨今日消息_しょうじょ少女视频_今日新闻简讯30条_湖南官网网站推广软件

这几天在看同学推荐的这本书,看到了大概百来页,感觉受益匪浅,很多老师上课没讲到的东西在书里都有详细介绍。

平时上课做机器学习的作业实验基本都是调用模型直接套,没有去关注具体的方法,这本书都帮我巩固了很多知识点,也让我学到了不少新东西。

目前刚看完多层感知机那一章,包括前一章的线性神经网络和前前一章的预备知识都有太多我想做笔记的知识点,现在补回来,之后每看一节都会记录笔记。

第二章:预备知识

2.5 自动微分

这里学到了一个从没见过的东西:反向传播计算梯度,原理是在计算函数的过程中跟踪计算是哪些数据通过哪些操作组合起来产生输出,然后自动微分系统就能反向传播计算梯度。

from mxnet import autograd, np, npxnpx.set_np()x = np.arange(4.0)
# x = [0., 1., 2., 3.]# 通过调用attach_grad来为一个张量的梯度分配内存
x.attach_grad()
# 在计算关于x的梯度后,将能够通过'grad'属性访问它,它的值被初始化为0
# 这里可以输出x.grad,这时为[0., 0., 0., 0.]y = 2 * np.dot(x, x) # 把y当成关于x的函数y.backward()
# 这里输出x.grad,为[ 0.,  4.,  8., 12.]

在后面经常会用上,可以很方便的计算函数在某个点的梯度,有助于优化模型

2.6 概率

这里重温了概率论,条件分布和联合分布计算相关内容。

第三章:线性神经网络

3.2 线性回归的从零开始实现

这里首次用到了前面的梯度函数,基本流程:

①循环轮次(epoch)

②开始随机遍历数据集,计算损失函数

③反向传播计算梯度

④更新参数

⑤计算训练集损失

⑥输出轮次和训练集损失

for epoch in range(num_epochs):for X, y in data_iter(batch_size, features, labels):l = loss(net(X, w, b), y)  # X和y的小批量损失# 计算l关于[w,b]的梯度l.backward()sgd([w, b], lr, batch_size)  # 使用参数的梯度更新参数train_l = loss(net(features, w, b), labels)print(f'epoch {epoch + 1}, loss {float(train_l.mean()):f}')

其中sgd是更新参数w和b:

def sgd(params, lr, batch_size):for param in params:param -= lr * param.grad / batch_sizeparam.grad.zero_()

data_iter是随机生成批量:

def data_iter(batch_size, features, labels):num_examples = len(features)indices = list(range(num_examples))random.shuffle(indices)for i in range(0, num_examples, batch_size):batch_indices = torch.tensor(indices[i: min(i + batch_size, num_examples)])yield features[batch_indices], labels[batch_indices]

net是计算wx+b,loss是计算损失函数。

3.3 线性回归的简洁实现

这里学习到了一个函数,nn.Sequential和nn.Linear,都是定义模型的函数,Sequential里面可以传入多个Linear(线性模型)和ReLU(激活函数),比如

model = nn.Sequential(nn.Linear(in_features=input_size, out_features=hidden_size),nn.ReLU(),nn.Linear(in_features=hidden_size, out_features=output_size)
)

这个实例中模型首先通过一个线性层,再通过一个激活函数,再通过一个线性层。

3.4 softmax回归

这里学到了使用softmax函数的分类模型,以及它的损失和损失函数的梯度怎么求,这里要注意区分计算预测正确的函数的梯度和预测错误的函数的梯度。

第四章:多层感知机

4.1 多层感知机

这里学习了三个激活函数,ReLU、sigmoid、tanh函数。在机器学习课上老师只讲sigmoid函数,结果书里说sigmoid早就落伍了,用的最多的是ReLU函数。

4.5 权重衰减

权重衰减的做法是将权重增加到损失函数中,因为要保证权重向量较小。

就是规定损失函数是原损失函数加上权重的L2正则化,这样使得权重不会过大。

4.6 暂退法

暂退法的做法是在训练时丢弃部分神经元的输出,这样可以避免模型太过依赖某一个神经元,所以在训练过程中我们随机扔掉一部分神经元输出,使模型不会过分依赖某一个神经元。

要注意这个操作只在训练数据中,预测数据不用。

4.7 前向传播、反向传播和计算图

在这一节学到了前向传播和反向传播的具体计算方法,利用前面学到的权重衰减。下面这个图就很直观。

体现了前向传播是怎么计算的。

而反向传播就像它的逆过程,从J开始反向传播到W(1)和W(2)。反向传播按相反的顺序计算和存储神经网络中的中间变量和参数的梯度。

4.8 数值稳定性和模型初始化

这里引入了梯度爆炸和梯度消失问题,在参数过大或过小时会引发这两种问题,

sigmoid激活函数现在不常用就是因为可能会引发梯度消失。

而梯度爆炸是由神经网络初始化不好导致的。

还有一个由初始化导致的问题是神经网络的对称性,如果两个权重都初始化同一个值,会使在后面的学习中俩神经元表现相同,无法学习到不同特征。小批量随机梯度下降不会打破这种特征,但暂退法正则化可以。

缓解以上问题的方法就是进行合适的参数初始化。

参数初始化时,假设输入的数方差为\gamma _{}^{2},权重方差为\alpha ^{2},均值都为0,那么隐藏层方差为输入数量乘以前面两个方差,理应使输入数量乘以\alpha ^{2}为1,反向推断应该使输出数量乘以\alpha ^{2}为1,结合可知\alpha ^{2}应该在\frac{2}{n_{in}+n_{out}}左右。

4.9 环境和分布偏移

这里介绍了三种分布偏移,协变量偏移标签偏移概念偏移

主要原因是当初训练是数据与现在或现实数据不太匹配,训练集和测试集不来自同一分布,导致模型不能通用。

如果要再对现实数据训练新的模型,又需要收集数据建立训练集,太麻烦了,为了使之前的模型还能用,这里提出了一些解决方法,主要针对协变量偏移和标签偏移(概念偏移目前没有找到好的解决方法,因为那个主要是人为因素引发的,是主观问题,不是模型问题)。

纠正协变量偏移:使用重要性加权。这种偏移可以假设P(y|x)不变。

协变量偏移主要是输入样本分布改变导致的,即源分布q(x)和目标分布p(x)有偏差。

可以使用恒等式纠正:

\int \int l(f(x),y)p(y|x)p(x) dxdy = \int \int l(f(x),y)q(y|x)q(x)\frac{p(x)}{q(x)} dxdy

即将q(y|x)q(x)(源分布)转化为p(y|x)p(x)(目标分布)。

只需计算以下源样本和目标样本的分布比例\frac{p(x)}{q(x)}对数据进行加权即可。

纠正标签偏移:和纠正协变量偏移类似。这种偏移可以假设P(x|y)不变。

标签偏移主要是输出样本分布改变导致的,即源分布q(y)和目标分布p(y)有偏差。

可以使用恒等式纠正:

\int \int l(f(x),y)p(x|y)p(y) dxdy = \int \int l(f(x),y)q(x|y)q(y)\frac{p(y)}{q(y)} dxdy

可以设一个混淆矩阵C,这是一个k×k矩阵,元素c_{ij}代表真实标签为j模型预测为i的样本数占比。

\mu (\hat{y})为模型输出。

估计测试集标签分布:

Cp(y)=\mu (\hat{y})

然后就可以解得p(y)代入式子中。

关于处理分布不断变化的知识,我们还可以考虑其他方面,比如在线学习,机器在预测的过程中通过预测的真实结果不断学习,更新模型。

4.10 实战Kaggle比赛:预测房价

这里学到了一个K折交叉验证,具体做法是将数据分为K折,每次预测选取K-1折作为训练集,剩下的1折作为测试集,重复K次。这样可以更好的利用全部数据。

关键字:拉萨今日消息_しょうじょ少女视频_今日新闻简讯30条_湖南官网网站推广软件

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: