首页 AI学术青年与开发者社区

【中英字幕】卡耐基梅隆大学 2019 春季《神经网络自然语言处理》

开课时间:2019年3月5日
开课时长:目前仍在不断持续更新中

其中课程的代码在:https://github.com/neubig/nn4nlp-code

其中第一章的数据在data/classes里面

这个课程属于简介,使用了dynet这个神经网络包做了BOW(词袋模型)和CBOW(连续词袋模型)以及Deep CBOW(深度连续模型),还是很轻松的

[展开全文]
实验内容学习
 1、环境配置
第二讲之前要先进行一下实验的学习。因为第一讲内容的编码使用的是pytorch 所以要先进行安装。但是anaconda国内镜像(清华和科大)已经停止更新和维护,因此需要恢复原chanel方法是:conda config --remove-key channels
重新配置默认源
 
但是安装速度很慢,有两种方式解决
(1)pytorch1.1的源文件很大有427M,我参考了网上的方法并改了下参数下载速度很快,使用pip命令进行安装。
pip install http://download.pytorch.org/whl/cu90/torch-1.1.0-cp36-cp36m-win_amd64.whl
实践证明是可以这么安装的,但是anconda更新的时候,却仍然要在更新一次,但我感觉应该也可以用。
(2)如果发现试了两次安装仍很慢,赶紧使用其他运营商的线路进行更新。在我十多次使用移动家庭宽带无法更新后,我使用校园网的VPN更新时仅尝试一次就成功更新。因为校园网是双路由选择,所以及时换线路,在https://pytorch.org/  官方网站上找到命令,使用conda install 命令进行更新就可以。
 2、代码测试
课程代码地址为:
https://github.com/neubig/nn4nlp-code
先做完第一节的内容,再做第二节
 
本节内容
本节内容主要是讲解LSTM在编码过程中的debug、run过程中的调参tricks和一些其他的策略,包括minibatch的选择、dropout、学习策略的选择等。
大部分内容都可以在论文regularizing and optimizing LSTM language Models中找到
[展开全文]

如何完成句子的分类?这个就是句子分类的任务,将句子分为5个类别,我们可以使用词袋模型来完成这个任务

 

将每一个单词使用词袋模型表示向量,每个向量的维度都是5(我是这样理解的这个语料库中词的数量只有5个,所以词典大小就是5),然后加起来就是整个句子的向量,然后我们就可以使用这个向量完成softmax的分类了,但是这样的词袋模型完成分类会有一些问题,因为我们是一个词一个词的在向量表示,很有可能出现don‘t like的情况

出现这种情况的原因是don’t‘单独向量化了,然后love单独向量化了,二者并没有结合在一起

 

而神经网络可以解决这个问题,它可以将元素特征进行组合

我们不对每一个bow向量进行相加,而是把它们放到神经网络中得到score得分,然后进行softmax分类,得到最终该文本的类别

这个是连续词袋模型,将每个词的向量加起来之后,乘以一个矩阵W,假如加起来的词的向量维度是100维,那么w的维度就是5*100,所以最终的输出维度为5维的向量,正好完成分类任务

这样处理只是降低了维度,仍然是线性表示,仍然没有组合特征,如何才能组合特征?

[展开全文]

Sentence Classification

  • Bag of Words (BOW)
    • 每个单词都有这五种element 相关度 [very good, good, neutral, bad, very bad]。
    • 最简单的做法就是将句子中每个单词对于这些 element 相关度加总,可以取最高值来当作这个句子的表现。
    • 当句子有特定字词可能会来改变结果 (例如:don't, nothing...)
    • 可以透过 neural net 来 extract combination features
  • Continuous Bag of Words (CBOW)
    • 将每个单词相转换成许多 features (例如:positive words)
    • 将 features 加总后,透过这个 features 来预测这个句子的 element
  • Deep COBW
    •  透过运算来将不同的 feature 进行 combine,再来透过这个结果来预测这个句子的 element
 
Nerual Network Frameworks
  • Static Frameworks
    • theano
    • Caffe
    • MXNet
    • TensorFlow
  • Dynamic Frameworks
    • Dynet
    • Chainer
    • PyTorch
    • 优点:有灵活操作空间
    • 缺点: 计算量大
 
Basic Process in Dynamic Neural Network Frameworks
  • Create a model
  • For each example
    • create a graph
    • calculate the result
    • back propagation an update
[展开全文]

最重要的三个知识点:

1bow

2.cbow

3.deep cbow

 

同时介绍的computation graph

定义好这个图结构,那么这些开发框架将会自动帮我们执行forward propagation(FP)以及backward propagation(BP)

[展开全文]

随堂笔记:

1. 语法规则和语义理解的问难

2. 特征词的存在: 例:情感分类--love, hate;否定词;

3. 词袋模型 -> 连续词袋模型 -> 深度连续词袋

线性组合 -> 非线性表现(可提取组合特征)

4. 神经网络相关

:- 抽象于生物意义上的神经元。输入神经元,接收信号,达到激活程度,产生输出。

:- 计算图表示。

:- 神经网络框架:theano, caffe, mxnet, tensorflow(静态); dynet(适合复杂任务), chainer,  pytorch(动态)

:- 过程:创建模型->对每例,创建计算图,训练,反向传播,更新参数

静态和动态的代价取舍

静态:计算快速,移植方便
动态:操作灵活,流程简单

:- 示例(情感分类, stanford情绪):
1)读入训练集,得到单词和标签

2)定义模型(net框架),定义参数(参数=单词数量*标签数量)(权重矩阵,偏置矩阵)

3)训练,反向传播,更新参数

(和之前的基本操作过程相似,只是顺手记录)

:- 调参可以尝试不同的方式计算分数,例如修改单词的embeddings大小;设置不同的权重矩阵;修改隐藏层参数

[展开全文]

了解nlp,自然语言处理中自然的意义

希望ai研习社能找到机器学习的nlp课程

以对nlp内容打好基础

文本分类的简单问题

对每个类别进行打分 取最高分作为分类

构建函数提取组合特征

cbow连续词袋  特征组合应用

基本上这个模型是:取特征加和特征 成权重矩阵+bias 转化成得分

Deep CBOW

模型(提取组合特征 一个消极和积极的单词是否出现在一个句子里)

一句话中特征加和变成特征向量但不是使用特征向里来预测 而是通过一个几层的非线性函数运行这个模型然后基于多重特征层乘权重矩阵在加上偏差求出得分

 

 

 

ps:快通过啊 需要解锁卡看下一节

 

 

 

 

 

[展开全文]

进入小组观看课程

以下为该课程相关学习小组,您可以选择任意小组加入学习课程并交流

CMU CS 11-747 2019年春季 NLP

成员:2171泡泡:2744

点击观看