热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

语义分析的一些方法(三)

转自: http:www.flickering.cnads201502%E8%AF%AD%E4%B9%89%E5%88%86%E6%9E%90%E7%9A%84%E4%B8%80%

转自: 

http://www.flickering.cn/ads/2015/02/%E8%AF%AD%E4%B9%89%E5%88%86%E6%9E%90%E7%9A%84%E4%B8%80%E4%BA%9B%E6%96%B9%E6%B3%95%E4%B8%89/

 


3 图片语义分析

3.1 图片分类

图片分类是一个最基本的图片语义分析方法。

基于深度学习的图片分类

传统的图片分类如下图所示,首先需要先手工提取图片特征,譬如SIFT, GIST,再经由VQ coding和Spatial pooling,最后送入传统的分类模型(例如SVM等)。

image_search1

图27. 图片检索示例图

图片分类上的最新进展

在ILSVRC 2012中,Alex Krizhevsky基于GPU实现了上述介绍的,这个有60million参数的模型(简称为AlexNet),赢得了第一名。这个工作是开创性的,它引领了接下来ILSVRC的风潮。2013年,Clarifai通过cnn模型可视化技术调整网络架构,赢得了ILSVRC。2014年,google也加入进来,它通过增加模型的层数(总共22层),让深度更深[48],并且利用multi-scale data training,取得第一名。baidu最近通过更加“粗暴”的模型[44],在GooLeNet的基础上,又提升了10%,top–5错误率降低至6%以下。具体结果如下图所示。

 

图28. ImageNet Classification Result

 

先简单分析一下“GoogLeNet”[48,51]所采用的方法:


  • 大大增加的网络的深度,并且去掉了最顶层的全连接层:因为全连接层(Fully Connected)几乎占据了CNN大概90%的参数,但是同时又可能带来过拟合(overfitting)的效果。

  • 模型比以前AlexNet的模型大大缩小,并且减轻了过拟合带来的副作用。Alex模型参数是60M,GoogLeNet只有7M。

  • 对于google的模型,目前已有开源的实现,有兴趣请点击Caffe+GoogLeNet。

再分析一下“Deep Image by baidu[44]”所采用的方法:


  • Hardware/Software Co-design。baidu基于GPU,利用36个服务节点开发了一个专为深度学习运算的supercompter(名叫Minwa,敏娲)。这台supercomputer具备TB级的host memory,超强的数据交换能力,使能训练一个巨大的深层神经网络成为可能。而要训练如此巨大的神经网络,除了硬件强大外,还需要高效的并行计算框架。通常而言,都要从data-parallelism和model-data parallelism两方面考虑。
    • data-parallelism:训练数据被分成N份。每轮迭代里,各个GPU基于各自的训练数据计算梯度,最后累加所有梯度数据并广播到所有GPU。

    • model-data parallelism:考虑到卷积层参数较少但消耗计算量,而全连接层参数相对比较多。所以卷积层参数以local copy的形式被每个GPU所持有,而全连接层的参数则被划分到各个CPU。每轮迭代里,卷积层计算可以由各个GPU独立完成,全连接层计算需要由所有GPU配合完成,具体方法请参考[46]。


  • Data augmentation。训练一个如此巨大的神经网络(100billion个参数),如果没有充分的训练数据,模型将很大可能陷入过拟合,所以需要采用众多data augmentation方法增加训练数据,例如:剪裁,不同大小,调亮度,饱和度,对比度,偏色等(color casting, vignetting, lens distortion, rotation, flipping, cropping)。举个例子,一个彩色图片,增减某个颜色通道的intensity值,就可以生成多张图片,但这些图片和原图的类目是一致的,相当于增加了训练数据。

  • Multi-scale training:训练不同输入图片尺度下(例如512*512,256*256)的多个模型,最后ensemble多个模型的输出结果。

3.2 Image2text,Image2sentence

上面讲述的图片分类对图片语义的理解比较粗粒度,那么我们会想,是否可以将图片直接转化为一堆词语或者一段文本来描述。转化到文本后,我们积累相对深的文本处理技术就都可以被利用起来。

Image2text

首先介绍一种朴素的基于卷积神经网络的image to text方法。


  • 首先它利用深度卷积神经网络和深度自动编码器提取图片的多层特征,并据此提取图片的visual word,建立倒排索引,产生一种有效而准确的图片搜索方法。

  • 再充分利用大量的互联网资源,预先对大量种子图片做语义分析,然后利用相似图片搜索,根据相似种子图片的语义推导出新图片的语义。

其中种子图片,就是可以覆盖所有待研究图片的行业,但较容易分析语义的图片集。这种方法产生了更加丰富而细粒度的语义表征结果。虽说简单,但效果仍然不错,方法的关键在于种子图片。利用比较好的种子图片(例如paipai数据),简单的方法也可以work得不错。下图是该方法的效果图。

图29. 图片语义tag标注示例图

上面的baseline方法,在训练数据优质且充分的情况下,可以取得很不错的图片tag提取效果,而且应用也非常广泛。但上面的方法非常依赖于训练数据,且不善于发现训练数据之外的世界。

另一个直观的想法,是否可以通过word embedding建立image与text的联系[26]。例如,可以先利用CNN训练一个图片分类器。每个类目label可以通过word2vec映射到一个embedding表示。对于一个新图片,先进行分类,然后对top-n类目label所对应的embedding按照权重(这里指这个类目所属的概率)相加,得到这个图片的embedding描述,然后再在word embedding空间里寻找与图片embedding最相关的words。

Image detection

接下来再介绍下image detection。下图是一个image detection的示例,相比于图片分类,提取到信息将更加丰富。

 

图30. 图片detection示例

 

目前最先进的detection方法应该是Region-based CNN(简称R-CNN)[75],是由Jeff Donahue和Ross Girshick提出的。R-CNN的具体想法是,将detection分为寻找object和识别object两个过程。在第一步寻找object,可以利用很多region detection算法,譬如selective search[76],CPMC,objectness等,利用很多底层特征,譬如图像中的色块,图像中的边界信息。第二步识别object,就可以利用“CNN+SVM”来做分类识别。

 

图31. Image detection系统框图

 


  • 给定一张图片,利用selective search方法[76]来产生2000个候选窗口。

  • 然后利用CNN进行对每一个候选窗口提取特征(取全连接层的倒数第一层),特征长度为4096。

  • 最后用SVM分类器对这些特征进行分类(每一个目标类别一个SVM分类器),SVM的分类器的参数个数为:4096*N,其中N为目标的类别个数,所以比较容易扩展目标类别数。

这里有R-CNN的实现,请点击rcnn code

Image2sentence

那能否通过深度学习方法,直接根据image产生sentence呢?我们先看一组实际效果,如下图所示(copy from 文献[43])。

 

图32. image2sentence示例图

 

关于这个方向,最近一年取得了比较大的突破,工业界(Baidu[77],Google[43],Microsoft[80,81]等)和学术界(Stanford[35],Borkeley[79],UML[19],Toronto[78]等)都发表了一系列论文。

简单归纳一下,对这个问题,主要有两种解决思路:


  • Pipeline方法。这个思路相对直观一点,先学习到image中visual object对应的word(如上一节image detection所述),再加上language model,就可以生成sentence。这种方法各个模块可以独立调试,相对来说,更灵活一点。如下图所示,这是microsoft的一个工作[81],它分为三步:(1)利用上一节提到的思路detect words;(2)基于language model(RNN or LSTM)产生句子;(3)利用相关性模型对句子打分排序。

    图33. “pipeline” image captioning



  • End-to-end方法,即通过一个模型直接将image转换到sentence。google基于CNN+RNN开发了一个Image Caption Generator[43]。这个工作主要受到了基于RNN的机器翻译[27][42]的启发。在机器翻译中,“encoder” RNN读取源语言的句子,将其变换到一个固定长度的向量表示,然后“decoder” RNN将向量表示作为隐层初始值,产生目标语言的句子。那么一个直观的想法是,能否复用上面的框架,考虑到CNN在图片特征提取方面的成功应用,将encoder RNN替换成CNN,先利用CNN将图片转换到一个向量表示,再利用RNN将其转换到sentence。可以通过图片分类提前训练好CNN模型,将CNN最后一个隐藏层作为encoder RNN的输入,从而产生句子描述。如下图所示。

    图34. “CNN+LSTM” Image Caption Generator

    Li-Feifei团队在文献[35]也提到一种image2sentence方法,如下图所示。与google的做法类似,图片的CNN特征作为RNN的输入。


    图35. “CNN+RNN”生成图片描述

    此方法有开源实现,有兴趣请参考:neuraltalk



3.3 训练深度神经网络的tricks

考虑到图片语义分析的方法大部分都是基于深度学习的,Hinton的学生Ilya Sutskever写了一篇深度学习的综述文章[47],其中提到了一些训练深度神经网络的tricks,整理如下:


  • 保证训练数据的质量

  • 使训练数据各维度数值的均值为0,方差为一个比较小的值

  • 训练时使用minbatch,但不要设得过大,在合理有效的情况下,越小越好。

  • 梯度归一化,将梯度值除于minbatch size。

  • 设置一个正常的learning rate,validation无提升后,则将原learning rate除于5继续

  • 模型参数随机初始化。如果是深层神经网络,不要设置过小的random weights。

  • 如果是在训练RNN or LSTM,对梯度设置一个限值,不能超过15 or 5。

  • 注意检查梯度计算的正确性

  • 如果是训练LSTM,initialize the biases of the forget gates of the LSTMs to large values

  • Data augmentation很实用。

  • Dropout在训练时很有效,不过记得测试时关掉Dropout。

  • Ensembling。训练多个神经网络,最后计算它们的预测值的平均值。

4 总结

4.1 语义分析方法在实际业务中的使用

前面讲述了很多语义分析方法,接下来我们看看如何利用这些方法帮忙我们的实际业务,这里举一个例子,用户广告的语义匹配。

在广点通系统中,用户与广告的关联是通过定向条件来匹配的,譬如某些广告定向到“北京+男性”,那么当“北京+男性”的用户来到时,所有符合定向的广告就将被检索出,再按照“ecpm*quality”排序,将得分最高的展示给用户。但是凭借一些人口属性,用户与广告之间的匹配并不精确,做不到“广告就是想用户所想”,所以用户和广告的语义分析就将派上用场了,可以从这样两方面来说明:


  • 特征提取。基于上面介绍的方法,提取用户和广告的语义特征。
    • 用户语义特征。可以从用户的搜索,购物,点击,阅读记录中发现用户兴趣。考虑到最终的用户描述都是文本,那么文本topic分析,文本分类,文本keyword提取,文本核心term提取都可以运用起来,分析出用户的语义属性,还可以利用矩阵分解和文本分类找到相似用户群。

    • 广告语义特征。在广点通里,广告可以从两个维度来描述,一方面是文本,包括广告title和landing page,另一方面是广告展示图片。利用文本和图片的语义分析方法,我们可以提取出广告的topic,类目,keyword,tag描述。


  • 语义匹配。提取到相应的语义特征之后,怎么用于改善匹配呢?
    • 用户-广告的语义检索。基于keyword、类目以及topic,对广告建立相应的倒排索引,直接用于广告检索。

    • 用户-广告的语义特征。分别提取用户和广告的语义特征,用于计算用户-广告的relevance,pctr,pcvr,达到精确排序。


4.2 Future

对于文本和图片的语义分析,可以看到:最近几年,在某些任务上,基于深度学习的方法逐渐超过了传统方法的效果。但目前为止,对于深度学习的发掘才刚刚开始,比较惊艳的神经网络方法,也只有有限几种,譬如CNN,RNN,RBM等。

上文只是介绍了我们在工作中实践过的几个小点,还有更多方法需要我们去挖掘:


  • Video。Learn about 3D structure from motion。如文献[19]所示,研究将视频也转换到自然语言。

  • Deep Learning + Structured Prediction,用于syntactic representation。

4.3 总结

上文主要从文本、图片这两方面讲述了语义分析的一些方法,并结合个人经验做了一点总结。

原本想写得更全面一些,但写的时候才发现上面所述的只是沧海一粟,后面还有更多语义分析的内容之后再更新。另外为避免看到大篇理论就头痛,文中尽可能不出现复杂的公式和理论推导。如果有兴趣,可以进一步阅读参考文献,获得更深的理解。谢谢。

5 参考文献


  1. Term-weighting approaches in automatic text retrieval,Gerard Salton et.

  2. New term weighting formulas for the vector space method in information retrieval

  3. A neural probabilistic language model 2003

  4. Deep Learning in NLP-词向量和语言模型

  5. Recurrent neural network based language models

  6. Statistical Language Models based on Neural Networks,mikolov博士论文

  7. Rnnlm library

  8. A survey of named entity recognition and classification

  9. Deep learning for Chinese word segmentation and POS tagging

  10. Max-margin tensor neural network for chinese word segmentation

  11. Learning distributed representations of concepts

  12. Care and Feeding of Topic Models: Problems, Diagnostics, and Improvements

  13. LightLda

  14. word2vec

  15. Efficient Estimation of Word Representations in Vector Space

  16. Deep Learning实战之word2vec

  17. word2vec中的数学原理详解 出处2

  18. 斯坦福课程-语言模型

  19. Translating Videos to Natural Language Using Deep Recurrent Neural Networks

  20. Distributed Representations of Sentences and Documents

  21. Convolutional Neural Networks卷积神经网络

  22. A New, Deep-Learning Take on Image Recognition

  23. Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

  24. A Deep Learning Tutorial: From Perceptrons to Deep Networks

  25. Deep Learning for Computer Vision

  26. Zero-shot leanring by convex combination of semantic embeddings

  27. Sequence to sequence learning with neural network

  28. Exploting similarities among language for machine translation

  29. Grammar as Foreign Language Oriol Vinyals, Lukasz Kaiser, Terry Koo, Slav Petrov, Ilya Sutskever, Geoffrey Hinton, arXiv 2014

  30. Deep Semantic Embedding

  31. 张家俊. DNN Applications in NLP

  32. Deep learning for natural language processing and machine translation

  33. Distributed Representations for Semantic Matching

  34. distributed_representation_nlp

  35. Deep Visual-Semantic Alignments for Generating Image Descriptions

  36. Convolutional Neural Networks for Sentence Classification

  37. Senna

  38. ImageNet Large Scale Visual Recognition Challenge

  39. Krizhevsky A, Sutskever I, Hinton G E. ImageNet Classification with Deep Convolutional Neural Networks

  40. Gradient-Based Learning Applied to Document Recognition

  41. Effetive use of word order for text categorization with convolutional neural network,Rie Johnson

  42. Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation

  43. Show and Tell: A Neural Image Caption Generator

  44. Deep Image: Scaling up Image Recognition

  45. Large-Scale High-Precision Topic Modeling on Twitter

  46. A. Krizhevsky. One weird trick for parallelizing convolutional neural networks. arXiv:1404.5997, 2014

  47. A Brief Overview of Deep Learning

  48. Going deeper with convolutions. Christian Szegedy. Google Inc. 阅读笔记

  49. Long Short-Term Memory Recurrent Neural Network Architectures for Large Scale Acoustic Modeling

  50. Semi-Supervised Learning Tutorial

  51. http://www.zhihu.com/question/24904450

  52. LONG SHORT-TERM MEMORY BASED RECURRENT NEURAL NETWORK ARCHITECTURES FOR LARGE VOCABULARY SPEECH RECOGNITION

  53. LSTM Neural Networks for Language Modeling

  54. LONG SHORT-TERM MEMORY

  55. Bengio, Y., Simard, P., Frasconi, P., “Learning long-term dependencies with gradient descent is difficult” IEEE Transactions on Neural Networks 5 (1994), pp. 157–166

  56. AliasLDA

  57. Gibbs sampling for the uninitiated

  58. Learning classifiers from only positive and unlabeled data

  59. TF-ICF: A New Term Weighting Scheme for Clustering Dynamic Data Streams

  60. LDA数学八卦

  61. Chinese Word Segmentation and Named Entity Recognition Based on Conditional Random Fields Models

  62. Conditional Random Fields: Probabilistic Models for Segmenting and Labeling Sequence Data

  63. Chinese Segmentation and New Word Detection using Conditional Random Fields

  64. Gregor Heinrich. Parameter estimation for text analysis

  65. Peacock:大规模主题模型及其在腾讯业务中的应用

  66. L. Yao, D. Mimno, and A. McCallum. Efficient methods for topic model inference on streaming document collections. In KDD, 2009.

  67. David Newman. Distributed Algorithms for Topic Models

  68. Xuemin. LDA工程实践之算法篇

  69. Brian Lott. Survey of Keyword Extraction Techniques

  70. Yi Wang, Xuemin Zhao, Zhenlong Sun, Hao Yan, Lifeng Wang, Zhihui Jin, Liubin Wang, Yang Gao, Ching Law, and Jia Zeng. Peacock: Learning Long-Tail Topic Features for Industrial Applications. TIST’2015.

  71. 刘知远. 基于文档主题结构的关键词抽取方法研究

  72. Hinton. Reducing the Dimensionality of Data with Neural Networks

  73. Samaneh Moghaddam. On the design of LDA models for aspect-based opinion mining;

  74. The FLDA model for aspect-based opinion mining: addressing the cold start problem

  75. Ross Girshick et. Rich feature hierarchies for accurate object detection and semantic segmentation

  76. J. Uijlings, K. van de Sande, T. Gevers, and A. Smeulders. Selective search for object recognition. IJCV, 2013.

  77. Baidu/UCLA: Explain Images with Multimodal Recurrent Neural Networks

  78. Toronto: Unifying Visual-Semantic Embeddings with Multimodal Neural Language Models

  79. Berkeley: Long-term Recurrent Convolutional Networks for Visual Recognition and Description

  80. Xinlei Chen et. Learning a Recurrent Visual Representation for Image Caption Generation

  81. Hao Fang et. From Captions to Visual Concepts and Back

  82. Modeling Documents with a Deep Boltzmann Machine

  83. A Deep Dive into Recurrent Neural Nets

  84. Xiang zhang et. Text Understanding from Scratch

 



推荐阅读
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 机器学习之数据均衡算法种类大全+Python代码一文详解
    目录前言一、为什么要做数据均衡?二、数据场景1.大数据分布不均衡2.小数据分布不均衡三、均衡算法类型1.过采样2.欠采样3.组合采样四、算法具体种类1 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 建立分类感知器二元模型对样本数据进行分类
    本文介绍了建立分类感知器二元模型对样本数据进行分类的方法。通过建立线性模型,使用最小二乘、Logistic回归等方法进行建模,考虑到可能性的大小等因素。通过极大似然估计求得分类器的参数,使用牛顿-拉菲森迭代方法求解方程组。同时介绍了梯度上升算法和牛顿迭代的收敛速度比较。最后给出了公式法和logistic regression的实现示例。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • OCR:用字符识别方法将形状翻译成计算机文字的过程Matlab:商业数学软件;CUDA:CUDA™是一种由NVIDIA推 ... [详细]
  • 知识图谱表示概念:知识图谱是由一些相互连接的实体和他们的属性构成的。换句话说,知识图谱是由一条条知识组成,每条知识表示为一个SPO三元组(Subject-Predicate-Obj ... [详细]
  • 3年半巨亏242亿!商汤高估了深度学习,下错了棋?
    转自:新智元三年半研发开支近70亿,累计亏损242亿。AI这门生意好像越来越不好做了。近日,商汤科技已向港交所递交IPO申请。招股书显示& ... [详细]
  • 人工智能推理能力与假设检验
    最近Google的Deepmind开始研究如何让AI做数学题。这个问题的提出非常有启发,逻辑推理,发现新知识的能力应该是强人工智能出现自我意识之前最需要发展的能力。深度学习目前可以 ... [详细]
  • 论文阅读(三):MultiInstance Clustering with Applications to MultiInstance Prediction.(BAMIC)
    文章目录引入学前娱乐提出问题BAMIC(BAg-levelMulti-InstanceClustering)算法一:BAMIC输入:输出: ... [详细]
author-avatar
hueihuei大海水_598
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有