CS224n: Natural Language Processing with Deep Learning课程笔记





  • Lecture10 - Machine Translation, Sequence-to-sequence and Attention

    机器翻译、seq2seq模型和注意力机制

    到这里,课程已经过半了,剩余的课程几乎都是由项目驱动,我们将会学到NLP+DL的研究前沿。课程也会变得更高层:不再有梯度计算、有时我们只会对一些知识做概述。
    这次的课程包含NLP深度学习的两项核心技术——seq2seq & Attention


    Machine Translation

    机器翻译是将一个语言的句子翻译成另一语言的任务。
    例如将I love machine learning.翻译成我爱机器学习。

    早期机器翻译

    早期的机器翻译更多的是基于语言规则、使用词典来构建。


    1990s-2010s: Statistical Machine Translation

    90年代到2010年左右,机器学习多基于统计。
    传统统计机器翻译的核心思路是:从数据中学习一个概率模型,使用贝叶斯找到概率最大的句子:

    y^=argmaxyP(yx)=argmaxyP(xy)P(y)\hat y = argmax_yP(y|x)=argmax_yP(x|y)P(y)

    其中P(x|y)为翻译模型,指导词和短语翻译,训练数据为双语数据。P(y)为语言模型,指导如何写出好的翻译句子,训练数据为目标翻译语言。

    那么,我们如何学习一个P(x|y)模型呢?
    首先,我们需要大量的双语模型。
    接着,我们需要的翻译模型其实是

    P(x,ay)P(x,a|y)

    其中a用于对齐,因为中英文中语言的顺序是不一样的,例如Chinese eat with chopsticks.的中文为中国人用筷子吃饭,这两句话的词语并不是按顺序对应的。


    对齐

    • 有一些词在另一语言中并没有与它对应的单词
      0_1531902906795_63dc734a-6477-429e-aa24-1593559016f0-image.png

    • 有一些词可以翻译为多个词
      0_1531902949831_3465d240-c405-44cc-954a-48822b3b3170-image.png

    • 也有一些词可以由多个词翻译成
      0_1531903000888_a072845d-99fd-491a-8c45-0dda387435e1-image.png

    • 甚至有多对多的情况出现
      0_1531903033268_b7889433-863d-487f-abbc-c86afcdc51a6-image.png


    对齐如此复杂,怎么训练一个翻译模型呢?

    • 可以举出所有y与x的配对组合然后计算概率吗? -- 当然不行,计算代价太高

    我们可以使用一个启发式搜索算法来逐渐构造翻译模型,忽略概率低的假设。
    0_1531903392517_b11dd4f1-9b2c-4ec9-a39e-2952555e9c50-image.png

    就算这样也会有非常多的组合。
    0_1531903432405_84ac7323-0373-4ba0-8d6d-9e3dc9b4c256-image.png


    之前的课程中,我们说到用传统机器学习做文本分类很困难,于是出现了深度神经网络。现在在机器翻译中,我们也要喊出同样的一句话:

    Oh! Neural Network!

    0_1531903694239_e175447c-6548-4485-9fbc-052f78cd47b0-image.png

    Neural Machine Translation

    NMT是一种只使用一个神经网络进行机器翻译的方法。它的神经网络模型叫做sequence-to-sequence(简写为seq2seq),包括两个RNN。

    0_1531903873760_5abb931b-a2d4-4767-b40c-604d80e021c5-image.png

    网络由两个RNN组成,Encoder RNN产生一个对原句子的编码,Decoder RNN通过Encoder RNN的输出编码来产生目标句子。

    seq2seq是一种条件语言模型(Conditional Language Model):

    • decoder用于预测翻译句子的下一个词,因此它属于Language Model
    • 由于预测仍然由输入的原句子决定,因此它是有条件的Conditional

    0_1531904424331_36693ff3-15fd-4092-9dca-a46079b253d0-image.png


    训练一个seq2seq模型

    0_1531904501538_6abb98a6-a3ec-4a33-bde5-7cbf0e230038-image.png

    Greedy Decoding
    下图所示的就是greedy decoding(将每一部中输出的词都放入翻译结果):
    0_1531904832213_6f009516-b3a2-4370-ae3d-269f2e4467d2-image.png

    但是这样做是有问题的:

    • 不能撤销决定。例如有一句法语les pauvres sont démunis (the poor don’t have any money),翻译过程如下:
      • the ___
      • the poor___
      • the poor are___

    那是否有更好的方式?
    => 使用beam search来寻找几个可能的假设并选出最合适的一个。


    Beam search decoding

    我们的目的是寻找到可能性最大的y:
    0_1531905226147_3cd130ec-3942-401b-bc94-c48fa3e1c651-image.png

    我们可以尝试所有的可能,但是这样开销太大了。

    Beam search: 在decoder的每一个时间节点,保持跟踪前k个最可能的翻译部分

    • k叫做beam size(通常在5-10)
    • 不保证能找到最佳结果
    • 但是要高效得多

    0_1531905480428_a598266f-274c-4058-b20e-5d986ceb0135-image.png


    Neural Machine Translation的优点

    • 有更好的效果:得到的结果更流畅,对上下文的理解更好,对近义短语的理解更好。
    • 只需要一个单一神经网络就可以完成端到端翻译。
    • 需要更少的人类工程:不需要特征工程,对所有语言翻译可以使用同样的方法。

    NMT的缺点

    • 可解释性差:难以debug
    • 很难控制NMT的结果:
      • 不能轻易地指定翻译规则
      • 安全问题

    NMT是NLP深度学习中最大的成功

    • 2014:第一篇seq2seq论文发表
    • 2016:Google翻译从SMT切换到NMT

    这样的变化,将每年成百上千工程师构建的SMT切换成了屈指可数的工程师在几个月内即可构建完成的NMT。

    那么,机器翻译问题解决了吗?
    显然没有!

    机器翻译仍然有许多问题需要解决:

    • 在词典外的词
    • 训练和测试数据的领域不同
    • 长文本语境的保留
    • 数据量少的翻译语料

    0_1531906312173_224be2f4-9c76-4643-b04e-0154a584d92f-image.png
    0_1531906341250_d1c6be99-bce2-4896-907d-97d2a3d719fe-image.png
    0_1531906351852_ab5c41bb-54a7-49d3-a75d-329d1e091406-image.png


    2017年,在机器翻译领域有一篇重磅论文,Attention Is All You Need
    下面介绍机器翻译邻域新的改进方法:注意力机制

    ATTENTION

    seq2seq的瓶颈

    0_1531906589720_f4528885-1b80-41ec-8543-431bb17408b8-image.png

    Encoder需要捕捉原句子中的所有信息 - 信息瓶颈。


    Attention

    注意力机制提供了对于信息瓶颈的解决方案。它的核心思想是:在decoder的每一个时间节点,只专注于原序列的一个特定部分。

    我们先使用图表的形式了解attention:

    Attention首先对encoder输出的每一个节点计算一个attention score,再使用softmax得到每个点的概率(Attention distribution),由概率得到注意力输出,与decoder的hidden state结合得到当前输出。以下为decoder每一时间节点的状态图。

    0_1531906945204_00db08c3-263f-48fd-b2b4-83847d10b261-image.png
    0_1531907117174_6683661e-0398-4d76-9edd-cef8406ce3be-image.png
    0_1531907128483_e51448fd-04f2-420b-8d0b-77e5d99a7013-image.png
    0_1531907143847_35eaeb4a-eee0-470d-928c-c2de051f9a13-image.png
    0_1531907157485_11d1feae-0e7a-4cac-b47d-b3b0a26a932c-image.png
    0_1531907172171_f251b75d-b383-4811-849e-abad125899d0-image.png


    下面为公式:

    • 隐藏状态

    h1,h2,...,hnRhh_1,h_2,...,h_n \in R^h

    • 在时间节点t,有decoder隐藏状态

    stRNs_t \in R^N

    • 在这一节点,有attention scores:

    et=[stTh1,stTh2,...,stThN]RNe^t = [s_t^Th_1,s_t^Th_2,...,s_t^Th_N] \in R^N

    • 给attention score套一层softmax得到attention distribution

    αt=softmax(et)RN\alpha^t=softmax(e^t)\in R^N

    • αt\alpha^t乘以对应的encoder的hidden states来计算输出的a_t

    at=i=1NaithiRha_t = \sum^N_{i=1}a_i^th_i\in R^h

    • 最后将a_t与s_t concat到一起

    [at;st]R2h[a_t;s_t]\in R^{2h}


    Attention 的优点

    • Attention对NMT的效果有重大提升
      允许decoder专注于确定的部分很有用
    • Attention解决了NMT的瓶颈
      Attention允许decoder直接观察到原句子,解决了瓶颈
    • Attention对缓解梯度消失有帮助
      提供了到达很远的状态的捷径
    • Attention有一定的可解释性
      • 我们可以通过attention distribution看到decoder正在关注什么
      • 我们通过attention直接得到了对齐信息
      • 这一点很酷,因为我们从没有明确地训练一个对齐系统
      • 网络自己学到了对齐
        0_1531911099361_ed2f8f93-e779-4603-af7e-4fd47535d9be-image.png

    seq2seq用途广泛

    seq2seq不只是适用于机器翻译,在很多领域也有很好的效果:

    • Summarization (long text -> short text)
    • Dialogue (previous utterances -> next utterance)
    • Parsing (input text -> output parse as sequence)
    • Code generation (natural language -> Python code)


  • Lecture11 - Paying attention to attention and Tips and Tricks for large MT

    Attention是一项通用的深度学习技术,它不仅应用于seq2seq中,今天我们还将介绍attention的更多应用。

    Attention

    Attention是一个根据输入向量序列计算元素的权值的技术。

    几种Attention的变体

    • 上一课中提到的attention,我们有encoder 隐藏状态

      h1,...,hnRd1h_1,...,h_n\in R^{d_1}

      有decoder 隐藏状态query

      sRd2s\in R^{d_2}

    • Attention总是从attention scores(e)中计算得到attention output a,例如:

      α=softmax(e)RN\alpha = softmax(e) \in R^N

      a=i=1NαihiRd1a = \sum^N_{i=1}\alpha_ih_i \in R^{d_1}

    • 但其实,我们有很多种方式计算attention scores(e)

    计算e的几种方式

    通过encoder与encoder的hidden states(hRd1h \in R^{d_1}, sRd2s \in R^{d_2}),我们有以下几种方式计算attention scores:

    • 基本的点乘attention(Basic dot-product attention)

      ei=sThiRe_i = s^Th_i\in R

      • 注意这里e和s的向量大小要是相同的
      • 我们上节课说的attention就是这种计算方式
    • 中间乘上权值矩阵(Multiplicative attention)

      ei=sTWhiRe_i = s^TWh_i \in R

      • WRd2×Rd1W \in R^{d_2 \times R^{d_1}}为权重矩阵
    • h和s分别乘不同的矩阵后相加(Addictive attention)

      ei=vTtanh(W1hi+W2s)e_i = v^Ttanh(W_1h_i+W_2s)

      • 其中,W1Rd3×d1W_1 \in R^{d_3 \times d_1}, W2Rd3×d2W_2 \in R^{d_3 \times d_2}为权重矩阵,vRd3v \in R^{d_3}为权重向量

    更多信息,可以查看Deep Learning for NLP Best Practices


    Attention的应用:Pointing to words for language modeling

    思路:softmax与pointer混合

    Pointer Sentinel Mixture Models
    0_1531969078357_ed374125-8743-439b-847e-4116f2d92987-image.png

    Pointer-Sentinel Model

    0_1531969480755_579e91ae-52a0-449f-8b7b-7d3948651f49-image.png
    0_1531969598076_9333d84e-15a7-4491-b058-3897a7021de1-image.png


    Attention应用:Intra-Decoder attention for Summarization

    A Deep Reinforced Model for Abstractive Summarization
    0_1531969822013_97f8f7a1-cc2c-4e16-b872-29038f055e0e-image.png


    Attention应用:Similar Seq2Seq Idea as in Translation

    0_1531969984139_64e699bd-f0a7-4e54-ab82-b53f41c3407d-image.png


    还有很多attention的应用,这里不一一列举了。现在,我们先介绍一些能够提升机器翻译效果的tips & tricks。

    将NMT拓展到更多语言

    • 光是复制原理还不够

      • Transliteration: Christopher ↦ Kryštof
      • Multi-word alignment: Solar system ↦ Sonnensystem
    • 需要准备一个大词库

      • 丰富的语法
        • nejneobhospodařovávatelnějšímu - Czech = “to the worst farmable one”
        • Donaudampfschiffahrtsgesellschaftskapitän – German = Danube steamship company captain
      • 非正式的拼写: goooooood morning !!!!!

    解决大词表问题

    大词表加大了softmax的计算难度
    0_1531970591328_5769e591-9084-4a96-9ac0-ac5b17a292a0-image.png

    在早期的MT中,会使用较小的词表,但这样并不能说解决了问题:
    0_1531970719921_d193bdad-dcc9-48df-8cc5-6d87051c95c3-image.png

    另一种想法是缩小softmax大小,但这样对gpu不友好
    0_1531970814765_cfe20eb7-fbdf-4eff-9eae-27c776e90b33-image.png


    Large-vocab NMT

    这个方法的思路是,首先在大词表训练集的子集下训练模型,再在测试时添加一些技巧处理那些出现很少的词。

    Training
    每次都训练一个比原词库小很多的子集,训练多个子集
    0_1531971098389_5829a8dc-34e8-4a22-ba16-a692ff34a0fa-image.png

    例如,每次选取子集大小为5:
    0_1531971191735_0a09c625-b721-4704-80ad-692f2be8e642-image.png
    0_1531971217240_da92c5e5-7488-4495-9840-f4dcb47141cb-image.png
    0_1531971225528_6a0bf7c8-51a9-4f29-afc0-7189520b3018-image.png

    Test

    • 取k个出现频率最高的词 - unigram prob
      de, , la . et des les …
    • 每个词取k'个翻译候选单词
      0_1531971395512_2392f140-ab51-47b9-80a4-f135fe9ca049-image.png

    0_1531971502392_14d48027-e71e-47ca-99cf-b92ac9327078-image.png


    之后还说到了很多解决大词库的思路

    Byte Pair Encoding

    这种方法试图用分词的思想去找出所有有意义的“词素”,其统计方法说来也简单,就是在词频词表里统计所有的ngram组合作为新的更长的ngram:
    0_1531971726609_852ea8ad-544b-4c2d-8a8a-716651065d17-image.png


    字符级别的LSTM(character-based LSTM)

    0_1531971812894_084f1303-8c0d-479c-b73b-995c01f7c6eb-image.png


    Hybrid NMT

    另有一些混合动力的NMT,大部分情况下在词语级别做翻译,只在需要的时候从字符级去翻译。这个系统的主体是词语级别的LSTM,先在词语级别上做常规的柱搜索,当出现unknown词时,切换到char级别做柱搜索:
    0_1531971894974_b398431f-c24f-4d03-942e-0210a5760f84-image.png

    BLEU得分
    0_1531972018666_e8ff3495-c04e-4fb4-b41d-a2a7187330c4-image.png



  • Lecture12 - Transformer Networks and Convolutional Neural Networks

    Problems with RNNs = Motivation for Transformers

    • 连续计算阻止了平行化
      0_1531978477143_6cc314db-c754-45bc-8d33-29d728231ad1-image.png
    • 尽管有GRU和LSTM,RNN仍然需要attention机制来处理长距离的关系 - 状态间需要关系计算的长度随序列的增加而增加
    • 但,如果attention能使我们得到任意状态,那么其实我们并不需要RNN?

    Transformer概述

    • Sequence-to-sequence
    • Encoder-Decoder
    • Task: machine translation with parallel corpus(平行语料)
    • Predict each translated word
    • Final cost function is standard cross-entropy loss on top of a softmax classifier

    0_1531978728127_05dd8915-607d-476b-b0a5-20fa417c1cfb-image.png


    在这里不得不说这篇非常有名的论文,Attention Is All You Need,Transformer也是出自这篇论文。

    Transformer Basics

    我们首先定义一个transformer的基础部分:attention layers

    Dot-Product Attention

    这里我们使用的是Dot-Product Attention。

    • 输入:query q和指向输出output的key-value对的集合
    • query, keys, values, output都是向量
    • output是values的权重计算结果,其中
      • 每一个value的权重都由一个内部产生的query以及相应的key计算出
      • queries和keys都有相同的维度d_k, value的维度为d_v

    A(q,K,V)=ieqkijeqkjviA(q, K, V) = \sum_i\frac {e^{q\cdot k_i}}{\sum_je^{q\cdot k_j}}v_i

    当我们有query的集合Q,Q就是一个矩阵,上式变成:

    A(Q,K,V)=softmax(QKT)VA(Q,K,V) = softmax(QK^T)V

    0_1531981013480_49e52467-686b-47d2-9bcf-c0086b922f50-image.png


    Scaled Dot-Product Attention

    这里出现了一个问题,当d_k特别大时,q^Tk的变化就会很大,softmax中的一些值就会变得很大,softmax也就会变得很大,因此它的梯度会变小。

    解决方法
    里面除以query/key向量的长度的平方根来缩小softmax内值的大小。

    A(Q,K,V)=softmax(QKTdk)VA(Q,K,V) = softmax(\frac{QK^T}{\sqrt{d_k}})V

    0_1531981353252_360e50ee-4e0e-4ae0-a765-c9922b780b8f-image.png


    Self-attention and Multi-head attention

    • 输入的词向量可以是queries,keys,values
    • 换言之,词向量间互相选择
    • Word vector stack = Q = K = V

    问题:只有一种方式能使词之间互相影响
    解决方式:Multi-head attention

    • 首先将Q, K, V放入h个W矩阵的空间中
    • 再应用attention,将attention的输出concat到一起,然后经过一个线性层。

    0_1531982281168_8eb71577-ccb9-4ada-a5d0-f2aa5e7afaeb-image.png

    0_1531982335988_7f1f920d-d427-4317-be59-3047b27a1338-image.png


    Complete transformer block

    • 每一个block有两个"sublayers"
      1. Multihead attention
      2. 2 layer feed-forward Nnet (with relu)

    0_1531982703822_1140e30f-f126-4fe2-8c3a-38aca3441988-image.png

    这两层之间还包括:

    • Residual(short-circuit) connection and LayerNorm
      • LayerNorm(x + Sublayer(x))
      • Layernorm改变输入,将输出的方差为1,均值为0

    0_1531983029908_91da9883-4131-4021-a265-e93ec44dc1d3-image.png
    这部分Layer Normalization可见这篇论文:
    Layer Normalization by Ba, Kiros and Hinton


    Encoder Input

    • 词的表示使用的是byte-pair encodings(见上一篇lecture)
      0_1531983249082_c4c62feb-9b45-4731-be99-d2742a8cb6f2-image.png
    • 同时也加入了positional encoding,这样同样的词在不同的位置会有不同的表示。
      0_1531983357748_ede1e158-248a-4702-8c75-b22c6d26ff2e-image.png

    Complete Encoder

    • 在Encoder的每一块中,我们使用了与前一层相同的Q,K,V
    • blocks重复6次
      0_1531983562579_22cb5672-4ea3-4aad-9798-5ea5c832f795-image.png

    layer5的attention可视化

    0_1531984015977_8bc1274f-9225-46f0-a94c-f15a5a84f97a-image.png
    可以看到,词开始注意到了其它词。

    attention可视化: 隐藏的指代分辨

    0_1531984119578_27cd9bea-a7f4-4fbf-8eb6-ff170aff6f03-image.png
    在layer5中,it's对它所指代的词law的attention已经很大了。


    Transformer Decoder

    0_1531978728127_05dd8915-607d-476b-b0a5-20fa417c1cfb-image.png

    • decoder中不再是2个sublayer
    • masked decoder self-attention on previously generated outputs:
      0_1531984978584_b9ba5342-b561-4bb7-b470-445a7000e484-image.png
    • Encoder-Decoder的attention,query来自前一层decoder layer,keys和values来自encoder的输出
      0_1531985086237_0e126a9d-ed4e-452c-8a53-69b7c18df43c-image.png
    • blocks也会重复6次

    Tips and tricks of the Transformer

    在All Attention论文中提到的一些特性:

    • Byte-pair encodings
    • Checkpoint averaging
    • ADAM optimizer with learning rate changes
    • Dropout during training at every layer just before adding residual
    • Label smoothing
    • Auto-regressive decoding with beam search and length penalties
    • 总之,模型很难部署,同时不像LSTM一样,all attention很难在其他block结构中表现好

    CNN

    • CNN的主要思想:如果我们为语料中的每种可能的短语计算多种向量会怎样?
    • 不管怎样,短语是符合语法规则的,CNN得到的短语也是符合的
    • 示例:the country of my birth可以计算的向量有:
      the country, country of, of my, my birth, the country of, country of my, of my birth, the country of my, country of my birth
    • 然后把这些向量分组
    • 这样做从语言学上来说不是很可信,但是计算非常快

    什么是卷积

    这里就不做介绍了
    0_1531986015212_475231f2-25ca-40d6-8e2a-5c12b4264a04-image.png

    单层CNN - 卷积层

    • 使用了一层卷积层和池化层的简单结构

    • 基于"Convolutional Neural Networks for Sentence Classification" (TextCNN)

    • Word vectors

      xiRkx_i \in R^k

    • Sentence(就是直接把词向量concat到一起)

      x1:n=x1x2...xnx_{1:n}=x_1\oplus x_2 \oplus ... \oplus x_n

    • Concatenation of words in range:

      xi:i+jx_{i:i+j}

      就是把j个词的向量加在一起做卷积

    • Convolutional filter:

      wRhkw \in R^{hk}

      这里用一个大小为h的window来扫过句子

    • 卷积核可以是2或者更高,比如3:
      0_1531986605446_628e9077-83f4-4f96-a06e-cdd0395fe1c2-image.png

    • 计算得到卷积层的值

      ci=f(WTxi:i+h1+b)c_i = f(W^Tx_{i:i+h-1}+b)

    • 把多个c放到一个数组中,构成一个feature map

      c=[c1,c2,...,cnh+1]Rnh+1c = [c_1, c_2,...,c_{n-h+1}] \in R^{n-h+1}

      0_1531987240258_cfed3270-b0a4-4ca4-bdf6-3a30abe9227c-image.png


    池化层

    • max-over-time pooling layer

    • 思想:从feature map

      c=[c1,c2,...,cnh+1]Rnh+1c=[c_1,c_2,...,c_{n-h+1}]\in R^{n-h+1}

    捕捉最重要的特性

    • 池化单个数:

      c^=max{c}\hat c = max\lbrace c\rbrace

    这样就可以得到卷积层提取出的特征了,但我们希望得到更多的特征,怎么办?


    Multiple filters

    • 使用多个filter size来构建多个大小的窗口
    • 因为用的是max-pooling,c的长度不受限制,因此我们可以使用多个不同的size,就像n-gram一样。

    Multi-channel(多通道) 思想

    TextCNN有几种:

    • CNN-rand: 句子中的的word vector都是随机初始化的,同时当做CNN训练过程中需要优化的参数;
    • CNN-static: 句子中的word vector是使用word2vec预先对语料库进行训练好的词向量表中的词向量。且在CNN训练过程中作为固定的输入,不作为优化的参数;
    • CNN-non-static: 句子中的word vector是使用word2vec预先对语料库进行训练好的词向量表中的词向量。在CNN训练过程中作为固定的输入,做为CNN训练过程中需要优化的参数;

    这里说的是用word2vec训练的static TextCNN

    • 使用预训练的词向量进行初始化(Word2Vec或Glove)
    • 使用两个CNN copies
    • 只反向传播一个CNN,保持另外一个为'static'
    • 两个通道的结果都加到c_i中,再进行max-pooling

    CNN层之后进行分类

    多个filter得到的max-pooling结果构成一个向量:

    z=[c^1,...,c^m]z = [\hat c_1,...,\hat c_m]

    最后再加上softmax层得到归一化概率:

    y=softmax(W(s)z+b)y = softmax(W^{(s)}z+b)


    TextCNN

    0_1531988312389_127b1e94-6c76-4208-a373-1adb3024183c-image.png

    这是Kim在2014年论文中提到的TextCNN结构。


    让模型效果更好的tricks - Dropout

    • 思想:随机将隐藏层中的部分特征移除

    • 随机构建一个伯努利矩阵r。r可以控制哪些特征要被drop

    • 在训练的时候删除部分特征

      y=softmax(W(s)(rz)+b)y = softmax(W^{(s)}(r\circ z)+b)

    • 因此在训练的时候,只会通过r中等于1的部分影响梯度进行反向传播

    • 为什么要Dropout?
      可以防止过拟合
    • 来源:Paper: Hinton et al. 2012: Improving neural networks by preventing co-adaptation of feature detectors

    另一个trick - regularization

    • 使用l2正则来正则化每个分类的权重向量,使其适配一个超参数s
    • 如果 $$||W_c^{(s)}|| > s$$, 将其缩小至s
      Wc(s)=s||W_c^{(s)}|| = s
    • 这种方法不是很常见

    kim的TextCNN中的一些超参数

    • 非线性激活函数: Relu
    • Window Filter sizes h = 3, 4, 5
    • 每个filter size有100个feature map
    • Dropout p = 0.5
    • L2正则的softmax约束超参数s = 3
    • SGD training的batch size为50
    • 词向量:预训练的word2vec,维度为300

    0_1531990389588_8f1e53c6-2d95-45ee-84a8-e46c9c46c9a7-image.png


    0_1531990412321_94050c5d-b0b6-4b9c-b36f-6c877f3c26a9-image.png



  • Lecture13 - Coreference Resolution

    What is Coreference Resolution

    分辨语言中代词所指的实体。

    0_1532587105840_329f86f1-c25f-4fa5-8362-e63fcfbe4bb5-image.png

    0_1532587193511_ea6b3604-82e3-49e6-8663-ba5b3b5dc1b3-image.png

    0_1532587285920_16929b79-e0ef-4399-9726-c36af57976ce-image.png

    Applications

    • Full text understanding
      • information extraction, question answering, summarization, ...
    • Machine trainslation
      • 语言中有很多隐藏的信息如性别代词数字等
        0_1532587512944_34d6868f-5828-4366-b77f-98f555f39ba0-image.png
    • Dialogue Systems
      • "Book tickets yo see James Bond"
      • "Two tickets for the showing at three"

    Coreference Resolution非常难

    • “She poured water from the pitcher into the cup until it was full”
    • “She poured water from the pitcher into the cup until it was empty”
    • The trophy would not fit in the suitcase because it was too big.
    • The trophy would not fit in the suitcase because it was too small

    以上的这些例子叫做 Winograd Schema

    • WS最近被提议作为图灵测试中的一项
      • Turing test: 人类无法分辨出聊天的人是人类还是机器,则说明我们建立了AI系统
    • 如果我们完全解决了coreference问题,可能我们就解决了AI问题

    Coreference Resolution的两步

    1. 检测出代词 (easy)
      “[I] voted for [Nader] because [he] was most aligned with [[my] values],” [she] said

      • 代词是可以嵌套的
    2. 给代词聚类 (hard)

      • I, my, she
      • Nader he
      • my values

    Mention Detection

    Three kind of mentions:

    1. Pronouns
      • I, your, it, she, him, etc.
    2. Named entities
      • People, places, etc.
    3. Noun phrases
      • "a dog", "the big fluffy cat stuck in the tree"

    Use other NLP systems for detection

    1. Pronouns
      • Use a part-of-speech tagger
    2. Named entities
      • Use a NER system (like hw3)
    3. Noun phrases
      • Use a constituency parser (next lecture)

    后面有点无聊,都不写了



  • Lecture14



  • Lecture15



  • Lecture16



  • Lecture17



  • Lecture18



  • 完结撒花!!!!!

    🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼


 

Copyright © 2018 bbs.dian.org.cn All rights reserved.

与 Dian 的连接断开,我们正在尝试重连,请耐心等待