基于PyTorch的深度学习入门教程_nlp_advanced_tutorial

本文介绍了PyTorch作为动态神经网络工具包的优势,对比静态工具包如Theano和TensorFlow,强调其在处理依赖输入实例的计算图时的灵活性。接着详细探讨了Bi-LSTM条件随机场在命名实体识别中的应用,并对CRF模型进行了深入讲解。最后,文章提供了一个未优化的Bi-LSTM CRF实现,包括正向算法和维特比解码,强调了自动梯度计算的便利性。
摘要由CSDN通过智能技术生成

提高版:做动态决策和Bi-LSTM CRF
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

动态和静态深度学习工具包
--------------------------------------------

Pytorch是一个动态神经网络工具包。动态工具包的另一个例子是' Dynet <https://github.com/clab/dynet> ' (我之所以提到这一点,是因为使用Pytorch和Dynet是类似的。如果您在Dynet中看到一个示例,它可能会帮助您在Pytorch中实现它)。相反的是“静态”工具包,包括Theano、Keras、TensorFlow等。
核心差异如下:

*在静态工具包中,一旦定义一个计算图,编译它,然后将实例流到它。
*在动态工具包中,为每个实例定义一个计算图。它从不编译,而是动态执行

没有丰富的经验,很难理解其中的差别。一个例子是假设我们想要构建一个深层的成分解析器。假设我们的模型大致包括以下步骤:

*我们建立自底向上的树
*标记根节点(句子中的单词)
*然后,使用神经网络和单词的嵌入来找到组成成分的组合。每当您形成一个新的组件时,使用某种技术来获得该组件的嵌入。在这种情况下,我们的网络架构将完全依赖于输入语句。在“the green cat scratch the wall”这句话中,在模型的某个点上,我们想要组合跨度(i,j,r) = (1, 3, \text{NP})(也就是说,一个NP成分跨越单词1到单词3,在本例中是“the green cat”)。

然而,另一个句子可能是“the big fat cat scratch the wall”。在这句话中,我们想要在某个时刻形成成分:(2, 4, NP)我们想要形成的成分将取决于实例。如果我们像在静态工具包中那样只编译一次计算图,那么编写这个逻辑将异常困难或不可能。然而,在动态工具包中,并不只有一个预定义的计算图。每个实例都可以有一个新的计算图,所以这个问题就没有了。

动态工具包还具有易于调试和代码更接近宿主语言的优点(我的意思是Pytorch和Dynet看起来更像实际的Python代码,而不是Keras或Theano)。

Bi-LSTM 条件随机场的讨论
-------------------------------------------

在本节中,我们将看到一个用于命名实体识别的Bi-LSTM条件随机场的完整而复杂的示例。上面的LSTM标记器对于词性标记来说已经足够了,但是像CRF这样的序列模型对于NER上的强大性能是非常必要的。
假设您熟悉CRF。虽然这个名字听起来很吓人,在LSTM提供了这些特性后,模型都是CRF。不过,这是一个高级模型,比本教程中任何较早的模型都要复杂得多。如果你想跳过,没关系。看看你是否准备好了,看看你是否可以:

-在第i步为标记k写出viterbi变量的递归式。
-修改上面的递归式来计算正向变量。
-再次修改上面的递归式,以计算log-space中的正向变量(提示:log-sum-exp)

如果您能够做到这三件事,您应该能够理解下面的代码。还记得CRF计算条件概率吗?
y是标记序列,x是单词的输入序列。
然后我们计算

P(y|x) = \frac{\exp{(\text{Score}(x, y)})}{\sum_{y'} \exp{(\text{Score}(x, y')})}

分数是通过定义一些对数势来确定的
\log \psi_i(x,y)

\text{Score}(x,y) = \sum_i \log \psi_i(x,y)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值