深度学习与自然语言处理

(纯属为了记录自己学习的点滴过程,引用资料都附在参考列表)

1 传统方法的局限

1.1 传统方法的套路

传统方法的处理流程简单来说就是:特征提取+传统机器学习模型训练;
特征提取
使用了特征模板、TF-IDF、词袋向量等特征提取方法;
常用的机器学习模型
HMM、perceptron、CRF、NBM、SVM;
这些方法属于普遍规律,要解决具体的nlp问题还需要具体问题具体分析(特殊规律),nlp难就难在这个地方,你找不到稍微普适一点公式可以套用很多问题。就好比韩寒说过的一句话,懂得很多道理,但还是过不好这一生。所以学习人工智能也没有什么捷径,就是keep your hands dirty,让你的手沾满数据,不断在真实的问题中踩坑,坑踩多了就有经验了。

1.2 局限性

  • 数据稀疏
    统计机器学习的前提假设是随机现象是大量发生、具有某种平均特性,如果发生一次两次,就不适合概率统计框架。
    首先,传统的机器学习方法不善于处理数据稀疏问题,这在自然语言处理领域显得尤为突出,语言是离散的符号系统,每个字符、单词都是离散型随机变量。我们通常使用独热向量(one-hot)来将文本转化为向量表示,指的是只有一个元素为1,其他元素全部为 0 的二进制向量。
  • 特征模板
    一方面特征模板同样会带来数据稀疏,另一方面高级的NLP任务需要更复杂的特征,这对手工设计特征模板是个很大的挑战。
  • 误差传播
    现实世界中的项目,往往涉及多个自然语言处理模块的组合。比如在情感分析中,需要先进行分词,然后进行词性标注,根据词性标注过滤掉一些不重要的词,最后送入到朴素贝叶斯或者支持向量机等机器学习模块进行分类预测。这种流水线式的作业方式存在严重的误差传播问题。

2 深度学习的优势

2.1 深度学习的精髓

深度学习(Deep Leaming, DL )属于表示学习( Representation Learning )的范畴,指的是利用具有一定“深度”的模型来自动学习事物的向量表示(vectorial rpresenation)的一种学习范式。目前,深度学习所采用的模型主要是层数在一层以上的神经网络。如果说在传统机器学习中,事物的向量表示是利用手工特征模板来提取稀疏的二进制向量的话,那么在深度学习中,特征模板被多层感知机替代。而一旦问题被表达为向量,接下来的分类器一样可以使用单层感知机等模型,此刻深度学习与传统手法毫无二致,殊途同归。所以说深度学习并不神秘,通过多层感知机提取向量才是深度学习的精髓。

2.2 用稠密向量解决数据稀疏

神经网络的输出为样本 x 的一个特征向量 h。由于我们可以自由控制神经网络隐藏层的大小,所以在隐藏层得到的 h 的长度也可以控制。即便输人层是词表大小的独热向量、维度高达数十万,隐藏层得到的特征向量依然可以控制在很小的体积,比如100维。

这样的 100 维向量是对词语乃至其他样本的抽象表示,含有高度浓缩的信息。相较于独热向量,h的每一维不再对应特征模板中的某个特征,而可能代表某些特征的组合强度。

正因为通过多层学习得到的稠密向量短小精悍,其对应了低微空间中的一个点。无论数据所处的原始空间的维数有多高、数据的分布有多稀疏,将其映射到低维空间后,彼此的距离就会缩小,相似度就体现出来了。

2.3 用多层网络自动提取特征表示

神经网络两层之间一般全部连接(全连接层),并不需要人们根据具体问题具体设计连接方式。这些隐藏层会根据损失函数的梯度自动调整多层感知机的权重矩阵,从而自动学习到隐陬层的特征表示。

该过程完全不需要人工干预,也就是说深度学习从理论上剥夺了特征模板的用武之地。

2.4 端到端的设计

由于神经网络各层之间、各个神经网络之间的“交流语言”为向量,所以深度学习工程师可以轻松地将多个神经网络组合起来,形成一种端到端的设计。比如之前谈到的情感分析案例中,一种最简单的方案是将文档的每个字符的独热向量按顺序输入到神经网络中,得到整个文档的特征向量。然后将该特征向量输入到多项逻辑斯谛回归分类器中,就可以分类出文档的情感极性了。

整个过程既不需要中文分词,也不需要停用词过滤。因为神经网络按照字符顺序模拟了人类阅读整篇文章的过程,已经获取到了全部的输人。

3 展望自然语言处理

3.1 理论上数学基础越高越好

说是人工智能的时代,也可以说数学的最好的时代,只要你的算法复杂度不是特别过分,现在的算力都可以解决,有多少数学天分都可以展示出来。

3.2 工程上多多踩坑

找到一个切实的任务,站在别人的肩上,不断尝试,直到成功!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/420737.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 烧写(1)

第一部分: 一、BootLoader的概念 BootLoader是系统加电启运行的第一段软件代码.回忆一下PC的体系结构我们可以知道,PC机中的引导加载程序由BIOS(其本质就是一段固件程序)和位于硬盘MBR中的引导程序一起组成。BIOS在完成硬件检测和…

利用websocket实现一对一聊天

一对一聊天websocket1. 效果展示2. 业务分析(逻辑展示...)3. 技术点功能 即时发送消息||随时发送消息历史消息显示已读未读状态 1. 效果展示 由于没做登录,就以jack和rose两人聊天 两人可相互发消息 持续输出. . 当只有jack在线时 嘤…

中文分词--词典分词--最长匹配

(个人学习笔记,慎重参考) 1 基本概念 中文分词 指的是将一段文本拆分为一系列单词的过程,这些单词顺序拼接后等于原文本。 作为中文信息处理的第一站,是后续nlp任务的基础,中文分词算法大致可分为词典规则…

css3动画animation,transition

animation demo1 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>animation动画</title><style>#div1 {width: 100px;height: 100px;background-color: pink;position: absolute;top: 10%;left: 25%;}/* 延迟…

PLSQL Developer 运用Profiler 分析存储过程性能

最近应公司需要&#xff0c;需要编写ORACLE存储过程。本人新手&#xff0c;在完成存储过程的编写后&#xff0c;感觉需要对存储过程中各个语句的执行时间进行分析&#xff0c;以便 对整个存储过程进行优化。 由于用的是PLSQL Developer 客户端工具&#xff0c;而网上大多介绍的…

四、Dynamic-programming algorithm Dynamic--LCS

(学习笔记&#xff0c;无什参考价值&#xff01;) 1 问题 2 算法 2.1 Brute-force LCS algorithm 检查每一个subsequence是否是yyy的子列时&#xff0c;遍历yyy的每一个元素&#xff0c;看是否依次可以全部覆盖subsequence所有元素&#xff0c;所以其复杂度为O(n)O(n)O(n); …

Spring JdbcTemplate Curd

curd1. 实现步骤2. maven dependency3. curd代码database: oracledataSource: alibaba druid 1. 实现步骤 1. 导入spring-jdbc 和 spring-tx(事务)坐标 2. 创建数据库表和实体 3.创建JdbcTemplate对象JdbcTemplate jdbc new JdbcTemplate();jdbc.setDataSource(dataSource);…

linux环境配置与使用合集

配置linux和samba共享 1.  安装linux操作系统 2.  通过windows操作系统ping linux看看是否可以ping通 3.  相关软件安装 a. 安装samba sudo apt-get install samba4, sudo apt-get install system-config-samba b. 安装ssh&#xff0c;这样windows可以远程登录linux, sud…

五、分治法应用--矩阵乘法

1 朴素算法 这个算法就是矩阵乘法的定义&#xff1a; 很容易看出这个算法复杂度是Θ(n3)\Theta(n^3)Θ(n3)。 2 递归算法 分治法首先是从分割问题开始的&#xff0c;得到数学上的递归关系后&#xff0c;然后使用递归的方式实现。 由上面的数学性质&#xff0c;可以使用递…

POJ 1300 Door Man(欧拉回路的判定)

题目链接 题意 &#xff1a; 庄园有很多房间&#xff0c;编号从0到n-1,能否找到一条路径经过所有开着的门&#xff0c;并且使得通过门之后就把门关上&#xff0c;关上的再也不打开&#xff0c;最后能回到编号为0的房间。 思路 &#xff1a; 这就是一个赤裸裸的判断欧拉通路的问…

bootstrap guide

bootstrap1. bootstrap 简单介绍2. demo演示3. 关于bootstrap使用注意的点1. bootstrap 简单介绍 起源 来自Twitter&#xff0c;是目前最受欢迎的前端框架。基于HTML、CSS、Javascript。Bootstrap js组件依赖于jquery 3.X简洁灵活&#xff0c;使得Web开发更加快捷。官网 https…

六、Analysis of quicksort

1 引言 如题目所示&#xff0c;本节的精华在于用数学解决一个直觉上看似纷乱复杂的问题&#xff0c;里面有一些一般性的分析方法&#xff0c;如引入Indicator变量&#xff0c;从而把不确定问题引入到概率框架进行分析&#xff0c;一步一步把直觉上混乱的问题理清楚&#xff0c…

Javaweb maven项目tomcat报错: javax.naming.NamingException: 无法创建资源实例

报错地址 2. 原因分析 1. Resource注解无效&#xff0c;注入失败&#xff0c;你得从容器中把bookInfoServie取去来&#xff0c;用getBean的方式创建BookInfoServiceImpl对象 2.删掉Resource注解&#xff0c;重新部署搞定。3.不要在意写了个Contorller, 初学spring&#xff0c;…

如何给APK文件签名

转载地址&#xff1a;http://www.apkbus.com/forum.php?modviewthread&tid1264211.签名的意义   为了保证每个应用程序开发商合法ID&#xff0c;防止部分开放商可能通过使用相同的Package Name来混淆替换已经安装的程序&#xff0c;我们需要对我们发布的APK文件进行唯一…

七、基于比较的排序算法总结

1 问题 至此&#xff0c;总结一下已经研究过的排序算法&#xff1a; insertion sort&#xff0c;Θ(n2)\Theta(n^2)Θ(n2) merge sort, Θ(nlogn)\Theta(nlogn)Θ(nlogn) quicksort, Θ(nlogn)\Theta(nlogn)Θ(nlogn) heapsort,Θ(nlogn)\Theta(nlogn)Θ(nlogn) 从上面这个现象…

转账为demo,spring事务

spring 事务使用1. 业务代码2. xml配置3. 注解配置1. 业务代码 数据表结构 dao package com.lovely.dao.impl;import com.lovely.dao.AccountDao; import org.springframework.jdbc.core.JdbcTemplate;/*** author echo lovely* date 2020/8/9 11:01*/ public class AccountD…