多层感知机
多层感知机(multilayer perceptron,MLP
隐藏层(hidden layer 隐藏单元(hidden unit)== 输出层的单层神经网络等价
除输入层和输出层以外的其他各层叫做隐藏层 隐藏层不直接接受外界的信号,也不直接向外界发送信号
序列模型
序列数据
1.仅仅使用时间跨度内的的时间序列数据 自回归模型
2.保留一些对过去观测的总结,并且同时更新预测和总结 隐变量自回归模型
文本预处理
将文本作为字符串加载到内存中。
token 将字符串拆分为词元(如单词和字符)。 tokenize
停用词(stop words)
vocabulary 建立一个词表,将拆分的词元映射到数字索引。 语料(corpus)
将文本转换为数字索引序列,方便模型操作。数字索引列表
独热编码(one-hot encoding)
输入:
一个小批量序列--覆盖性(coverage)和随机性(randomness)
seq, batch_size=2, num_steps=5
batch_size 指定了每个小批量中子序列样本的数目
num_steps 是每个子序列中预定义的时间步数
读取长序列的主要方式是随机采样和顺序分区
语言模型(language model)
马尔可夫
三种模型中的词元频率:一元语法(unigram)、二元语法(bigram)和三元语法(trigram)
tokenize有三种粒度:word/subword/char
预测
单步预测one-step-ahead prediction
k步预测(k-step-ahead-prediction)
根据输入输出长度的不同
N to 1 入一个句子判断其情感倾向,输入一段文档并判断它的类别
N to M 这种结构又叫Encoder-Decoder模型,也可以称之为Seq2Seq模型。
循环神经网络
隐状态hidden-state 隐藏变量-hidden variable <T-1>序列信息
当前输入Xt Ht=f(Xt,H<t-1>)
隐藏层 是在从输入到输出的路径上(以观测角度来理解)的隐藏的层,
隐状态 则是在给定步骤所做的任何事情(以技术角度来定义)的输入, 并且这些状态只能通过先前时间步的数据来计算
基于循环计算的隐状态神经网络被命名为 循环神经网络(recurrent neural network)
循环层(recurrent layer)--对隐状态使用循环计算的神经网络称为循环神经网络(RNN)
稳定训练
引导信息从输出单元返回隐藏单元,这些被称为“Back Projections”,
CNN是 在空间上共享参数,RNN是在时间上(顺序上)共享参数
batch_size=2, num_steps=5
形状为(批量大小,隐藏单元数)
输出:
输出形状是(时间步数*批量大小,词表大小)
循环神经网络模型往往需要额外的方式来支持稳定训练。
梯度裁剪
模型评价
评价模型: 困惑度
rnn_layer = nn.RNN(len(vocab), num_hiddens)
UWb
模型应用
门控循环单元(gated recurrent units,GRU)和 长短期记忆网络(long short-term memory,LSTM)
门控循环单元
支持隐状态的门控。 这意味着模型有专门的机制来确定应该何时更新隐状态, 以及应该何时重置隐状态。
重置门(reset gate)和更新门(update gate)
两个门的输出是由使用sigmoid激活函数的两个全连接层给
W_xz, W_hz, b_z
W_xr, W_hr, b_r
W_xh, W_hh, b_h
重置门打开时,门控循环单元包含基本循环神经网络;更新门打开时,门控循环单元可以跳过子序列
长短期记忆网络引入了记忆元(memory cell),或简称为单元(cell)
计算输入门、遗忘门和输出门的值 候选记忆元 记忆元
W_xi, W_hi, b_i
W_xf, W_hf, b_f
W_xo, W_ho, b_o
W_xc, W_hc, b_c
W_hq = normal((num_hiddens, num_outputs))
b_q = torch.zeros(num_outputs, device=device)
双向循环神经网络
编码器-解码器结构
其输入和输出都是长度可变的序列。
为了处理这种类型的输入和输出, 我们可以设计一个包含两个主要组件的架构:
N-P-P-M
第一个组件是一个编码器(encoder): 它接受一个长度可变的序列作为输入, 并将其转换为具有固定形状的编码状态。
第二个组件是解码器(decoder): 它将固定形状的编码状态映射到长度可变的序列。 这被称为编码器-解码器(encoder-decoder)架构
RNN的超参数和参数
网络类型和网络结构
参数量计算 : input
hidden layer
output
FNN: (i×h + h) + (h×o + o)
RNN: i:输入大小
g:一个单元中的FFN数量(RNN结构中FFN数量为1,而GRU结构中FFN数量为3个,LSTM结构中FFN数量为4个)
h:隐藏单元的大小
每个FFN具有 (h+i)*h + h 个参数
输入特征:是(batch)* T_seq * feature_size 的张量(T_seq代表序列长度,注意不是batch_size)
基础输入特征表示是feature_size*1的单维向量 batch就是有多个句子
单词用多少个(feature len)特征表示
同一个隐含层不同时刻的参数W_ih和W_hh是共享的;隐藏层可以有num_layers个
CNN: 输入特征图的通道数 卷积的尺寸和个数 输出的通道数
卷积核(Kernel / Filter 步长(Stride 填充(Padding) 通道数(Channels)
其输入是向量或多维张量且是一次性输入到网络中的,并不考虑先后顺序
输入特征: 是(batch)*channel*width*height的张量
超参数:
N to M结构RNN模型(encoder-decoder、seq2seq)
RNN分类模型通常包含多个 隐藏层,每个隐藏层包含多个神经元
层数(num_layers):层数表示RNN中有多少个隐藏层 RNN的层数指的是堆叠的RNN单元的数量
隐藏尺寸表示隐藏层的神经元数量 hidden_size=50表示隐藏层中有50个神经元
张量来初始化隐状态,形状为(隐藏层数,批量大小,隐藏单元数
bidirectional:是否为双向 RNN
例如:
nn.LSTM(input_size, hidden_size, num_layers=1, bias=True, batch_first=False, dropout=0, bidirectional=False)
num_layers: LSTM 层的数目。默认值为 1。如果设置为大于 1,则 LSTM 层会堆叠起来,形成一个多层 LSTM 结构。
输入:
输入数据的形状应该是 (batch, sequence, features) 而不是 (sequence, batch, features)
隐藏单元数(通常称为 num_hiddens )是一个可以调整的参数,用于控制模型的复杂度和性能
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
2023-02-20 Paddlepaddle_飞桨_ppcls