02-NLP-06-深度学习与NLP简单应用

希望在毫不知情(很少的人类介入)的情况下实现。即端对端的实现。

一、Intro

工具推荐:

二、Auto-Encoder

使用自编码器的情况:1)拿到的原始数据缺少标签 (数据降噪)  2)数据太大了,需要进行降维,使得最后数据集大小可接受(例如可以讲原始的8*8图片压缩成2*1的)

将原始图片“数字2”压缩(encoder一个从大到小的NN)到一个中间量(compressed representation),然后通过一个完全反过来的(Decoder一个从小到大的NN)恢复出原始图片。

自编码器实质:自己来学习自己。在中间加了两个对立漏斗形的NN。目的在于处理前后输入输出图片之间的差异尽量小。

当输出可以很好恢复出输入的时候,可以认为中间量(compressed representation)是足够好,足够独特的。

Auto-Encoder可以视为是DL的开山鼻祖,因为它最早且直观简单的。真实熟练地实现了DL的精确要素,不用人为处理来提取。

比较文本编解码前后相似度的方法:(1)列文斯坦距离。(原句子到输出语句需要进行多少步转换)

(2)或者将原文本表示成矩阵向量,然后计算两词向量之间的夹角cosine值,来表示这俩向量之间的距离。

对于init DNN weights:

将encoder取出来作为NN的init位,建立一个NN的前面几位可以不用学习了,因为通过encoder学习得到的可以被视为是已经提取出来的特征表达形式。从而可以让NN变得更加快速。

而这个思路被证实还不如做随机初始化(random initial),因为随机初始化的时候还不容易陷入局部最优解。

batch normalization:分成一个个小batch,并将每个小batch(融合到一堆进行训练)进行normalization(归一化),使得最后计算结果的学习曲线能够更加平滑。

Residual Learning(残差学习):每次学习的时候都随机跳过几个DL的块,这样既能加快整体训练速率,又能保证整个DL的严谨性。

出自刘慈欣《三体》“农场主假说”

农场主理论::一个农场里有一群火鸡,农场主每天中午十一点来给它们喂食。火鸡中的一名科学家观察这个现象,一直观察了近一年都没有例外,于是它也发现了自己宇宙中的伟大定律:“每天上午十一点,就有食物降临。”它在感恩节早晨向火鸡们公布了这个定律,但这天上午十一点食物没有降临,农场主进来把它们都捉去杀了。

假设我们所处的世界是鸡的世界,我们生存在农场里,那么我们现在所有的一切的理论都是不复存在的。

因此每当你处在一个三维的环境当中的时候,你是没有办法跳出这个维度本身,即你无法很好的解释这个三维世界本身。

也就是说,你至少要比你所在维度高一维才能很好地来解释它。因此很可能你得到的是局部最优解,因为你没办法判断是不是全局最优

python2是基于ASCII的,python3是基于Unicode(现阶段较完美的替代ASCII,囊括了全世界的所有语言)。

这里采用ASCII(共256)来实现对英文句子的编码,对于一个神经网络模型而言,输入的X——Y的过程中要求X应该应该是等长的。

因此在__init__函数的参数列表中:sen_len均固定长度为512,经过encoder得到的中间量的长度encoding_dim=32,训练次数epoch=50次,从训练集中取val_ratio=0.3来保证在学习的时候进行观测有无过拟合现象的产生。

当中的preprocess需要自行补充:将text扩展/截断成512的长度,sen_len并且每个字符用ASCII表示。得到的结果作为x_train。

因此,所有input都变为unified的表达形式。并且它们都有各自一一对应的特征表达。

input层:512长度

encoder:1024——512——128——32(encoding_dim)

decoder:128——512——1024——512(sen_len)

预留好input size的目的是为了保证输入的shape和之前的是一样的

把所有的layer倒推一下(即encoder的倒数n层作为decoder的正数n层)

进行compile一下:adam优化器,损失函数,来进行自我学习,直到它们的差异达到最小。

fit:将x_train作为输入x放入,将x_train作为y也输入。shuffle=True的意思是每次学习完后将学到的数据进行打乱。

KNN:将x_train这个文本利用predict变为32位代码(压缩码),从而编译时间就会变得很短。

    然后再用一个kmean最近模型将相近的划分到一起,远的分为另一类。从而实现粗略的分类(即聚类)。

此时模型已经训练好了,现在进行测试预测:

predict函数:先将x变为等长的512位的ASCII码,并处理成32位压缩码x_test,再用KNN分类[0,1]

KNN是一个无监督的分类器。(kmean模型聚类算法)

Auto-Encoder整个过程没有用到任何的label,用的都是数据x本身,都没有用到y,这是一个很完善的非监督算法。缺点在于算法的精确度不是很高。

三、CNN4Text

CNN相当于将输入的同一张图片在不同的滤镜下得到不同的显示形式,暗含图片的一些鲜为人知的特征。

这些特征可以通过计算机进行学习后,作为原图片的特征表达向量。利用这个向量和label标签y进行学习。

“ 滤镜”对应图中的黄色部分。图片为绿色的5*5图片。“滤镜”的获取也不是随机的,是CNN学习的一部分。

右图中:中间点和上下左右的像素如果相近的话,加起来就会抵消变0,呈现黑色。但是如果周围和中心点的颜色相差很大的话,

可以利用word2vec将一句话转换为数字向量的形式。从而将每个单词都写成一个个横向的向量,如下图:

成功将一句话扩展成为了一张图片的表达形式(二维的像素值),从而此形式的数据就能直接放入CNN当中:

先用一个滤镜扫过得到一个个特征点,

然后利用max-pooling(因为滤镜扫过了所有的像素点产生了所有的特征值,而这些特征值不一定全是我们需要的)选择特征向量中的最大值

(采用maxpool的原因是:拿到一张图片最耀眼是最值得关注的,因此只需要将这个最被注意的点提取出来代表这个区域。)

采用max-pool实质就是为了降维降低计算复杂度。

池化层之后所有特征都会变成一维的横向排布。然后输出对应到0,1的分布。

我们不一定要将句子处理成图片的形式,也可以把它处理成一维向量形式。

利用ASCII预处理的过程,将输入text统一变为512位(用256中ASCII表示的)数字代码sentence。

然后通过一维的filter照射每一个区域,得到一个个feature map

经过max-pooling取出最大值,

然后通过分类器(MLP:SVM,LR)得出分类的y

这个方式会比方法一转换过程要简单一点,不用转换为图片形式。

RNN:对于一个有记忆的时间序列模型而言,人眼是从头开始一个个按顺序的看。

RNN可以很好保存信息的前后关系,时间序列。

CNN:人眼看语句的时候用的是图像思维,并非真的一个个字看过去。是将看到的先转换为一张图片,然后进行大脑处理,再进行语义提取。

相当于“看到”和“到看”经过池化层之后只会得到最具特征的“看”,同样“话句”也会被池化层处理为“话”。

CNN重点在于处理传入语句的含义,不纠结与句子的前后语序。

wide中采用padding来保证图片中每一点都能被扫到,但也可能带来一些意想不到的噪声。

narrow中都是自己的点,不会越过原图本身。

原文地址:https://www.cnblogs.com/Josie-chen/p/9146123.html

时间: 2024-10-12 05:09:52

02-NLP-06-深度学习与NLP简单应用的相关文章

回望2017,基于深度学习的NLP研究大盘点

回望2017,基于深度学习的NLP研究大盘点 雷锋网 百家号01-0110:31 雷锋网 AI 科技评论按:本文是一篇发布于 tryolabs 的文章,作者 Javier Couto 针对 2017 年基于深度学习的自然语言处理研究进行了大盘点.雷锋网 AI 科技评论根据原文进行了编译. 在过去的几年里,深度学习(DL)架构和算法在诸如图像识别和语音处理等领域取得了世人瞩目的进步.然而在最开始的时候,深度学习在自然语言处理(Natural Language Processing, NLP)领域的

在NLP中深度学习模型何时需要树形结构?

前段时间阅读了Jiwei Li等人[1]在EMNLP2015上发表的论文<When Are Tree Structures Necessary for Deep Learning of Representations?>,该文主要对比了基于树形结构的递归神经网络(Recursive neural network)和基于序列结构的循环神经网络(Recurrent neural network),在4类NLP任务上进行实验,来讨论深度学习模型何时需要树形结构.下面我将通过分享这篇论文以及查看的一些

深度学习之NLP

知识点 """ 1) from gensim.model import Word2Vec import jieba 2) opencc :将繁体字转换为简体字 转换命令:opencc -i texts.txt -o test.txt -c t2s.json 3) 自然语言处理: 1.拼写检查.关键字检索 2.文本挖掘 3.文本分类 (二分类) 4.机器翻译 5.客服系统 6.复杂对话系统 4) p(S)=p(w1,w2,w3,w4,w5,…,wn) =p(w1)p(w2|w1

深度学习、机器学习与NLP的前世今生

随着深度学习的发展,自然语言处理领域的难题也得到了不断突破,AlphaGo项目的主要负责人David Silver曾说"深度学习 (DL)+ 强化学习 (RL) = 人工智能 (AI)".目前深度学习在自然语言处理上主要有哪些应用?在工程实践中是否会有哪些瓶颈?以下内容是根据达观数据联合创始人高翔在<深度学习与文本智能处理>直播的总结. 一.为什么做文本挖掘 什么是NLP?简单来说:NLP的目的是让机器能够理解人类的语言,是人和机器进行交流的技术.它应用在我们生活中,像:智

&lt; 转&gt;百度与深度学习

作者 余凯,百度技术副总监,千人计划国家特聘专家. 贾磊,百度主任架构师,语音技术负责人. 陈雨强,百度商务搜索部资深研发工程师,负责搜索广告 CTR 预估 摘要:深度学习带来了机器学习的新浪潮,推动"大数据+深度模型"时代的来临,以及人工智能和人机交互大踏步前进.如果我们能在理论.建模和工程方面突破深度学习面临的一系列难题,人工智能的梦想不再遥远. 2012 年 6 月,<纽约时报>披露了 Google Brain 项目,吸引了公众的广泛关注.这个项目是由著名的斯坦福大学

斯坦福大学深度学习与自然语言处理第一讲:引言

斯坦福大学在三月份开设了一门"深度学习与自然语言处理"的课程:CS224d: Deep Learning for Natural Language Processing ,授课老师是青年才俊Richard Socher,他本人是德国人,大学期间涉足自然语言处理,在德国读研时又专攻计算机视觉,之后在斯坦福大学攻读博士学位,拜师NLP领域的巨牛 Chris Manning和Deep Learning 领域的巨牛 Andrew Ng ,其博士论文是< Recursive Deep Le

【深度学习Deep Learning】资料大全

转载:http://www.cnblogs.com/charlotte77/p/5485438.html 最近在学深度学习相关的东西,在网上搜集到了一些不错的资料,现在汇总一下: Free Online Books Deep Learning66 by Yoshua Bengio, Ian Goodfellow and Aaron Courville Neural Networks and Deep Learning42 by Michael Nielsen Deep Learning27 by

【转帖】深度学习:推进人工智能的梦想

深度学习:推进人工智能的梦想 发布日期:2014.07.14  浏览次数:58次 深度学习:采用无监督学习,获得更有用的特征(不需要人工抽取特征),以实现各种分类和预测目标,结合高性能计算,提高效率. 通篇文字给人传递的信息就是,百度比Google牛,事实真的如此吗?各位有什么看法? 2012年6月,<纽约时报>披露了Google Brain项目,吸引了公众的广泛关注.这个项目是由著名的斯坦福大学机器学习教授Andrew Ng和在大规模计算机系统方面的世界顶尖专家Jeff Dean共同主导,用

玩深度学习选哪块英伟达 GPU?有性价比排名还不够!

本文來源地址:https://www.leiphone.com/news/201705/uo3MgYrFxgdyTRGR.html 与"传统" AI 算法相比,深度学习(DL)的计算性能要求,可以说完全在另一个量级上. 而 GPU 的选择,会在根本上决定你的深度学习体验.那么,对于一名 DL 开发者,应该怎么选择合适的 GPU 呢?这篇文章将深入讨论这个问题,聊聊有无必要入手英特尔协处理器 Xeon Phi,并将各主流显卡的性能.性价比制成一目了然的对比图,供大家参考. 先来谈谈选择

&lt;深度学习优化策略-3&gt; 深度学习网络加速器Weight Normalization_WN

前面我们学习过深度学习中用于加速网络训练.提升网络泛化能力的两种策略:Batch Normalization(Batch Normalization)和Layer Normalization(LN).今天讨论另一种与它们类似的策略:Weight Normalization(Weight Normalization).Weight Normalization是Batch Normalization的一种变体,与Batch Normalization最大不同点:对神经网络的权值向量W进行参数重写Re