其他分享
首页 > 其他分享> > 斯坦福NLP课程 | 第3讲 - 神经网络知识回顾

斯坦福NLP课程 | 第3讲 - 神经网络知识回顾

作者:互联网

作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI
教程地址http://www.showmeai.tech/tutorials/36
本文地址http://www.showmeai.tech/article-detail/235
声明:版权所有,转载请联系平台与作者并注明出处

收藏ShowMeAI查看更多精彩内容

神经网络知识回顾

ShowMeAI斯坦福CS224n《自然语言处理与深度学习(Natural Language Processing with Deep Learning)》课程的全部课件,做了中文翻译和注释,并制作成了GIF动图!

神经网络与反向传播

本讲内容的深度总结教程可以在这里 查看。视频和课件等资料的获取方式见文末

引言

CS224n是顶级院校斯坦福出品的深度学习与自然语言处理方向专业课程。核心内容覆盖RNN、LSTM、CNN、transformer、bert、问答、摘要、文本生成、语言模型、阅读理解等前沿内容。

本篇是ShowMeAI对第3课的内容梳理,内容主要是对神经网络知识回顾,会基于NLP的场景做一点结合讲解。

Word Window Classification, Neural Networks, and PyTorch

本篇内容覆盖

Word Window Classification, Neural Networks, and PyTorch

1. 神经网络基础

1.1 分类问题基础

分类问题基础

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

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} \cdot x=\sum_{i=1}^{d} W_{y i} x_{i}=f_{y} \]

\[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 交叉熵损失理解

交叉熵损失理解

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

\[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 神经网络分类器

神经网络分类器

1.9 神经网络非线性切分

神经网络非线性切分

1.10 基于词向量的分类差异

基于词向量的分类差异

\[\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} \]

1.11 神经计算

神经计算

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

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

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

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

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

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

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

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

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

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})] \]

1.15 非线性变换的必要性

非线性变换的必要性

2.命名实体识别

2.1 命名实体识别(NER)

命名实体识别(NER)

2.2 句子中的命名实体识别

句子中的命名实体识别

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

2.3 NER的难点

NER的难点

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

3.1. 词-窗分类

词-窗分类

3.2 窗口分类器:softmax

窗口分类器:softmax

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

最简单的窗口分类器:Softmax

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

如何更新向量?

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

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

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_{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

补充解析

4.2 随机梯度下降

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

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

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.参考资料

ShowMeAI系列教程推荐

NLP系列教程文章

斯坦福 CS224n 课程带学详解

标签:NLP,教程,斯坦福,神经网络,课程,向量
来源: https://www.cnblogs.com/showmeai/p/16220044.html