ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

实习Learning记录(七)——《Large-Scale Hierarchical Text Classification with Recursively Regularized Deep Gra

2021-04-20 11:34:00  阅读:358  来源: 互联网

标签:kernel Scale Classification 卷积 Text 子图 k1 标签 节点


Large-Scale Hierarchical Text Classification with Recursively Regularized Deep Graph-CNN

Input: Document

Graph Generation

作用

  • 将文本文档处理为图

具体做法

  • 依据单词共现将文档转换为图,单词共现的计算依靠滑动窗口,这里滑动窗口大小为3。
  • 文本的预处理:首先去除RCV1-v2数据提供的停止词,如“the”、“a”等。对于单词“fitting”,我们首先执行词干提取以获得“fit”,然后根据fit构建窗口中每个单词的边。

Output

  • Graph of word

Graph Preprocessing

作用

  • 由于想要对单词共现图上的子图应用卷积掩码。所以为了实现对子图的卷积,需要对所有潜在的子图进行选择和归一化,使其可以进行接下来的卷积。

具体做法

  • Step1、Sub-graph Generation

    • a、node sequence selection

      • 根据节点的度(一个节点的邻域数)对图中的所有节点进行排序。
      • 如果度数相同,则根据节点在文档中的出现情况对它们进行排序。如果进一步相同,使用节点与邻居的共生次数来排序。
      • 在这种情况下,可以对图中的所有节点进行排序,并选择N个认为可能影响主题分类的最重要节点。
    • b、neighborhood assembly
      at least NA=3 node

      • 在获得节点后,使用简单的宽度优先搜索算法对每个选定节点展开子图。
      • 设置了最小子图大小的个数,即g。如果在当前深度,子图小于大小g,就再展开一层,看看大小是否满足。
      • 在这一步之后,将得到N个子图,每个子图至少包含g个节点(如果存在的话)。
  • Step2、Sub-graph Normalization

  • Step3、Graphs of Embeddings

    • 为了合并尽可能多的语义信息,而不是将图中的每个节点(文档中的一个单词)表示为ID,尝试使用单词嵌入作为输入。
    • 在本文的所有实验中,使用的是由较大的语料库维基百科训练出来的word2vec,并使用CBOW模型,其中窗口大小设置为5,word_embedding设置为50。word2vec的其他参数设置为默认值。
    • 通过这种方式,有一个嵌入图作为输入。然后,下面介绍的卷积将在嵌入的子图上进行运算

Output

  • Sub-graph Embeddings

Deep CNN

作用

  • 获得更高层次的语义

具体做法

  • The first convolutional layer

    • input

      • 第一卷积层以大小为N × g × D的特征空间作为输入,其中N为被选中并归一化的子图个数,g为接受域的大小(子图的大小),D为词嵌入维数。
    • 方法

      • convolve kernel

        • k1 kernel 大小为 g × D 。
        • 然后,对于所有N个输入子图,使用k1核以同样的方式进行卷积,以生成一个N × k1 矩阵。
      • max pooling

        • 使用一个最大池化层来生成一个 N/2 × k1 矩阵
        • 这意味着我们选择了可以更好地表示主题的一半子图进行进一步的处理。
  • The second convolutional layer

    • input

      • 第一层卷积的输出
    • 方法

      • convolve kernel

        • k2 kernel 大小为 5 × 1
        • 到目前为止,已经成功地对不同维度的词嵌入、每个子图中不同的词以及文档中不同的子图进行了卷积,获得了一个k1 ×k2矩阵。
      • max pooling

        • 使用一个最大池化层来生成一个 k1/2 × k2 矩阵
        • 为了获得更高层次的语义
  • The third convolutional layer

    • input

      • 第二层卷积的输出
    • 方法

      • convolve kernel

        • k3 kernel 大小为 1 × 5
        • 获得一个 S × k3 矩阵,这可以看作是原始的k1不同的 g×D 核应用于N×g×D输入张量的复合。
      • max pooling

        • 使用一个最大池化层来生成一个 S/2 × k3 矩阵

output

  • 第三层卷积层的输出一个S/2 × k3矩阵作为全连接层的输入。
  • tips:在整个卷积层中,使用ReLU作为激活函数来加快训练过程,避免过拟合。

Fully Connected and Sigmoid

作用

  • 进行分类,同时处理分类中出现的非线性问题

具体做法

  • Full Connection Layers

    • 三个完全连接的层。这些层主要用于处理分类的非线性问题。其中这三个层的维度分别为F1 = 2048, F2 = 1024, F3 = 1024(或512)。
    • 这里使用dropout来避免过拟合,dropout率设置为0.5。根据经验,dropout算法的收敛迭代次数大约增加了一倍,但提高了网络的鲁棒性,提高了预测精度。
  • Sigmoid Layer

    • 最后一层进一步连接到一组K Sigmoid函数,它们对应于层次结构中的K个标签。

Loss

普通loss

  • 交叉熵:

    • 其中M为文档集合,lk(dm)为二进制标签,表示文档dm是否属于标签k, Pk(dm)为标签k的神经网络预测概率。

改进loss

  • 引入递归正则化,目的是为了引入层级结构下标签的依赖关系。

    • 解决当叶节点的训练实例较少时的问题,通过正则化可以由其父节点进行决策。
    • 将wi表示为层次结构中标签li的最终全连通层的参数,表示W = {wli: li∈L}。l(j) i是指李的一个子节点。

Output: K labels

Recursive Hierarchical Segmentation

为了处理大规模标签层次结构,我们使用递归层次结构细分来解决和解决原始问题。这样,我们可以分别对每个子问题进行训练,并显著降低每个子问题的学习复杂性。图4显示了递归层次分割的一个示例。假设我们要对最多包含五个叶子的子树进行分割。然后,我们按照以下步骤执行从根到叶节点的深度优先遍历和预遍历遍历。遍历节点A时,子叶节点的数量为5,因此子树

  1. 首先可以细分。然后,子树(i)作为一个逻辑标签合并为一个叶子。当我们回溯到节点B时,子叶子数也为5。
  2. 因此它被分为子树。并合并到一个逻辑标签中,成为叶子。根据深度优先和顺序遍历的规律,生成子图。
  3. 也将被划分,并合并为一个逻辑标签作为叶子。当子叶节点的数量小于阈值时,它将继续遍历直到不再有节点。因此,子图iv被划分并合并为一个逻辑标签。 F的子叶节点为4,因此我们将节点E和F组合在一起,以满足拥有五个叶节点的要求。尽管将层次结构划分为用于并行和分布式深度CNN模型的子图,但是主程序会学习对顶级节点(例如,图4中的B,E和F)进行分类,并在测试时递归调用其他深度CNN模型。

标签:kernel,Scale,Classification,卷积,Text,子图,k1,标签,节点
来源: https://www.cnblogs.com/lzyrookie/p/14680224.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有