【每周一文】Supervised Sequence Labelling with Recurrent Neural Networks

本文介绍了NLP中的序列化标注问题,探讨了深度学习模型如FNN、RNN、Bi-RNN和LSTM在处理序列数据时的作用。重点讲解了RNN的演化,包括LSTM如何通过门控机制解决长期依赖问题。还提到了其他模型如CTC、多维RNN、层次RNN和注意力模型,并强调了它们在不同NLP任务中的适用性。

概述

序列化标注是NLP领域非常常见的问题,很多问题都可以归结为序列化标注问题,例如分类可以看做多对一的标注;词性标注属于一对一的标注;机器翻译属于多对多的标注。
深度学习在NLP上取得不错的效果,常用的模型有前向神经网络(FNN)、卷积神经网络(CNN)、循环神经网络(RNN、BIRNN)、LSTM、关注度模型(AM)等,对于特定任务还有相关变形
本文主要科普下各个模型的结构,方便在后续NLP任务中应用。

RNN技术演化

常见激活函数

在多层神经网络中,一般先进行线性变换,然后进行非线性变换。如果多层神经网络只进行线性变换可以证明和一层网络一致。常见的非线性变换函数,也叫激活函数,如下:
这里写图片描述

常用的以sigmoid和tanh为主,他们都是将实数区间转换为固定区间(0,1)或者(-1,1)

前向神经网络(FNN)

FNN也称之为多层神经网络,主要结构如下:
这里写图片描述

  1. FNN 整体分为三层,输入层、隐含层和输出层,可以理解为输入层为原始特征层常常表示为向量结构;隐含层为特征非线性变换层;输出层为特征变换后的结果。
  2. 输入层表示为:x
  3. 隐藏层表示为
    ah=i=1Iwihxibh=θh(ah)
  4. 输出层表示为
    ao=i=1HLwiobi
  5. 模型层:一般会根据不同的问题选择不同的模型或者损失函数,对于回归问题均方差;二分类问题采用sigmoid变换采用对数损失;多分类问题采用softmax;以二分类为例
    y=sigmoid(ao)l(zi,xi)=ziln(y)+(1zi)ln(1y)
  6. 模型计算,可以采用标准的BP算法进行求解,即采用链式规则求解,这里不再赘述。

循环神经网络(RNN)

简单的FNN不太适用于NLP,主要原因是没有考虑上下文特征,如果仅仅考虑前一个词特征,可以考虑使用RNN,结构如下:
这里写图片描述
1. 该图看上去比较复杂,可以简单的理解为计算某个神经元时,除了考虑当前输入外,还要考虑上一时间点隐藏状态值,从公式看一目了然

ath=i=1Iwihxt
### 关于《Semi-Supervised Classification with Graph Convolutional Networks》的中文翻译 以下是《Semi-Supervised Classification with Graph Convolutional Networks》文章的核心内容及其翻译: #### 图卷积网络简介 该研究提出了一种基于图结构数据的半监督分类方法,利用图卷积神经网络(Graph Convolutional Network, GCN)来处理带有图结构的数据集。这种方法通过谱图理论中的局部一阶近似技术,能够有效地对图中的节点特征以及其邻域关系进行编码[^1]。 #### 半监督学习背景 在许多实际场景中,获取标签的成本较高,因此仅有一部分数据被标注,而大部分数据未被标记。这种情况下,半监督学习成为一种重要的解决方案。本文提出的模型能够在少量标注样本的基础上,充分利用大量无标签数据的信息来进行预测和分类任务[^2]。 #### 方法核心 作者引入了一个简单的两层图卷积网络架构,其中每一层都由一个线性变换矩阵乘法操作组成,并结合激活函数以增加非线性特性。具体来说,输入为节点特征向量 X 和描述节点间连接关系的邻接矩阵 A,在经过多轮传播更新之后得到最终表示 H^(L),再通过 softmax 函数转化为概率分布形式完成分类工作[^3]。 #### 实验验证 为了证明所提方案的有效性和优越性能,实验选取了多个标准基准测试集合进行了对比分析。结果显示相比于其他传统算法或者复杂深度学习框架而言,本方法不仅计算效率更高而且取得了更好的效果表现。 --- ```python import numpy as np from tensorflow.keras.layers import Dense from tensorflow.keras.models import Model def gcn_layer(A_hat, input_dim, output_dim): """ 定义单层GCN 参数: A_hat (numpy.ndarray): 预处理后的邻接矩阵 input_dim (int): 输入维度大小 output_dim (int): 输出维度大小 返回: function: GCN 层定义 """ W = np.random.randn(input_dim, output_dim) * 0.01 # 初始化权重参数 b = np.zeros((output_dim,)) def layer(X): return np.dot(np.dot(A_hat, X), W) + b return layer # 构建简单模型实例化过程省略... ``` 上述代码片段展示了如何构建基本版本的一层GCN实现方式之一。 --- #### 总结 通过对图结构特性的深入挖掘,《Semi-Supervised Classification with Graph Convolutional Networks》成功设计出了适用于大规模稀疏图上的高效半监督分类器——即著名的GCNs家族成员之一。它凭借简洁优雅的设计思路赢得了广泛认可并推动了后续一系列改进型变体的发展方向。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值