您的位置:首页 > 游戏 > 手游 > 第十周:机器学习笔记

第十周:机器学习笔记

2024/9/24 19:22:30 来源:https://blog.csdn.net/Zcymatics/article/details/141305184  浏览:    关键词:第十周:机器学习笔记

第十周机器学习周报

  • 摘要
  • Abstract
  • 机器学习——self-attention(注意力机制)
    • 1. 为什么要用self-attention
    • 2. self-attention 工作原理
      • 2.1 求α的两种方式
      • 2.2 attention-score(关联程度)
  • Pytorch学习
    • 1. 损失函数代码实战
    • 1.1 L1loss(绝对值平均差)
    • 1.2 MSELoss(均方误差)
    • 1.3 CrossEntropyLoss(交叉熵损失)
  • 总结

摘要

这一周作者主要对注意力机制进行了学习,其中了解了引入注意力机制的原因、注意力机制的使用场景以及注意力机制的原理,此外在pytorch的学习中,作者对三种计算损失函数的方式,比如,绝对平均值误差、均方误差、交叉熵损失进行了代码实战学习。

Abstract

This week, the author mainly studied attention mechanisms, including the reasons for introducing attention mechanisms, the usage scenarios of attention mechanisms, and the principles of attention mechanisms. In addition, in PyTorch’s learning, the author conducted code practice learning on three ways to calculate loss functions, such as absolute mean error, mean square error, and cross entropy loss.

机器学习——self-attention(注意力机制)

1. 为什么要用self-attention

我们之前学习的案例的输入都是只有1个vector
但是世界那么复杂
总会有多个很长的vector或者每次input的vector的个数不是固定的时候
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. self-attention 工作原理

在这里插入图片描述
在这里插入图片描述

2.1 求α的两种方式

在这里插入图片描述

2.2 attention-score(关联程度)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Pytorch学习

1. 损失函数代码实战

前面的学习周报我们学习了损失函数,所以这周我们需要在Pytorch中学习它,顺便做一个复习。
在这里插入图片描述
损失函数就是用来衡量误差的,因为我们在训练的时候,有实际值和训练出来的值。我们要知道模型训练出来的结果的好坏,就需要用损失函数来进行衡量,从而不断优化我们的模型参数,使其效果更好。
例如,拿我们平时的做试卷的答题来说,output就是答题结果;而target为卷面分数。
因此LOSS告诉我们离满分还有70分的差距。
其功能一就是:告知我们输出结果与目标之间差距
在这里插入图片描述
经过损失函数我们知道了我们需要提升的地方(例如:加强解答题的训练),于是我们下一次解答题提高了10分。
其功能二就是:为模型的改进提供依据,其是通过反向传播完成的
在这里插入图片描述
常见的损失函数如下
其中大多数都在我们之前的周报内容中学习过,如下图所示:在这里插入图片描述

1.1 L1loss(绝对值平均差)

MAE,之前的周报有说过,就不详细说了
详情如下:
其中要注意reduction
为mean就是求所有的L(误差)平均值,为sum就所有的L(误差)求和
默认为mean
在这里插入图片描述
其中特别要注意这里的shape,target要与input一致
在这里插入图片描述

import torchfrom torch import nninputs = torch.tensor([1, 2, 3], dtype=torch.float32)
targets = torch.tensor([1, 2, 5], dtype=torch.float32)inputs = torch.reshape(inputs, (1, 1, 1, 3))
targets = torch.reshape(targets, (1, 1, 1, 3))loss = nn.L1Loss()
result = loss(inputs, targets)print(result)

在这里插入图片描述

1.2 MSELoss(均方误差)

就是求差再平方
reduction意义同上
在这里插入图片描述
代码如下:

import torchfrom torch import nninputs = torch.tensor([1, 2, 3], dtype=torch.float32)
targets = torch.tensor([1, 2, 5], dtype=torch.float32)inputs = torch.reshape(inputs, (1, 1, 1, 3))
targets = torch.reshape(targets, (1, 1, 1, 3))# 均方误差
loss2 = nn.MSELoss()
result2 = loss2(inputs, targets)print(result2)

在这里插入图片描述

1.3 CrossEntropyLoss(交叉熵损失)

这个比较复杂,但是之前的周报中也有讲过

常用于分类问题中,分类问题有C个类(如CIFAR-10有10个类别)
计算公式如下:
在这里插入图片描述
公式解释如下:
比如有3分类问题,dog、person、cat
在这里插入图片描述
log主要是为了增强分类效果
因为当为[0.8,0.9,0.7]的时候,不加入log就差距不大,分类效果就差
代码如下:

import torch
from torch import nn
# 交叉熵损失
x = torch.tensor([0.1, 0.2, 0.3])
y = torch.tensor([1])
x = torch.reshape(x, (1, 3))
loss_cross = nn.CrossEntropyLoss()result_cross = loss_cross(x, y)
print(result_cross)

在这里插入图片描述
在计算器中的结果一致,证明我们的理解没有偏差
log函数默认以自然对数10为底,而在matlab中log函数默认以自然对数e为底
在这里插入图片描述

总结

这一周因为开学,人在学校途中的原因,所以学习的内容相比之下少了很多。
作者主要对注意力机制进行了学习,其中了解了引入注意力机制的原因、注意力机制的使用场景以及注意力机制的原理,还学会了计算关联系数α的两种方法,分别是点积和additive,并学会了求attention-score(关联程度)与soft-max求出α‘,结合参数v,最后求和得到b
此外在pytorch的学习中,作者对三种计算损失函数的方式,比如,绝对平均值误差、均方误差、交叉熵损失进行了代码实战学习,对三种常用的loss function进行回顾,并代码实战。
希望开学后要加快学习的进度,继续学习注意力机制和李宏毅机器学习后面的视频以及pytorch中的反向传播的代码学习、以及优化器的代码实战。

版权声明:

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

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