当前位置: 首页 > news >正文

北京pk10做号网站推广公司运营模式

北京pk10做号网站,推广公司运营模式,网站怎么添加域名,企业用什么做网站NLP251 系列主要记录从NLP基础网络结构到知识图谱的学习 1.原理及网络结构 1.1RNN 在Yoshua Bengio论文中( http://proceedings.mlr.press/v28/pascanu13.pdf )证明了梯度求导的一部分环节是一个指数模型…

NLP251 系列主要记录从NLP基础网络结构到知识图谱的学习

1.原理及网络结构

1.1RNN 

在Yoshua Bengio论文中( http://proceedings.mlr.press/v28/pascanu13.pdf )证明了梯度求导的一部分环节是一个指数模型,当n<1时,就会出现“梯度消失"问题,而当η> 1时,“梯度爆炸”也就产生了。

1.2 双向-RNN

两个方向RNN的区别在于输入数据的不同,反向RNN数据是对正向RNN数据的反转

1.3深度双向-RNN

 

1.4LSTM

LSTM(长短期记忆网络)相较于RNN(循环神经网络)的主要优势如下:

1. 解决长期依赖问题

  • RNN在处理长序列数据时,容易出现梯度消失或梯度爆炸的问题,导致难以捕捉到序列中相隔较远的依赖关系。

  • LSTM通过引入“记忆单元”(Cell State)和门控机制(遗忘门、输入门、输出门),能够有效地学习和保持长期依赖关系。遗忘门可以有选择性地丢弃不再重要的信息,输入门可以添加新的重要信息,输出门则控制信息的输出,从而确保信息在长序列中能够稳定传递。

2. 缓解梯度消失问题

  • RNN在反向传播时,梯度可能会随着序列长度增加而迅速衰减或增大,导致训练困难。

  • LSTM通过门控机制,使得梯度可以直接通过记忆单元流动,减少了梯度在传播过程中的衰减,从而缓解了梯度消失问题。

LSTM 的关键在于其所特有的“细胞状态”,这一状态犹如一条贯穿始终的传送带。它在整个链条上顺畅运行 ,只有一些少量的线性交互。信息在 上面流传保持不变很容易。

LSTM怎么控制“细胞状态”? 

LSTM(长短期记忆网络)借助所谓的“门”结构,能够有选择地去除或增加“细胞状态”中存储的信息。这一过程包含一个sigmoid神经网络层以及一个逐元素的乘法操作。sigmoid层生成一个介于0到1之间的概率值,决定每个成分可以通过的量,其中0代表“完全阻止”,而1则表示“完全允许”。在LSTM中,存在三个主要的“门”结构,共同调控“细胞状态”的更新机制。

第一个“门”——“忘记门”或“遗忘门”, 决定从过去的“细胞状态”中 丢弃什么信息;比如在语言模型中,细胞状态可能包含了性别信息(“他” 或者“她”),当我们看到新的代名词的时候,可以考虑忘记旧的数据。
第二个“门”,即“信息 增加门”,负责决定哪些新信息可以添加到“细胞状态”中。 Sigmoid层决定什么值需要更新; Tanh层创建一个新的候选向量Ct; 主要是为了状态更新做准备

 

经过第一个和第二个“门”后,可以确定传递信息的删除和增加,进而执行“细胞状态”的更新操作。具体来说,首先将Ct-1更新为Ct,接着把旧状态与ft相乘,从而剔除那些确凿无误无需保留的信息。随后,加入新的候选值it *Ct,最终获得更新后的“细胞状态”。

 

第三个“门”即“输出门”,它基于“细胞状态”生成输出。首先,通过sigmoid层来决定细胞状态的哪一部分会被用于输出。然后,利用tanh函数处理细胞状态,得到一个介于-1到1之间的数值。最后,将这个数值与sigmoid门的输出相乘,从而确定最终输出的内容。

 

LSTM变种

 变种1 增加“peephole connections”层 ,让门层也接受细胞状态的输入

变种2 通过耦合忘记门和更新输入门(第一个和第二个门);也就是不再单独的考虑忘记什么、 增加什么信息,而是一起进行考虑

 

1.5GRU 

Gated Recurrent Unit (GRU) 是在2014年被提出的,它将LSTM中的忘记门和输出门合并为一个单一的更新门,同时还将数据单元状态和隐藏状态(即细胞状态和输出状态)进行了合并。这种结构相较于LSTM更为简单。

总结:RNN与GRU细胞状态信息与输出信息相同,而GRU细胞状态信息可能与输出信息不同 。

 2.API接口实现

2.1RNN API调用讲解

RNN返回值为两部分,第一部分是蓝框所示所有时刻 最后一个隐藏层的输出特征向量;

第二分是红色圈所示最后时刻 所有一个隐藏层的输出特征向量;

我们可以通过rnn.named_parameters()来查看详细的中间过程状态shape

rnn = nn.RNN(4, 8, num_layers=2, batch_first=True, bidirectional=True)
for name, param in rnn.named_parameters():print(name, param.shape)

  

RNN无法保持长时依赖(代码验证):

 2.2 LSTM API调用讲解 

 

 从网络结构图和代码中不难发现LSTM中ht与output输出相同 

 中间过程中的32从何而来?

weight_ih_l0 torch.Size([32, 4])
weight_hh_l0 torch.Size([32, 8])
bias_ih_l0 torch.Size([32])
bias_hh_l0 torch.Size([32])

附LSTM代码:

lstm = nn.LSTM(input_size=4,  # 每个样本每个时刻输入的向量维度大小hidden_size=16,  # 每个样本每个时刻输出的向量维度大小num_layers=1,  # RNN的层数,默认为1bias=True,  # 内部的线性转换是否添加bias,True表示添加,默认为Truebatch_first=True,  # 输入&输出数据的第一维是不是批次样本,True表示是,也就是输出的格式为:[N,T,E]; 默认为False,表示shape格式为[T,N,E]dropout=0,  # 针对输出的特征向量中,部分值重新为0的概率/可能性bidirectional=False,  # 是否构建双向的RNN,True表示构建,False表示不构建反向RNN;默认为Falseproj_size=0  # 是否针对每个时刻输出的hi进行一个线性转换,0表示不进行转换;>0的值表示会将hi映射(全连接)为proj_size大小的向量
)x = torch.randn(2, 3, 4)  # 2个样本,每个样本3个token,每个token对应的向量维度大小为4
# batch_first = True
# output: 所有样本、所有时刻对应的输出特征向量值,shape为: [N,T,?]
# ? = hidden_size * (2 if bidirectional else 1) if proj_size <=0 else proj_size
# ct: 最后一个时刻的状态信息/细胞信息, shape为: [1 * num_layers * (2 if bidirectional else 1), N, hidden_size]
# ht: 最后一个时刻的状态信息/细胞信息, shape为: [1 * num_layers * (2 if bidirectional else 1), N, hidden_size]
output, (ht, ct) = lstm(x)
print(type(output), output.shape)
print(type(ht), ht.shape)
print(type(ct), ct.shape)print(output[:, -1, :])
print(ht)
print(ct)rnn = nn.LSTM(4, 8, batch_first=True, bidirectional=False, num_layers=1)
for name, param in rnn.named_parameters():print(name, param.shape)

2.3 GRU API调用讲解 

lstm = nn.GRU(input_size=4,  # 每个样本每个时刻输入的向量维度大小hidden_size=16,  # 每个样本每个时刻输出的向量维度大小num_layers=1,  # RNN的层数,默认为1bias=True,  # 内部的线性转换是否添加bias,True表示添加,默认为Truebatch_first=True,  # 输入&输出数据的第一维是不是批次样本,True表示是,也就是输出的格式为:[N,T,E]; 默认为False,表示shape格式为[T,N,E]dropout=0,  # 针对输出的特征向量中,部分值重新为0的概率/可能性bidirectional=False  # 是否构建双向的RNN,True表示构建,False表示不构建反向RNN;默认为False
)# 2个样本,每个样本3个token,每个token对应的向量维度大小为4
x = torch.randn(2, 3, 4)
# batch_first = True
# output: 所有样本、所有时刻对应的输出特征向量值,shape为: [N,T,?]
# **** ? = hidden_size * (2 if bidirectional else 1)
# : 最后一个时刻的状态信息/细胞信息, shape为: [1 * num_layers * (2 if bidirectional else 1), N, hidden_size]
# ct/ht: 最后一个时刻的状态信息/细胞信息, shape为: [1 * num_layers * (2 if bidirectional else 1), N, hidden_size]
output, ct = lstm(x)
print(type(output), output.shape)
print(type(ct), ct.shape)rnn = nn.GRU(4, 8, batch_first=True, bidirectional=False, num_layers=1)
for name, param in rnn.named_parameters():print(name, param.shape)

http://www.hkea.cn/news/660994/

相关文章:

  • 深圳有什么网站长沙百度seo
  • 台州企业网站模板建站怎么在百度上做公司网页
  • 烟台网站建设联系企汇互联专业网站维护收费标准
  • 网络客户服务平台搜索优化推广公司
  • 建设网站技术方案线上教育培训机构十大排名
  • 沈阳人流seo优化师就业前景
  • 开发区网站制作公司seo关键词有话要多少钱
  • 网站被篡改处理app拉新平台
  • 在线房屋设计网站seo推广平台服务
  • 电子政务门户网站建设代码短链接生成网址
  • 崔各庄地区网站建设百度非企渠道开户
  • 怎么用自己的电脑做网站服务器产品推广平台排行榜
  • 中国做的比较好的电商网站有哪些哈市今日头条最新
  • 微信怎么做网站推广百度网站优化培训
  • 网站开发支持多个币种电子技术培训机构
  • 移动网站设计与制作怎么找关键词
  • 国内移动端网站做的最好的厦门人才网597人才网
  • 建网站收费吗aso关键词覆盖优化
  • 西安的网站设计与制作首页微信视频号怎么推广引流
  • 顺义公司建站多少钱pc端百度
  • wordpress收费资源下载关键词优化的策略
  • 广州做网站建设的公司网站公司
  • 做网络平台的网站有哪些广州网站维护
  • 网页 代码怎么做网站东莞市民最新疫情
  • 电子商务网站设计中影响客户体验的元素有搜索引擎有哪些种类
  • 网站建设难点优化关键词技巧
  • 免费行情网站链接百度知道合伙人官网
  • 餐饮公司网站建设的特点大数据智能营销
  • 济南快速排名刷关键词排名seo软件
  • 系统做网站的地方百度推广登录后台登录入口