Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
M
mtbookv2
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
NiuTrans
mtbookv2
Commits
5a3b49a6
Commit
5a3b49a6
authored
Jan 10, 2021
by
单韦乔
Browse files
Options
Browse Files
Download
Plain Diff
合并分支 'shanweiqiao' 到 'caorunzhe'
13章文字 查看合并请求
!856
parents
0813de14
2fac6fc4
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
2 行增加
和
2 行删除
+2
-2
Chapter13/chapter13.tex
+2
-2
没有找到文件。
Chapter13/chapter13.tex
查看文件 @
5a3b49a6
...
@@ -146,7 +146,7 @@
...
@@ -146,7 +146,7 @@
\parinterval
使用BPE方法的策略有很多。不仅可以单独对源语言和目标语言句子进行子词的切分,也可以联合源语言和目标语言,共同进行子词切分,被称作
{
\small\bfnew
{
双字节联合编码
}}
\index
{
双字节联合编码
}
(Joint-BPE
\index
{
Joint-BPE
}
)
\upcite
{
DBLP:conf/acl/SennrichHB16a
}
。 单语BPE比较简单直接,而Joint-BPE则可以增加两种语言子词切分的一致性。对于相似语系中的语言,如英语和德语,常使用Joint-BPE 的方法联合构建词表。而对于汉语和英语这些差异比较大的语种,则需要独立的进行子词切分。使用子词表示句子的方法可以有效的平衡词汇量,增大对未见单词的覆盖度。像英译德、汉译英任务,使用16k或者32k 的子词词表大小便能取得很好的效果。
\parinterval
使用BPE方法的策略有很多。不仅可以单独对源语言和目标语言句子进行子词的切分,也可以联合源语言和目标语言,共同进行子词切分,被称作
{
\small\bfnew
{
双字节联合编码
}}
\index
{
双字节联合编码
}
(Joint-BPE
\index
{
Joint-BPE
}
)
\upcite
{
DBLP:conf/acl/SennrichHB16a
}
。 单语BPE比较简单直接,而Joint-BPE则可以增加两种语言子词切分的一致性。对于相似语系中的语言,如英语和德语,常使用Joint-BPE 的方法联合构建词表。而对于汉语和英语这些差异比较大的语种,则需要独立的进行子词切分。使用子词表示句子的方法可以有效的平衡词汇量,增大对未见单词的覆盖度。像英译德、汉译英任务,使用16k或者32k 的子词词表大小便能取得很好的效果。
\parinterval
BPE还有很多变种方法。
在进行子词切分时,BPE从最长的子词开始进行切分。这个启发性规则可以
{
\red
保证切分结果的唯一性
}
,实际上,在对一个单词用同一个子词词表切分时,可能
{
\red
存在多种切分方式
}
,如hello,可以被切分为“hell”和“o”,也可以分割为“h”和“ello”。这种切分的多样性可以用来提高神经机器翻译系统的
{
\red
健壮性
}
\upcite
{
DBLP:conf/acl/Kudo18
}
。在T5等预训练模型中
\upcite
{
DBLP:journals/jmlr/RaffelSRLNMZLL20
}
,则使用了基于
{
\red
字符级别的BPE
}
。此外,尽管BPE被命名为字节对编码,但是在实践中该方法一般处理的是Unicode编码,而不是字节。因此在预训练模型GPT2 中,也探索了字节级别的BPE,这种方法在机器翻译、自动问答等任务中取得了很好的效果
\upcite
{
radford2019language
}
。
{
\red
(内容太零散)
}
\parinterval
BPE还有很多变种方法。
表面上是在进行子词切分,实际上则是按照优先级对按规则切分后的单词重新合并为一个个子词,BPE按照符号合并表的优先级依次进行合并。这个启发性规则可以保证合并结果的唯一性,实际上,在不考虑优先级的情况下,在对一个单词用同一个合并表切分子词时,可能存在多种结果。如hello,可以被切分为“hell”和“o”,也可以分割为“h”和“ello”。这种切分的多样性可以用来提高神经机器翻译系统的健壮性
\upcite
{
DBLP:conf/acl/Kudo18
}
。在T5等预训练模型中
\upcite
{
DBLP:journals/jmlr/RaffelSRLNMZLL20
}
,则使用了基于字符级别的BPE。此外,尽管BPE被命名为字节对编码,但是在实践中该方法一般处理的是Unicode编码,而不是字节。因此在预训练模型GPT2 中,也探索了字节级别的BPE,这种方法在机器翻译、自动问答等任务中取得了很好的效果
\upcite
{
radford2019language
}
。
%----------------------------------------------------------------------------------------
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
% NEW SUB-SECTION
...
@@ -238,7 +238,7 @@ R(\mathbi{w}) & = & ({\Vert{\mathbi{w}}\Vert}_2)^2 \\
...
@@ -238,7 +238,7 @@ R(\mathbi{w}) & = & ({\Vert{\mathbi{w}}\Vert}_2)^2 \\
\label
{
eq:13-4
}
\label
{
eq:13-4
}
\end{eqnarray}
\end{eqnarray}
\parinterval
从几何的角度看,L1和L2正则项都是有物理意义的。二者都可以被看作是空间上的一个区域,比如,在二维平面上,L1范数表示一个以0点为中心的矩形
{
\red
(就是正方形吧,没系数)
}
,L2范数表示一个以0点为中心的圆。此时,
$
L
(
\mathbi
{
w
}
)
$
和
$
R
(
\mathbi
{
w
}
)
$
叠加在一起构成了一个新的区域,优化问题可以被看作是在这个新的区域上进行优化。由于L1和L2正则项都是在0点(坐标原点)附近形成的区域,因此优化的过程可以确保参数不会偏离0点太多。也就是说,L1和L2正则项引入了一个先验:模型的解不应该离0点太远。而L1和L2正则项实际上是在度量这个距离。
\parinterval
从几何的角度看,L1和L2正则项都是有物理意义的。二者都可以被看作是空间上的一个区域,比如,在二维平面上,L1范数表示一个以0点为中心的矩形,L2范数表示一个以0点为中心的圆。此时,
$
L
(
\mathbi
{
w
}
)
$
和
$
R
(
\mathbi
{
w
}
)
$
叠加在一起构成了一个新的区域,优化问题可以被看作是在这个新的区域上进行优化。由于L1和L2正则项都是在0点(坐标原点)附近形成的区域,因此优化的过程可以确保参数不会偏离0点太多。也就是说,L1和L2正则项引入了一个先验:模型的解不应该离0点太远。而L1和L2正则项实际上是在度量这个距离。
\parinterval
那为什么要用L1和L2正则项惩罚离0点远的解呢?这还要从模型复杂度谈起。实际上,对于神经机器翻译这样的模型来说,模型的容量是足够的。所谓容量可以被简单的理解为独立参数的个数
\footnote
{
另一种定义是把容量看作神经网络所能表示的假设空间大小
\upcite
{
DBLP:journals/nature/LeCunBH15
}
,也就是神经网络能表示的不同函数所构成的空间。
}
。也就是说,理论上存在一种模型可以完美的描述问题。但是,从目标函数拟合的角度来看,如果一个模型可以拟合很复杂的目标函数,那模型所表示的函数形态也会很复杂。这往往体现在模型中参数的值“偏大”。比如,用一个多项式函数拟合一些空间中的点,如果希望拟合得很好,各个项的系数往往是非零的。而且为了对每个点进行拟合,通常需要多项式中的某些项具有较大的系数,以期望函数在局部有较大的斜率。显然,这样的模型是很复杂的。模型的复杂度可以用函数中参数(比如多项式中各项的系数)的“值”进行度量,这也体现在模型参数的范数上。
\parinterval
那为什么要用L1和L2正则项惩罚离0点远的解呢?这还要从模型复杂度谈起。实际上,对于神经机器翻译这样的模型来说,模型的容量是足够的。所谓容量可以被简单的理解为独立参数的个数
\footnote
{
另一种定义是把容量看作神经网络所能表示的假设空间大小
\upcite
{
DBLP:journals/nature/LeCunBH15
}
,也就是神经网络能表示的不同函数所构成的空间。
}
。也就是说,理论上存在一种模型可以完美的描述问题。但是,从目标函数拟合的角度来看,如果一个模型可以拟合很复杂的目标函数,那模型所表示的函数形态也会很复杂。这往往体现在模型中参数的值“偏大”。比如,用一个多项式函数拟合一些空间中的点,如果希望拟合得很好,各个项的系数往往是非零的。而且为了对每个点进行拟合,通常需要多项式中的某些项具有较大的系数,以期望函数在局部有较大的斜率。显然,这样的模型是很复杂的。模型的复杂度可以用函数中参数(比如多项式中各项的系数)的“值”进行度量,这也体现在模型参数的范数上。
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论