• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

斯坦福大学自然语言处理课程|第三讲-神经网络知识回顾


Recommended Posts

yrp5g32wgki5008.png

作者:韩@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI

教程地址:http://www.showmeai.tech/tutorials/36

本文地址:http://www.showmeai.tech/article-detail/235

免责声明:保留所有权利。请联系平台和作者并注明出处。

收藏ShowMeAI查看更多精彩内容。

神经网络知识回顾

ShowMeAI为斯坦福CS224n0103 010课程所有课件制作了中文翻译和注释,并制作了GIF动画!

神经网络与反向传播

深度总结教程的这次演讲可以在这里.观看和录像课件等。可以在文末.找到

引言

CS224n是顶尖大学斯坦福出品的深度学习和自然语言处理专业课程。核心内容涵盖RNN、LSTM、CNN、transformer、bert、Q & ampa、摘要、文本生成、语言模型与阅读理解。

本文是ShowMeAI对第三课内容的梳理,主要复习神经网络的知识,将基于NLP场景结合讲解。

Word  Window  Classification, Neural  Networks, and  PyTorch

本篇内容覆盖

神经网络基金会

命名实体识别

基于窗口数据的预测

基于pytorch的分类器

Word  Window  Classification, Neural  Networks, and  PyTorch

1. 神经网络基础

1.1 分类问题基础

分类问题基础

对于分类问题,我们有一个训练数据集:它由一些样本组成\ (\ {x _ i,y _ i \} _ {i=1} {n} \)

\(x_i\)是输入,如单词(索引或向量)、句子、文档等。(尺寸\(d\))

\(y_i\)是我们试图预测的标签(属于\(C\)类别之一),例如:

类别:感觉、命名实体、购买/销售决策

换句话说

多词序列(后面会提到)

1.2 分类问题直观理解

分类问题直观理解

训练数据\ (\ {x _ i,y _ i \} _ {i=1} {n} \),以最简单的2维词向量分类问题为案例,利用softmax/logistic回归构建线性决策边界。

传统的

机器学习/统计学方法:

假设 \(x_i\) 是固定的,训练 softmax/logistic 回归的权重 \(W \in R^{C \times d}\) 来决定决定边界(超平面)

预测阶段,对每个 \(x\) ,预测:

\[p(y \mid x)=\frac{\exp (W_y \cdot x)}{\sum_{c=1}^{C} \exp (W_c \cdot x)} \]

1.3 softmax分类器的细节

softmax分类器的细节

我们可以将预测函数分为两个步骤:

  • 将 \(W\) 的 \(y^{th}\) 行和 \(x\) 中的对应行相乘得到分数:

\[W_{y} \cdot x=\sum_{i=1}^{d} W_{y i} x_{i}=f_{y} \]

  • 对  \(c=1, \cdots ,C\) ,计算 \(f_c\)

  • 使用softmax函数获得归一化的概率:

\[p(y \mid x)=\frac{\exp (f_y)}{\sum_{c=1}^{C} \exp (f_c)}=softmax(f_y) \]

1.4 softmax和交叉熵损失

softmax和交叉熵损失

在softmax分类器中最常用到交叉熵损失,也是负对数概率形态。

对于每个训练样本 \((x,y)\) ,我们的目标是最大化正确类 \(y\) 的概率,或者我们可以最小化该类的负对数概率

\[-\log p(y \mid x)=-\log (\frac{\exp(f_y)}{\sum_{c=1}^{C} \exp (f_c)}) \]

使用对数概率将我们的目标函数转换为求和形态,这更容易在推导和应用中使用。

1.5 交叉熵损失理解

交叉熵损失理解

交叉熵的概念来源于信息论,衡量两个分布之间的差异

  • 令真实概率分布为 \(p\) ,我们计算的模型概率分布为 \(q\)
  • 交叉熵为

\[H(p, q)=-\sum_{c=1}^{C} p(c) \log q(c) \]

假设标准答案的概率分布是,在正确的类上为 \(1\) ,在其他类别上为 \(0\) :

\[p=[0, \cdots ,0,1,0, \cdots ,0] \]

因为 \(p\) 是独热向量,所以唯一剩下的项是真实类的负对数概率。

1.6 完整数据集上的分类

完整数据集上的分类

在整个数据集 \(\{x_i , y_i \}_{(i=1)}^N\) 上的交叉熵损失函数,是所有样本的交叉熵的均值

\[J(\theta)=\frac{1}{N} \sum_{i=1}^{N}-\log \left(\frac{e^{f_{y_{i}}}}{\sum_{c=1}^{C} e^{f_{c}}}\right) \]

不使用 \(f_y=f_y(x)=W_y \cdot x=\sum_{j=1}^{d} W_{yj} x_j\) ,而是使用向量化的形态,基于矩阵来表示 \(f:f=Wx\) 。

1.7 传统的机器学习优化算法

传统的机器学习优化算法

对于传统的机器学习算法(如逻辑回归)来说,一般机器学习的参数 \(\theta\) 通常只由 \(W\) 的列组成

\(\theta=\left[\begin{array}{c}{W_{\cdot 1}} \\ {\vdots} \\ {W_{\cdot d}}\end{array}\right]=W( :) \in \mathbb{R}^{C d}\)

因此,我们只通过以下方式更新决策边界

\[\nabla_{\theta} J(\theta)=\left[\begin{array}{c}{\nabla_{W_{1}}} \\ {\vdots} \\ {\nabla_{W_{d}}}\end{array}\right] \in \mathbb{R}^{C d} \]

1.8 神经网络分类器

神经网络分类器

  • 单独使用线性分类器Softmax( ≈ logistic回归)并不十分强大

  • 如上图所示,Softmax得到的是线性决策边界

    • 对于复杂问题来说,它的表达能力是有限的
    • 有一些分错的点,需要更强的非线性表达能力来区分

1.9 神经网络非线性切分

神经网络非线性切分

  • 神经网络可以学习更复杂的函数和非线性决策边界

  • tip :更高级的分类需要

    • 词向量
    • 更深层次的深层神经网络

1.10 基于词向量的分类差异

基于词向量的分类差异

  • 一般在NLP深度学习中:

    • 我们学习了矩阵 \(W\) 和词向量 \(x\) 。
    • 我们学习传统参数和表示。
    • 词向量是对独热向量的重新表示——在中间层向量空间中移动它们——以便 (线性)softmax分类器可以更好地分类。
  • 即将词向量理解为一层神经网络,输入单词的独热向量并获得单词的词向量表示,并且我们需要对其进行更新。

\[\nabla_{\theta} J(\theta)=\left[\begin{array}{c}{\nabla_{W_{1}}} \\ {\vdots} \\ {\nabla_{W_{d a r d v a r k}}} \\ {\vdots} \\ {\nabla_{x_{z e b r a}}}\end{array}\right] \in \mathbb{R}^{C d + V d} \]

  • 其中, \(Vd\) 是数量很大的参数。

1.11 神经计算

神经计算

  • An artificial neuron

    • 神经网络有自己的术语包
    • 但如果你了解 softmax 模型是如何工作的,那么你就可以很容易地理解神经元的操作
  • Neural computation:神经计算

  • Neural selectivity:神经选择性

  • Hierarchy of neural processing:神经处理层次

1.12 单个神经元:可视作二元逻辑回归单元

单个神经元:可视作二元逻辑回归单元

\[h_{w, b}(x)=f(w^{T}x+b) \]

\[f(z)=\frac{1}{1+e^{-z}} \]

  • \(b\) :我们可以有一个“总是打开”的特性,它给出一个先验类,或者将它作为一个偏向项分离出来。
  • \(w\) , \(b\) 是神经元的参数。

1.13 一个神经网络:多个逻辑回归组合

一个神经网络:多个逻辑回归组合

  • 如果我们输入一个向量通过一系列逻辑回归函数,那么我们得到一个输出向量。
  • 但是我们不需要提前决定这些逻辑回归试图预测的变量是什么。

一个神经网络:多个逻辑回归组合

  • 我们可以输入另一个logistic回归函数。
  • 损失函数将指导中间隐藏变量应该是什么,以便更好地预测下一层的目标。

一个神经网络:多个逻辑回归组合

我们添加更多层的神经网络,就得到了多层感知器。

1.14 单层神经网络的矩阵形态表示

单层神经网络的矩阵形态表示

\[a_{1}=f(W_{11} x_{1}+W_{12} x_{2}+W_{13} x_{3}+b_{1}) \]

\[a_{2}=f(W_{21} x_{1}+W_{22} x_{2}+W_{23} x_{3}+b_{2}) \]

\[z=Wx+b \]

\[a=f(z) \]

\[f([z_{1}, z_{2}, z_{3}])=[f(z_{1}), f(z_{2}), f(z_{3})] \]

  • \(f(x)\) 在运算时是 element-wise 逐元素的

1.15 非线性变换的必要性

非线性变换的必要性

  • 例如:函数近似,如回归或分类

    • 没有非线性,深度神经网络只能做线性变换
    • 多个线性变换,也还是组成一个线性变换 \(W_1 W_2 x=Wx\)
  • 因为线性变换是以某种方式旋转和拉伸空间,多次的旋转和拉伸可以融合为一次线性变换

  • 对于非线性函数而言,使用更多的层,他们可以近似更复杂的函数

2.命名实体识别

2.1 命名实体识别(NER)

命名实体识别(NER)

  • 可能的用途

    • 跟踪文档中提到的特定实体(组织、个人、地点、歌曲名、电影名等)
    • 对于问题回答,答案通常是命名实体
    • 许多需要的信息实际上是命名实体之间的关联
    • 同样的技术可以扩展到其他 slot-filling 槽填充分类
  • 通常后面是命名实体链接/规范化到知识库

2.2 句子中的命名实体识别

句子中的命名实体识别

我们通过在上下文中对单词进行分类,然后将实体提取为单词子序列来预测实体。

2.3 NER的难点

NER的难点

  • 很难计算出实体的边界

    • 第一个实体是 “First National Bank” 还是 “National Bank”
  • 很难知道某物是否是一个实体

    • 是一所名为“Future School” 的学校,还是这是一所未来的学校?
  • 很难知道未知/新奇实体的类别

    • “Zig Ziglar” ? 一个人
  • 实体类是模糊的,依赖于上下文

    • 这里的“Charles Schwab” 是 PER 不是 ORG

3.基于窗口数据的分类预测

3.1. 词-窗分类

词-窗分类

  • 思路:为在上下文中的语言构建分类器

    • 一般来说,很少对单个单词进行分类
  • 例如,上下文中一个单词的命名实体分类

    • 人、地点、组织、没有
  • 在上下文中对单词进行分类的一个简单方法,可能是对窗口中的单词向量进行平均,并对平均向量进行分类

    • 问题:这会丢失位置信息

3.2 窗口分类器:softmax

窗口分类器:softmax

  • 训练softmax分类器对中心词进行分类,方法是在一个窗口内将中心词周围的词向量串联起来

  • 例子:在这句话的上下文中对“Paris”进行分类,窗口长度为2

  • 结果向量 \(x_{window}=x \in R^{5d}\) 是一个列向量

3.3 最简单的窗口分类器:Softmax

最简单的窗口分类器:Softmax

对于 \(x=x_{window}\) ,我们可以使用与之前相同的softmax分类器

如何更新向量?

  • 简而言之:就像之前讲的那样,求导和优化

3.4 稍微复杂一点:多层感知器

稍微复杂一点:多层感知器

  • 假设我们要对中心词是否为一个地点,进行分类

  • 与word2vec类似,我们将遍历语料库中的所有位置。但这一次,它将受到监督,只有一些位置能够得到高分。

    • 例如,在他们的中心有一个实际的NER Location的位置是“真实的”位置会获得高分

3.5 神经网络前馈计算

神经网络前馈计算

使用神经激活 \(a\) 简单地给出一个非标准化的分数

\[score(x)=U^{T} a \in \mathbb{R} \]

我们用一个三层神经网络计算一个窗口的得分

\[s = score("museums \ in \ Paris \ are \ amazing”) \]

\[s=U^{T} f(W x+b) \]

  • \(x \in \mathbb{R}^{20 \times 1}\)
  • \(W \in \mathbb{R}^{8 \times 20}\)
  • \(U \in \mathbb{R}^{8 \times 1}\)

之前的例子

\[X_{window} = [X_{museums} \quad X_{in} \quad X_{paris} \quad X_{are} \quad X_{amazing}] \]

3.6 附加层

附加层

中间层学习输入词向量之间的非线性交互

\[X_{window} = [X_{museums} \quad X_{in} \quad X_{paris} \quad X_{are} \quad X_{amazing}] \]

例如:只有当“museum”是第一个向量时,“in”放在第二个位置才重要

4.基于pytorch实现的分类器

4.1 使用合页损失替换

使用合页损失替换

使用合页损失替换

关于训练目标的想法:让真实窗口的得分更高,而其他窗口的得分更低(直到足够好为止)

\[s = score(museums \quad in \quad Paris \quad are \quad amazing) \]

\[s_c = score(Not \quad all \quad museums \quad in \quad Paris) \]

最小化: \(J=max(0,1-s+s_c)\)

这是不可微的,但它是连续的 → 我们可以用SGD

补充解析

  • 单窗口的目标函数为 \(J=max(0,1-s+s_c)\)
  • 每个中心有NER位置的窗口的得分应该比中心没有位置的窗口高1分
  • 要获得完整的目标函数:为每个真窗口采样几个损坏的窗口。对所有训练样本窗口求和
  • 类似于word2vec中的负抽样

4.2 随机梯度下降

随机梯度下降使用SGD更新参数

\[\theta ^{new}= \theta ^{old}-\alpha \nabla_{\theta} J(\theta) \]

  • \(\alpha\) 是 步长或是学习率

4.3 课堂手推

Gradients,Jacobian Matrix: Generalization of the Gradient

Chain Rule,Example Jacobian: Elementwise activation Function

Other Jacobians,Back to our Neural Net!,Break up equations into simple pieces

Apply the chain rule

Derivative with respect to Matrix: Output shape,Derivative with respect to Matrix

Why the Transposes?,What shape should derivatives be?

反向传播

5.视频教程

可以点击 B站 查看视频的【双语字幕】版本

6.参考资料

  • 本讲带学的在线阅翻页本
  • 《斯坦福CS224n深度学习与自然语言处理》课程学习指南
  • 《斯坦福CS224n深度学习与自然语言处理》课程大作业解析
  • 双语字幕视频】斯坦福CS224n | 深度学习与自然语言处理(2019·全20讲)
  • Stanford官网 | CS224n: Natural Language Processing with Deep Learning

ShowMeAI系列教程推荐

  • 大厂技术实现 | 推荐与广告计算解决方案
  • 大厂技术实现 | 计算机视觉解决方案
  • 大厂技术实现 | 自然语言处理行业解决方案
  • 图解Python编程:从入门到精通系列教程
  • 图解数据分析:从入门到精通系列教程
  • 图解AI数学基础:从入门到精通系列教程
  • 图解大数据技术:从入门到精通系列教程
  • 图解机器学习算法:从入门到精通系列教程
  • 机器学习实战:手把手教你玩转机器学习系列
  • 深度学习教程 | 吴恩达专项课程 · 全套笔记解读
  • 自然语言处理教程 | 斯坦福CS224n课程 · 课程带学与全套笔记解读

NLP系列教程文章

  • NLP教程(1)- 词向量、SVD分解与Word2vec
  • NLP教程(2)- GloVe及词向量的训练与评估
  • NLP教程(3)- 神经网络与反向传播
  • NLP教程(4)- 句法分析与依存解析
  • NLP教程(5)- 语言模型、RNN、GRU与LSTM
  • NLP教程(6)- 神经机器翻译、seq2seq与注意力机制
  • NLP教程(7)- 问答系统
  • NLP教程(8)- NLP中的卷积神经网络
  • NLP教程(9)- 句法分析与树形递归神经网络

斯坦福 CS224n 课程带学详解

  • 斯坦福NLP课程 | 第1讲 - NLP介绍与词向量初步
  • 斯坦福NLP课程 | 第2讲 - 词向量进阶
  • 斯坦福NLP课程 | 第3讲 - 神经网络知识回顾
  • 斯坦福NLP课程 | 第4讲 - 神经网络反向传播与计算图
  • 斯坦福NLP课程 | 第5讲 - 句法分析与依存解析
  • 斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型
  • 斯坦福NLP课程 | 第7讲 - 梯度消失问题与RNN变种
  • 斯坦福NLP课程 | 第8讲 - 机器翻译、seq2seq与注意力机制
  • 斯坦福NLP课程 | 第9讲 - cs224n课程大项目实用技巧与经验
  • 斯坦福NLP课程 | 第10讲 - NLP中的问答系统
  • 斯坦福NLP课程 | 第11讲 - NLP中的卷积神经网络
  • 斯坦福NLP课程 | 第12讲 - 子词模型
  • 斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型
  • 斯坦福NLP课程 | 第14讲 - Transformers自注意力与生成模型
  • 斯坦福NLP课程 | 第15讲 - NLP文本生成任务
  • 斯坦福NLP课程 | 第16讲 - 指代消解问题与神经网络方法
  • 斯坦福NLP课程 | 第17讲 - 多任务学习(以问答系统为例)
  • 斯坦福NLP课程 | 第18讲 - 句法分析与树形递归神经网络
  • 斯坦福NLP课程 | 第19讲 - AI安全偏见与公平
  • 斯坦福NLP课程 | 第20讲 - NLP与深度学习的未来

1szwlos430a5049.gif

Link to comment
Share on other sites