这里写自定义目录标题
- 1、前言
- 2、静态词向量-word2vec
- 2.1 CBOW
- 2.2 Skip-gram
- 3、动态词向量
- 4、对比
- 欢迎使用Markdown编辑器
- 新的改变
- 功能快捷键
- 合理的创建标题,有助于目录的生成
- 如何改变文本的样式
- 插入链接与图片
- 如何插入一段漂亮的代码片
- 生成一个适合你的列表
- 创建一个表格
- 设定内容居中、居左、居右
- SmartyPants
- 创建一个自定义列表
- 如何创建一个注脚
- 注释也是必不可少的
- KaTeX数学公式
- 新的甘特图功能,丰富你的文章
- UML 图表
- FLowchart流程图
- 导出与导入
- 导出
- 导入
# 静态、动态词向量
1、前言
自然语言处理(Natural Language Processing,NLP)是一门计算机科学领域与人工智能领域的交叉学科。它研究的是如何通过计算机处理和理解人类语言。NLP的目标是使计算机能够理解、解释、生成和与人类语言互动。但就像阅读文章一样,人类也是先认识理解一个个词,结合语法结构并结合上下文,才能理解一篇文章的内容。但AI或者说计算机,它能处理的只有二进制数字。那如何才能让AI理解人类的文字及其背后的含义,使其能满足人的需求呢。
最简单的方法就是给每个文字赋予一个独立的数字,这样子就能将一篇文字文章,转换为AI能识别的一长串数字了。
但是这里就会出现至少两个问题:
- 量级过大。以英语为例,牛津英语词典收录有60w个单词,人类都鲜少有人能全部认识。将如此数量的文字分别赋予一个独立的数字表示,对于计算机存储相关关系都是一个较为困难的事情,更何况还有更加复杂的语法和上下文学习。
- 关联缺失。词语中存在一些关联关系较强(基本一起出现)、意义相近(同义词)、意义相反(反义词)等关系,通过人为或者随机进行数字标识时,很难或者基本不可能考虑到所有情况,这就是的每个文字都将成为孤立的个体,这也而会导致部门信息的丢失,不利于AI理解。
2、静态词向量-word2vec
本章节将主要介绍word2vec这一静态词向量转换方法。Word2Vec是一个将词汇表示为向量的模型,由Google在2013年发布。它是一个用于自然语言处理的关键技术,特别是在理解词语间的语义关系方面表现出色。也正是凭借这一技术,使得谷歌当年在浏览器的搜索速度及质量傲视群雄。Word2Vec包括了两个模型,分别为CBOW(Continuous Bag of Words)模型以及Skip-gram模型。
2.1 CBOW
给定一段文本。CBOW模型的基本思想是根据上下文对目标词进行预测。例如,对于文本
. . . w t − 2 w t − 1 w t w t + 1 w t + 2 . . . ...w_{t-2} w_{t-1} w_{t} w_{t+1} w_{t+2}... ...wt−2wt−1wtwt+1wt+2...,CBOW模型的任务是根据一定窗口大小内的上下文 C t C_t Ct(若取窗口大小为5,则 C t = { w t − 2 , w w t − 1 , w t + 1 , w t + 2 } C_t=\left\{ w_{t-2}, ww_{t-1}, w_{t+1}, w_{t+2}\right\} Ct={wt−2,wwt−1,wt+1,wt+2}对t时刻的词 w t w_t wt进行预测。因为CBOW模型不考虑上下文中单词的位置或者顺序,因此模型的的输入实际上是一个”词袋“而非序列,这也是其名字的由来。
但是,但并不意味着位置信息毫无用处。比如,融入位置信息之后所得到的词向量在语法相关的自然语言处理任务(如词性标注、依存句法分析)中表现更好。 这里只是对CBOW这一基础模型进行介绍。

上图为CBOW算法对应的前馈神经网络结构。与一版的前馈神经网络相比,CBOW模型的隐含层只是执行对词向量曾取平均的操作,而没有任何的线性变换以及非线性激活的过程。所以,也可以认为CBOW模型是没有隐含层的,这也是CBOW模型具有高训练效率的主要原因。
(1)输入层。以大小为5的上下文窗口为例,在目标词 w t w_t wt左右各取2个词作为模型的输入。输入层由4个维度为词表长度 ∣ V ∣ |V| ∣V∣的独热表示向量构成。
(2)词向量层。输入层中每个词的独热表示向量经由矩阵E映射至词向量空间:
v w i = E e w i v_{w_i}=Ee_{w_i} vwi=Eewi
w i w_i wi对应的词向量即为矩阵E中相应位置的列向量,E则为由所有词向量构成的矩阵。令 C t = { w t − k , . . . , w t − 1 , w t + 1 , . . . , w t + k } C_t=\left\{ w_{t-k}, ... ,w_{t-1}, w_{t+1}, ... , w_{t+k}\right\} Ct={wt−k,...,wt−1,wt+1,...,wt+k}表示 w t w_t wt的上下文单词集合,对 C t C_t Ct中所有词向量取平均,就得到了 w t w_t wt的上下文表示:
v C t = 1 ∣ C t ∣ ∑ w ∈ C t v w v_{C_t}=\frac{1}{|C_t|}\sum_{w\in C_t}v_w vCt=∣Ct∣1∑w∈Ctvw
(3)输出层。输出层根据上下文表示对目标词进行预测(分类),与前馈神经网络语言模型基本一致,唯一的不同在于丢弃了线性变换的偏置项。令 E ′ ∈ R ∣ V ∣ d E^{'} \in R^{|V|d} E′∈R∣V∣d为隐含层到输出层的权值矩阵,记 v w i ′ {v_{w_i}}^{'} vwi′为$ E^{'} 中与 中与 中与w_i 对应的行向量,那么输出 对应的行向量,那么输出 对应的行向量,那么输出w_t$的概率可有下式计算得到:
P ( w t ∣ C t ) = e x p ( v C t v w t ′ ) ∑ w ′ ∈ V e x p ( v C t ∗ v w ′ ′ ) P(w_t|C_t)=\frac{exp(v_{C_t} {v_{w_t}}^{'})}{\sum_{w^{'}\in V}exp(v_{C_t}*{v^{'}_{w^{'}}})} P(wt∣Ct)=∑w′∈Vexp(vCt∗vw′′)exp(vCtvwt′)
在CBOW模型的参数中,矩阵 E E E 和 E ′ E^{'} E′均可作为词向量矩阵,他们分别描述了词表中的词在作为上下文或目标时的不同性质。在实际中,通常只用 E E E就能满足应用需求。
2.2 Skip-gram
绝大多数词向量学习模型本质上都是在建立词与其上下文之间的联系。CBOW模型使用上下文窗口中词的集合作为输入预测目标词。skip-gram则在此基础上做了进一步的简化,其将CBOW中 C t C_t Ct的每个词作为独立的上下文对目标词进行预测,该模型建立的是词语此之间的共线关系,即 P ( w t + j ∣ w t ) P(w_{t+j}|w_t) P(wt+j∣wt),其中 j ∈ { ± 1 , . . . , ± k } j\in \left\{\pm1,...,\pm k \right\} j∈{±1,...,±k}。

依然以k=2为例,Skip-gram模型可以表示为上图的结构,其输入层是第t个字的独热编码,通过矩阵E投射到隐含层。
3、动态词向量
静态词向量的学习主要利用了语料库中词与词之间的共现信息。如基于局部上下文预测的word2vec算法,其本质上就是将一个词在整个语料库中的共现上下文信息聚合到该词的向量表示中。因此,在一个给定的语料库上训练得到的词向量可以认为是“静态”的,其向量表示永远都是恒定的,不会随着其(实际使用时)上下文的变化而变化。
为解决这一问题,研究人员提出了上下文相关的词向量,一个词的向量酱油i所在的上下文计算获得,因此是随这上下文而动态变化的。本文将主要讲述以bert为代表的预训练模型,双向LSTM等基础模型各位感兴趣自行查阅。
Bert的输入表示由三部分组成,分别为:词向量(token embeddings)、块向量(segment embeddings)和位置向量(position embeddings)之和组成。如下图所示。
且为了方便计算,再bert中,这三种向量维度均相同,因此可通过侠士计算输入文本(序列)对应的输入表示v:
v = v t + v s + v p v = v^t + v^s + v^p v=vt+vs+vp
其中, v t v^t vt表示词向量; v s v^s vs表示块向量, v p v^p vp表示位置向量。
(1)词向量。与前面模型类似,BERT中的词向量同样通过向量矩阵将输入文本转换成向量表示。假设输入序列x对应的独热编码表示为 e t ∈ R N ∗ ∣ V ∣ e^t \in R^{N*|V|} et∈RN∗∣V∣,其对应的词向量表示 v t v^t vt为:
v t = e t W t v^t=e^tW^t vt=etWt
其中, W t W^t Wt表示可训练的词向量矩阵。
(2)块向量。块向量用来编码当前词属于哪一个块(segment)。输入序列中每个词对应的块编码为当前词所在块的序号(从0开始计数)。
-
当输入序列是单块时(如单句的文本分类),所有词的块编码均为0;
-
当输入序列是两个块时(如两个句子是否相似),第一个句子的快编码为0,第二个为1。
(3)位置向量。位置向量用来编码每个词的绝对位置。将输入序列中的每个词按照其下标顺序依次转换为位置独热编码。
4、对比

静态词向量对比:
动态词向量对比:
欢迎使用Markdown编辑器
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
新的改变
我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:
- 全新的界面设计 ,将会带来全新的写作体验;
- 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
- 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
- 全新的 KaTeX数学公式 语法;
- 增加了支持甘特图的mermaid语法1 功能;
- 增加了 多屏幕编辑 Markdown文章功能;
- 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
- 增加了 检查列表 功能。
功能快捷键
撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
查找:Ctrl/Command + F
替换:Ctrl/Command + G
合理的创建标题,有助于目录的生成
直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC
语法后生成一个完美的目录。
如何改变文本的样式
强调文本 强调文本
加粗文本 加粗文本
标记文本
删除文本
引用文本
H2O is是液体。
210 运算结果是 1024.
插入链接与图片
链接: link.
图片:
带尺寸的图片:
居中的图片:
居中并且带尺寸的图片:
当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。
如何插入一段漂亮的代码片
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
// An highlighted block
var foo = 'bar';
生成一个适合你的列表
- 项目
- 项目
- 项目
- 项目
- 项目1
- 项目2
- 项目3
- 计划任务
- 完成任务
创建一个表格
一个简单的表格是这么创建的:
项目 | Value |
---|---|
电脑 | $1600 |
手机 | $12 |
导管 | $1 |
设定内容居中、居左、居右
使用:---------:
居中
使用:----------
居左
使用----------:
居右
第一列 | 第二列 | 第三列 |
---|---|---|
第一列文本居中 | 第二列文本居右 | 第三列文本居左 |
SmartyPants
SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:
TYPE | ASCII | HTML |
---|---|---|
Single backticks | 'Isn't this fun?' | ‘Isn’t this fun?’ |
Quotes | "Isn't this fun?" | “Isn’t this fun?” |
Dashes | -- is en-dash, --- is em-dash | – is en-dash, — is em-dash |
创建一个自定义列表
- Markdown
- Text-to- HTML conversion tool Authors
- John
- Luke
如何创建一个注脚
一个具有注脚的文本。2
注释也是必不可少的
Markdown将文本转换为 HTML。
KaTeX数学公式
您可以使用渲染LaTeX数学表达式 KaTeX:
Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n−1)!∀n∈N 是通过欧拉积分
Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞tz−1e−tdt.
你可以找到更多关于的信息 LaTeX 数学表达式here.
新的甘特图功能,丰富你的文章
- 关于 甘特图 语法,参考 这儿,
UML 图表
可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:
这将产生一个流程图。:
- 关于 Mermaid 语法,参考 这儿,
FLowchart流程图
我们依旧会支持flowchart的流程图:
- 关于 Flowchart流程图 语法,参考 这儿.
导出与导入
导出
如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。
导入
如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。
mermaid语法说明 ↩︎
注脚的解释 ↩︎