AI大模型-简单的神经网络
对于二分类问题,假设我们只考虑正类(标签为1)和负类(标签为0)在多分类问题中,交叉熵损失函数可以扩展为−∑𝑖=1𝐾𝑦𝑖⋅log(𝑝𝑖)−∑i=1Kyi⋅log(pi),其中𝐾K是类别的总数,( y_i )是样本属于第𝑖i个类别的真实概率(通常用one-hot编码表示),而𝑝𝑖pi是模型预测该样本属于第( i )个类别的概率。Softmax函数的一个重要性质是其输出的总和等于

一、softmax的基本概念
我们之前学过sigmoid、relu、tanh等等激活函数,今天我们来看一下softmax。
先简单回顾一些其他激活函数:
- Sigmoid激活函数:Sigmoid函数(也称为Logistic函数)是一种常见的激活函数,它将输入映射到0到1之间。它常用于二分类问题中,特别是在输出层以概率形式表示结果时。Sigmoid函数的优点是输出值限定在0到1之间,相当于对每个神经元的输出进行了归一化处理。
- Tanh激活函数:Tanh函数(双曲正切函数)将输入映射到-1到1之间。与Sigmoid函数相比,Tanh函数的中心点在零值附近,这意味着它的输出是以0为中心的。这种特性可以在某些情况下提供更好的性能。
- ReLU激活函数:ReLU(Rectified Linear Unit)函数是当前非常流行的一个激活函数,其表达式为f(x)=max(0, x)。ReLU函数的优点是计算简单,能够在正向传播过程中加速计算。此外,ReLU函数在正值区间内梯度为常数,有助于缓解梯度消失问题。但它的缺点是在负值区间内梯度为零,这可能导致某些神经元永远不会被激活,即“死亡ReLU”问题。
Softmax函数是一种在机器学习中广泛使用的函数,尤其是在处理多分类问题时。它的主要作用是将一组未归一化的分数转换成一个概率分布。Softmax函数的一个重要性质是其输出的总和等于1,这符合概率分布的定义。这意味着它可以将一组原始分数转换为概率空间,使得每个类别都有一个明确的概率值。
- 二分类问题选择sigmoid激活函数
- 多分类问题选择softmax激活函数
二、交叉熵损失函数
交叉熵损失函数的公式可以分为二分类和多分类两种情况。对于二分类问题,假设我们只考虑正类(标签为1)和负类(标签为0)在多分类问题中,交叉熵损失函数可以扩展为−∑𝑖=1𝐾𝑦𝑖⋅log(𝑝𝑖)−∑i=1Kyi⋅log(pi),其中𝐾K是类别的总数,( y_i )是样本属于第𝑖i个类别的真实概率(通常用one-hot编码表示),而𝑝𝑖pi是模型预测该样本属于第( i )个类别的概率。
代码语言:javascript
复制
import torch
from torch import nn
# 确定随机数种子
torch.manual_seed(7)
# 自定义数据集
X = torch.rand((7, 2, 2))
target = torch.randint(0, 2, (7,))
定义网络结构
- 一层全连接层 + Softmax层
- x1𝑥1,x2𝑥2,x3𝑥3,x4𝑥4为 X
- o1𝑜1,o2𝑜2,o3𝑜3为 target
代码语言:javascript
复制
class LinearNet(nn.Module):
def __init__(self):
super(LinearNet, self).__init__()
# 定义一层全连接层
self.dense = nn.Linear(4, 3)
# 定义Softmax
self.softmax = nn.Softmax(dim=1)
def forward(self, x):
y = self.dense(x.view((-1, 4)))
y = self.softmax(y)
return y
net = LinearNet()
- nn.Softmax(dim=1)用于计算输入张量在指定维度上的softmax激活。
dim=1表示沿着第二个维度(即列)进行softmax操作。
定义损失函数和优化函数
- torch.nn.CrossEntropyLoss(weight=None, size_average=None, ignore_index=-100, reduce=None, reduction=‘mean’)
- 衡量模型输出与真实标签的差异,在分类时相当有用。
- 结合了nn.LogSoftmax()和nn.NLLLoss()两个函数,进行交叉熵计算。
代码语言:javascript
复制
loss = nn.CrossEntropyLoss() # 交叉熵损失函数
optimizer = torch.optim.SGD(net.parameters(), lr=0.1) # 随机梯度下降法
训练模型
代码语言:javascript
复制
for epoch in range(70):
train_l = 0.0
y_hat = net(X)
l = loss(y_hat, target).sum()
# 梯度清零
optimizer.zero_grad()
# 自动求导梯度
l.backward()
# 利用优化函数调整所有权重参数
optimizer.step()
train_l += l
print('epoch %d, loss %.4f' % (epoch + 1, train_l))
三、自动微分模块
torch.autograd.backward(tensors, grad_tensors=None, retain_graph=None, create_graph=False) :自动求取梯度
- grad_tensors:多梯度权重
- create_graph:创建导数计算图,用于高阶求导
- retain_graph:保存计算图
- tensors:用于求导的张量,如 loss
代码语言:javascript
复制
w = torch.tensor([1.], requires_grad=True)
x = torch.tensor([2.], requires_grad=True)
a = torch.add(w, x)
b = torch.add(w, 1)
y = torch.mul(a, b)
y.backward(retain_graph=True)
注意点:
- 梯度不自动清零
- 依赖于叶子节点的节点,requires_grad默认为True
- 叶子节点不可执行in-place
神经网络全连接层: 每个神经元都与前一层的所有神经元相连接。全连接层通常用于网络的最后几层,它将之前层(如卷积层和池化层)提取的特征进行整合,以映射到样本标记空间,即最终的分类或回归结果。
关于loss.backward()方法:
主要作用就是计算损失函数对模型参数的梯度,loss.backward()实现了反向传播算法,它通过链式法则计算每个模型参数相对于最终损失的梯度。这个过程从输出层开始,向后传递到输入层,逐层计算梯度。
过程:得到每个参数相对于损失函数的梯度,这些梯度信息会存储在对应张量的.grad属性中。loss.backward本身不负责更细权重,但它为权重更新提供了梯度值,方便配合optimizer.step()来更新参数。
前向传播过程中,数据从输入层流向输出层,并生成预测结果;而在反向传播过程中,误差(即预测值与真实值之间的差距,也就是损失函数的值)会从输出层向输入层传播,逐层计算出每个参数相对于损失函数的梯度。这些梯度指示了如何调整每一层中的权重和偏置,以最小化损失函数。
- 损失函数衡量了当前模型预测与真实情况之间的不一致程度,而梯度则提供了损失函数减少最快的方向。
建立一个简单的全连接层:
代码语言:javascript
复制
import torch
import torch.nn as nn
# 定义一个简单的全连接层模型
class SimpleFC(nn.Module):
def __init__(self, input_size, output_size):
super(SimpleFC, self).__init__()
self.fc = nn.Linear(input_size, output_size)
def forward(self, x):
return self.fc(x)
# 创建输入数据和目标输出
input_data = torch.tensor([[1.0, 2.0, 3.0]])
target_output = torch.tensor([[4.0, 5.0]])
# 实例化模型、损失函数和优化器
model = SimpleFC(input_size=3, output_size=2)
criterion = nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
# 前向传播
output = model(input_data)
# 计算损失
loss = criterion(output, target_output)
# 反向传播
loss.backward()
# 更新参数
optimizer.step()
当调用loss.backward()时,PyTorch会自动计算损失值关于模型参数的梯度,并将这些梯度存储在模型参数的.grad属性中。然后优化器(torch.optim.SGD)可以使用这些梯度来更新模型参数,以最小化损失函数。
那么,我们该如何学习大模型?
作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
一、大模型全套的学习路线
学习大型人工智能模型,如GPT-3、BERT或任何其他先进的神经网络模型,需要系统的方法和持续的努力。既然要系统的学习大模型,那么学习路线是必不可少的,下面的这份路线能帮助你快速梳理知识,形成自己的体系。
L1级别:AI大模型时代的华丽登场
L2级别:AI大模型API应用开发工程
L3级别:大模型应用架构进阶实践
L4级别:大模型微调与私有化部署
一般掌握到第四个级别,市场上大多数岗位都是可以胜任,但要还不是天花板,天花板级别要求更加严格,对于算法和实战是非常苛刻的。建议普通人掌握到L4级别即可。
以上的AI大模型学习路线,不知道为什么发出来就有点糊,高清版可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

三、大模型经典PDF籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

四、AI大模型商业化落地方案

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。
更多推荐
所有评论(0)