李宏毅-人类语言处理

https://speech.ee.ntu.edu.tw/~hylee/ml/2022-spring.php

  • RNN GNN 补充深度学习没有学到的地方

机器学习 sequence补充

self-attention

输入是一个sequence且长度会改变

  • 句子的表示[ 词汇 词汇 词汇 ] 词汇用vector表示
    • word embedding 给每一个词汇一个向量,一个句子就是一排长度不一的向量(frame)
  • 图也是一个向量的组合,每个node是一个向量
    输出类型
  • 输入输出数量一样:每个向量都有一个对应的label,比如每一个词汇要对应什么样的词性的任务(词性标记),或者决定每个语音词对应的phenoic
  • 输入一串向量(sequence),输出一个向量:分析句子的性质(pos,neg),分析一段声音是谁讲的
  • 不知道要输出多少label,输入n,输入n:S2S,sqe2seq,比如翻译,语音辨识

sequence labeling 输入=输出

用一个全连接层
问题,你想说一个词是saw,但是词性有两种,动词和名词,输出不会不一样,因为输入都一样。
解决,给一整个window的信息,让model考虑上下文
但是这样信息太少,如果有需要一整个Seq的词就运算量太大,还容易过拟合??
解决->自注意力机制

自注意力机制 每个vector都考虑了整个seq的咨询


self-attention层可以多次叠加

input:一串向量Ax
output:另外一串向量Bx(每个B都是考虑每个A产生的)

Bx是怎么由Ax生成的?
先判断整个seq里哪些vector(a)跟a1有关系,- - ==用阿尔法表示a1与a的关系程度==
求阿尔法:
dot-product:点积法,最常用

- 分别计算a1与a2,a3,a4的相关性,在实操的时候a1求 与自己 的关联性阿尔法1,1

- 做一个softmax,输出是一排向量

  • 根据关联性数组抽取seq中的重要vector
    • 如果跟a1的关联性特别高,那么b1就会特别像a2(假设这里a1,a2的关联性特别高)

语音识别

总览

输入:声音,一串向量
输出:一系列token
输入>>输出

  • 输入:token
    • phoneme 发音的基本单位
      • lexicion:记录了文字和phoneme的关系
    • grapheme 书写的基本单位(比如26个英文字母+{ __ }(space)+标点符号
      • 中文的graphem没有空白space
    • word 词汇
      • 英文有空白分割词汇,中文没有,而且词汇的V会非常大,一个语言会有很多词汇,有的语言没法穷举词汇
    • morpheme 有含义的基本单位
      • unbreakable->un break able
      • rekillable re kill able
    • bytes
  • 输出:
  • 怎么给输入进行处理

LAS(listen ,attend ,and spell)

  • listen encoder
    • 去除杂讯,抽出