Commit f619e741 by xiaotong

minor updates

parent 2ab8756e
......@@ -208,8 +208,8 @@ NMT & 21.7 & 18.7 & -13.7 \\
Layer-Wise Coordination \upcite{He2018LayerWiseCB} &He等 &2018 &29.0 \\
Transformer-RPR \upcite{Shaw2018SelfAttentionWR} &Shaw等 &2018 &29.2 \\
Transformer-DLCL \upcite{WangLearning} &Wang等 &2019 &29.3 \\
SDT \upcite{li2020shallow} &Li等 &2020 & 30.46 \\
Msc \upcite{Wei2020MultiscaleCD} &Wei等 &2020 &30.56 \\
SDT \upcite{li2020shallow} &Li等 &2020 & 30.4 \\
Msc \upcite{Wei2020MultiscaleCD} &Wei等 &2020 &30.5 \\
\end{tabular}
\end{table}
%----------------------------------------------
......
......@@ -930,7 +930,7 @@ x_1\cdot w_1+x_2\cdot w_2+x_3\cdot w_3 & = & 0\cdot 1+0\cdot 1+1\cdot 1 \nonumbe
\parinterval 对于一个单层神经网络,$ {\mathbi{y}}=f({\mathbi{x}}\cdot{\mathbi{W}}+{\mathbi{b}}) $中的${\mathbi{x}}\cdot {\mathbi{W}} $表示对输入${\mathbi{x}} $进行线性变换,其中${\mathbi{x}}$是输入张量,$ {\mathbi{W}}$是权重矩阵。$ {\mathbi{x}}\cdot {\mathbi{W}} $表示的是矩阵乘法,需要注意的是这里是矩阵乘法而不是张量乘法。
\parinterval 张量乘以矩阵是怎样计算呢?可以先回忆一下\ref{sec:9.2.1}节的线性代数的知识。假设$ {\mathbi{A}} $$ m\times p $的矩阵,$ {\mathbi{B}} $$ p\times n $的矩阵,对${\mathbi{A}} $${\mathbi{B}}$ 作矩阵乘积的结果是一个$ m\times n $的矩阵${\mathbi{C}}$,其中矩阵${\mathbi{C}}$中第$ i $行、第$ j $列的元素可以表示为公式\eqref{eq:9-24}
\parinterval 张量乘以矩阵是怎样计算呢?可以先回忆一下\ref{sec:9.2.1}节的线性代数的知识。假设$ {\mathbi{A}} $$ m\times p $的矩阵,$ {\mathbi{B}} $$ p\times n $的矩阵,对${\mathbi{A}} $ ${\mathbi{B}}$ 作矩阵乘积的结果是一个$ m\times n $的矩阵${\mathbi{C}}$,其中矩阵${\mathbi{C}}$中第$ i $行、第$ j $列的元素可以表示为公式\eqref{eq:9-24}
\begin{eqnarray}
{({\mathbi{A}}{\mathbi{B}})}_{ij}&=&\sum_{k=1}^{p}{a_{ik}b_{kj}}
\label{eq:9-24}
......@@ -1029,7 +1029,7 @@ f(x)=\begin{cases} 0 & x\le 0 \\x & x>0\end{cases}
\parinterval 实现神经网络的开源系统有很多,比如,使用经典的Python工具包Numpy。也可以使用成熟的深度学习框架,比如,Tensorflow和Pytorch就是非常受欢迎的深度学习工具包,除此之外还有很多其他优秀的框架:CNTK、MXNet、PaddlePaddle、\\Keras、Chainer、dl4j、NiuTensor等。开发者可以根据自身的喜好和开发项目的要求选择所采用的框架。
\parinterval NiuTensor是一个面向自然语言处理任务的张量库,它支持丰富的张量计算接口,如张量的声明、定义和张量的各种代数运算,各种单元算子,如$ + $$ - $$ \ast $$ / $、Log(取对数)、Exp(指数运算)、Power(幂方运算)、Absolute(绝对值)等,还有Sigmoid、Softmax等激活函数,除了上述单元算子外。NiuTensor还支持张量之间的高阶运算,其中最常用的是矩阵乘法。表\ref{tab:9-2}展示了一些NiuTensor支持的其他函数操作
\parinterval 这里以NiuTensor为例对张量计算库进行简单介绍。这类库需要提供张量计算接口,如张量的声明、定义和张量的各种代数运算,各种单元算子,如$ + $$ - $$ \ast $$ / $、Log (取对数)、Exp (指数运算)、Power(幂方运算)、Absolute(绝对值)等,还有Sigmoid、Softmax等激活函数。除了上述单元算子外,张量计算库还支持张量之间的高阶运算,其中最常用的是矩阵乘法。表\ref{tab:9-2} 展示了一些其他的函数
%--------------------------------------------------------------------
\begin{table}[htp]
......@@ -1040,23 +1040,23 @@ f(x)=\begin{cases} 0 & x\le 0 \\x & x>0\end{cases}
\begin{tabular}{l | l}
\rule{0pt}{15pt} 函数 & 描述 \\
\hline
\rule{0pt}{15pt} a.Reshape(o,s) &$ {\mathbi{a}} $变换成阶为o、形状为s的张量 \\
\rule{0pt}{15pt} a.Get(pos) & 取张量中位置为pos的元素 \\
\rule{0pt}{15pt} a.Set(v,pos) & 把张量中位置为pos的元素值设为v \\
\rule{0pt}{15pt} a.Dump(file) & 把张量存到file中,file为文件句柄 \\
\rule{0pt}{15pt} a.Read(file) & 从file中读取张量,file为文件句柄 \\
\rule{0pt}{15pt} Power(a,p) & 计算指数$ a^p $ \\
\rule{0pt}{15pt} Linear(a,s,b) & 计算${\mathbi{a}}\ast s+b $,s和b都是一个实数 \\
\rule{0pt}{15pt} CopyValue(a) & 构建$ {\mathbi{a}} $的一个拷贝 \\
\rule{0pt}{15pt} ReduceMax(a,d) &$ {\mathbi{a}} $沿着方向d进行规约,得到最大值 \\
\rule{0pt}{15pt} ReduceSum(a,d) &$ {\mathbi{a}} $沿着方向d进行规约,得到和 \\
\rule{0pt}{15pt} Concatenate(a,b,d) & 把两个张量$ {\mathbi{a}} $$ {\mathbi{b}} $沿d方向级联 \\
\rule{0pt}{15pt} Merge(a,d) & 对张量$ {\mathbi{a}} $沿d方向合并 \\
\rule{0pt}{15pt} Split(a,d,n) & 对张量$ {\mathbi{a}} $沿d方向分裂成n份 \\
\rule{0pt}{15pt} Sigmoid(a) &${\mathbi{a}}$进行Sigmoid变换 \\
\rule{0pt}{15pt} Softmax(a) &$ {\mathbi{a}} $进行Softmax变换,沿最后一个方向 \\
\rule{0pt}{15pt} HardTanh(a) &$ {\mathbi{a}} $进行hard Tanh变换(双曲正切的近似) \\
\rule{0pt}{15pt} Relu(a) &$ {\mathbi{a}} $进行ReLU变换 \\
\rule{0pt}{15pt} \texttt{a.Reshape(o,s)} &$ {\mathbi{a}} $变换成阶为o、形状为s的张量 \\
\rule{0pt}{15pt} \texttt{a.Get(pos)} & 取张量中位置为pos的元素 \\
\rule{0pt}{15pt} \texttt{a.Set(v,pos)} & 把张量中位置为pos的元素值设为v \\
\rule{0pt}{15pt} \texttt{a.Dump(file)} & 把张量存到file中,file为文件句柄 \\
\rule{0pt}{15pt} \texttt{a.Read(file)} & 从file中读取张量,file为文件句柄 \\
\rule{0pt}{15pt} \texttt{Power(a,p)} & 计算指数$ a^p $ \\
\rule{0pt}{15pt} \texttt{Linear(a,s,b)} & 计算${\mathbi{a}}\ast s+b $,s和b都是一个实数 \\
\rule{0pt}{15pt} \texttt{CopyValue(a)} & 构建$ {\mathbi{a}} $的一个拷贝 \\
\rule{0pt}{15pt} \texttt{ReduceMax(a,d)} &$ {\mathbi{a}} $沿着方向d进行规约,得到最大值 \\
\rule{0pt}{15pt} \texttt{ReduceSum(a,d)} &$ {\mathbi{a}} $沿着方向d进行规约,得到和 \\
\rule{0pt}{15pt} \texttt{Concatenate(a,b,d)} & 把两个张量$ {\mathbi{a}} $$ {\mathbi{b}} $沿d方向级联 \\
\rule{0pt}{15pt} \texttt{Merge(a,d)} & 对张量$ {\mathbi{a}} $沿d方向合并 \\
\rule{0pt}{15pt} \texttt{Split(a,d,n)} & 对张量$ {\mathbi{a}} $沿d方向分裂成n份 \\
\rule{0pt}{15pt} \texttt{Sigmoid(a)} &${\mathbi{a}}$进行Sigmoid变换 \\
\rule{0pt}{15pt} \texttt{Softmax(a)} &$ {\mathbi{a}} $进行Softmax变换,沿最后一个方向 \\
\rule{0pt}{15pt} \texttt{HardTanh(a)} &$ {\mathbi{a}} $进行hard Tanh变换(双曲正切的近似) \\
\rule{0pt}{15pt} \texttt{Relu(a)} &$ {\mathbi{a}} $进行ReLU变换 \\
\end{tabular}
\end{table}
%--------------------------------------------------------------------
......@@ -1867,7 +1867,7 @@ z_t&=&\gamma z_{t-1}+(1-\gamma) \frac{\partial J}{\partial {\theta}_t} \cdot \f
\label{eq:9-110}
\end{eqnarray}
\noindent 这里,$ w_{m-n+1}\dots w_m $也被称作$n$-gram,即$ n $元语法单元。$n$-gram语言模型是一种典型的基于离散表示的模型。在这个模型中,所有的词都被看作是离散的符号。因此,不同单词之间是“完全”不同的。另一方面,语言现象是十分多样的,即使在很大的语料库上也无法得到所有$n$-gram的准确统计。甚至很多$n$-gram在训练数据中从未出现过。由于不同$n$-gram 间没有建立直接的联系, $n$-gram语言模型往往面临数据稀疏的问题。比如,虽然在训练数据中见过“景色”这个词,但是测试数据中却出现了“风景”这个词,恰巧“风景”在训练数据中没有出现过。即使“风景”和“景色”表达的是相同的意思,$n$-gram语言模型仍然会把“风景”看作未登录词,赋予一个很低的概率值。
\noindent 这里,$ w_{m-n+1}\dots w_m $也被称作$n$-gram,即$ n $元语法单元。$n$-gram语言模型是一种典型的基于离散表示的模型。在这个模型中,所有的词都被看作是离散的符号。因此,不同单词之间是“完全”不同的。另一方面,语言现象是十分多样的,即使在很大的语料库上也无法得到所有$n$-gram的准确统计。甚至很多$n$-gram在训练数据中从未出现过。由于不同$n$-gram 间没有建立直接的联系, $n$-gram 语言模型往往面临数据稀疏的问题。比如,虽然在训练数据中见过“景色”这个词,但是测试数据中却出现了“风景”这个词,恰巧“风景”在训练数据中没有出现过。即使“风景”和“景色”表达的是相同的意思,$n$-gram语言模型仍然会把“风景”看作未登录词,赋予一个很低的概率值。
\parinterval 上面这个问题的本质是$n$-gram语言模型对词使用了离散化表示,即每个单词都孤立的对应词表中的一个索引,词与词之间在语义上没有任何“重叠”。神经语言模型重新定义了这个问题。这里并不需要显性地通过统计离散的$n$-gram的频度,而是直接设计一个神经网络模型$ g(\cdot)$来估计单词生成的概率,正如公式\eqref{eq:9-59}所示:
\begin{eqnarray}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论