机器翻译基础与模型 之二: 基于CNN的模型

一、CNN网络

相比于全连接网络,卷积神经网络最大的特点在于具有局部连接(Locally Connected)和权值共享(Weight Sharing)的特性。

1.1 卷积核与卷积操作

1.2 步长与填充

1.3 池化

以上关于CNN的基础概念和技术就不赘述了。

1.4 面向序列的卷积操作

面向序列的卷积操作中,卷积核只在序列这一维度上移动,用来捕捉连续的多个词之间的特征。

二、基于CNN的翻译建模

2.1 ConvS2S模型

ConvS2S 模型是一种高并行的序列到序列的神经计算模型。该模型利用卷积神经网络分别对源语言端与目标语言端的序列进行特征提取,并使用注意力机制来捕获两个序列之间映射关系。

相比于基于多层循环神经网络的 GNMT 模型,其主要优势在于每一层的网络计算是完全并行化的,避免了循环神经网络中计算顺序对时序的依赖。同时,利用多层卷积神经网络的层级结构可以有效地捕捉序列不同位置之间的依赖。即使是远距离依赖,也可以通过若干层卷积单元进行有效的捕捉,而且其信息传递的路径相比循环神经网络更短。

除此之外,模型同时使用门控线性单元、残差网络和位置编码等技术来进一步提升模型性能,达到了和 GNMT 模型相媲美的翻译性能,同时大大缩短了训练时间。

2.2 模型模块介绍

ConvS2S 模型模块组成:位置编码(Position Embedding)、卷积层、门控线性单元(GLU/Gated Linear Units)、残差链接(Residual Connection)、多跳注意力机制(Multi-step Attention/Multi-hop Attention)

2.2.1 位置编码(Position Embedding)

位置编码(Position Embedding):结构图中绿色部分,源语言端词嵌入部分,帮助模型获得词位置(即词序)信息。

该模型的位置编码 p = {p1,...,pm},其中pi 的维度大小为 d,一般和词嵌入维度相等,其中数值作为网络可学习的参数。简单来说, pi 是一个可学习的参数向量,对应位置 i 的编码。

编码的作用就是对位置信息进行表示,不同序列中的相同位置都对应一个唯一的位置编码向量。之后将词嵌入矩阵和位置编码进行相加,得到模型的输入序列 e = {w1 +p1,...,wm +pm}。

2.2.2 卷积层与门控线性单元(GLU)

在 ConvS2S 模型中,编码器和解码器分别使用堆叠的门控CNN对源语言和目标语言序列进行建模,在传统CNN的基础上引入了门控线性单元GLU,通过门控机制对卷积输出进行控制。

结构图中黄色背景框是卷积模块,这里使用GLU作为非线性函数,研究表明这种非线性函数更适合于序列建模任务。实际中为了更好地捕获句子信息,通常使用多层卷积的叠加。

2.2.3 残差连接(Residual Connection)

残差连接是一种训练深层网络的技术,即在多层神经网络之间通过增加直接连接的方式,从而将底层信息直接传递给上层,能够有效提高深层网络的信息传递效率。

在 ConvS2S 中残差连接主要应用于门控卷积神经网络和多跳自注意力机制中,
比如在编码器的多层门控卷积神经网络中,在每一层的输入和输出之间增加残差连
接。

2.2.4 多跳注意力机制(Multi-step Attention/Multi-hop Attention)

在 ConvS2S 模型中,解码器同样采用堆叠的多层门控卷积网络来对目标语言进行序列建模。区别于编码器,解码器在每一层卷积网络之后引入了注意力机制,用来参考源语言信息。 ConvS2S 选用了点乘注意力,并且通过类似残差连接的方式将注意力操作的输入与输出同时作用于下一层计算,称为多跳注意力。

结构图中蓝色框内部展示了基于多跳结构的注意力机制模块。

与循环网络中的注意力机制相比,该机制能够帮助模型甄别已经考虑了哪些先前的输入。也就是说,多跳的注意力机制会考虑模型之前更关注哪些单词,并且之后层中执行多次注意力的“跳跃”。

2.2.5 训练与推断

ConvS2S 模型使用了 Nesterov 加速梯度下降法 (Nesterov Accelerated Gradient,NAG),动量累计的系数设置为 0.99,当梯度范数超过 0.1 时重新进行规范化。

ConvS2S 模型中设置学习率为 0.25,每当模型在校验集上的困惑度不再下降时,便在每轮的训练后将学习率降低一个数量级,直至学习率小于一定的阈值(如0.0004)。

ConvS2S 模型中也使用了 Dropout方法。除了在词嵌入层和解码器输出层应用 Dropout 外,还对卷积块的输入层应用了 Dropout。

2.3 局部模型的改进

为了进一步提升计算效率,降低参数量,一些研究人员提出深度可分离卷积(Depthwise Separable Convolution),将空间维度和通道间的信息交互分离成深度卷积(Depthwise Convolution,也叫逐通道卷积)和逐点卷积(Pointwise Convolution)两部分。

除了直接将深度可分离卷积应用到神经机器翻译中,研究人员提出使用更高效的轻量卷积(Lightweight Convolution)和动态卷积(Dynamic Convolution)来进行不同词之间的特征提取。

2.2.1 深度可分离卷积(Depthwise Separable Convolution)

深度可分离卷积由深度卷积和逐点卷积两部分结合而成。

标准卷积中每个输出元素需要考虑卷积核尺度内所有词的所有特征,参数量相对较多。深度卷积只考虑不同词之间的依赖性,而不考虑不同通道之间的关系,相当于使用 O 个卷积核逐个通道对不同的词进行卷积操作。逐点卷积只考虑不同通道之间的依赖性,而不考虑不同词之间的依赖。换句话说,逐点卷积对每个词表示做了一次线性变换。

2.2.2 轻量卷积和动态卷积

一些研究提出了轻量卷积和动态卷积,用来替换注意力机制,并将其应用于基于自注意力机制的模型中。

a.轻量卷积

从形式上来看,深度卷积和注意力机制很类似,区别在于注意力机制考虑了序列全局上下文信息,权重来自于当前位置对其他位置的“注意力”,而深度卷积中仅考虑了局部的上下文信息,权重采用了在不同通道上独立的固定参数。

为了进一步降低参数量,轻量卷积共享了部分通道的卷积参数。通过共享,可以将参数量压缩到 Ka,其中压缩比例为d/a(a 为压缩后保留的共享通道数)。

b.动态卷积

动态卷积,旨在不增加网络深度和宽度的情况下来增强模型的表示能力,其思想就是根据输入来动态地生成卷积参数。

在轻量卷积中,模型使用的卷积参数是静态的,与序列位置无关,维度大小为K ×a;而在动态卷积中,为了增强模型的表示能力,卷积参数来自于当前位置输入的变换。通过这种方式,模型可以根据不同位置的表示来确定如何关注其他位置信息的“权重”,更好地提取序列信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/920080.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IntelliJ+SpringBoot项目实战(四)--快速上手数据库开发

对于新手学习SpringBoot开发,可能最急迫的事情就是尽快掌握数据库的开发。目前数据库开发主要流行使用Mybatis和Mybatis Plus,不过这2个框架对于新手而言需要一定的时间掌握,如果快速上手数据库开发,可以先按照本文介绍的方式使用JdbcTemplat…

C总结测评

测评代码&#xff1a;month_11/test_19/main.c Hera_Yc/bit_C_学习 - 码云 - 开源中国 第一题&#xff1a;该程序输出的是多少&#xff1f; #include <stdio.h> int main() {unsigned char i 7;//0~255int j 0;for (; i > 0; i - 3){j;}printf("%d\n",…

神经网络中常用的激活函数(公式 + 函数图像)

激活函数是人工神经网络中的一个关键组件&#xff0c;负责引入非线性&#xff0c;从而使神经网络能够学习和表示复杂的非线性关系。没有激活函数&#xff0c;神经网络中的所有计算都是线性变换&#xff0c;而线性模型的表达能力有限&#xff0c;无法处理复杂的任务。 激活函数…

在CentOS中,通过nginx访问php

其实是nginx反向代理到php-fpm&#xff0c;就像nginx反向代理到tomcat。 1、安装PHP-FPM 1.1 安装 yum install php yum install php-fpm php-common 这里只安装了php-fpm&#xff0c;根据需要安装php模块&#xff0c;比如需要访问mysql则添加安装 php-mysqlnd。 1.2 启动…

前端—Cursor编辑器

在当今快速发展的软件开发领域&#xff0c;效率和质量是衡量一个工具是否优秀的两个关键指标。今天&#xff0c;我要向大家推荐一款革命性的代码编辑器——Cursor&#xff0c;它集成了强大的AI功能&#xff0c;旨在提高开发者的编程效率。以下是Cursor编辑器的详细介绍和推荐理…

windows远程桌面打开rdp显卡调用

前情提要 服务器在公网环境&#xff0c;带宽只有30M。 远程桌面多开图形业务调试&#xff0c;设置RDP服务端使用GPU。 压缩传输带宽避免造成卡顿。 如果是内网&#xff0c;也可以用&#xff0c;还可以提供一个注册表键值&#xff0c;修改后提高fps帧率&#xff08;公网不推…

使用C++和QT开发应用程序入门以及开发实例分享

目录 1、搭建开发环境(VS2010和QT4.8.2) 2、创建一个QT窗口 3、在QT窗口中添加子窗口 4、QT界面布局 5、QT信号(SIGNAL)和槽(SLOT) 6、最后 C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/…

Spark SQL大数据分析快速上手-完全分布模式安装

【图书介绍】《Spark SQL大数据分析快速上手》-CSDN博客 《Spark SQL大数据分析快速上手》【摘要 书评 试读】- 京东图书 大数据与数据分析_夏天又到了的博客-CSDN博客 Hadoop完全分布式环境搭建步骤-CSDN博客,前置环境安装参看此博文 完全分布模式也叫集群模式。将Spark目…

php:使用socket函数创建WebSocket服务

一、前言 闲来无事&#xff0c;最近捣鼓了下websocket&#xff0c;但是不希望安装第三方类库&#xff0c;所以打算用socket基础函数创建个服务。 二、构建websocket服务端 <?phpclass SocketService {// 默认的监听地址和端口private $address 0.0.0.0;private $port 8…

【YOLOv8】安卓端部署-1-项目介绍

【YOLOv8】安卓端部署-1-项目介绍 1 什么是YOLOv81.1 YOLOv8 的主要特性1.2 YOLOv8分割模型1.2.1 YOLACT实例分割算法之计算掩码1.2.1.1 YOLACT 的掩码原型与最终的掩码的关系1.2.1.2 插值时的目标检测中提取的物体特征1.2.1.3 coefficients&#xff08;系数&#xff09;作用1.…

(十八)JavaWeb后端开发案例——会话/yml/过滤器/拦截器

目录 1.业务逻辑实现 1.1 登录校验技术——会话 1.1.1Cookie 1.1.2session 1.1.3JWT令牌技术 2.参数配置化 3.yml格式配置文件 4.过滤器Filter 5.拦截器Interceptor 1.业务逻辑实现 Day10-02. 案例-部门管理-查询_哔哩哔哩_bilibili //Controller层/*** 新增部门*/Pos…

数字IC后端设计实现之Innovus place报错案例 (IMPSP-9099,9100三种解决方案)

最近吾爱IC社区星球会员问到跑place_opt_design时会报错退出的情况。小编今天把这个错误解决办法分享给大家。主要分享三个方法&#xff0c;大家可以根据自己的实际情况来选择。 数字IC后端低功耗设计实现案例分享(3个power domain&#xff0c;2个voltage domain) **ERROR: (I…

麒麟网络负载均衡与高可用方案实践

安装 teamd 包。 yum -y install teamd Copy 一、配置TEAMING 查看两个网卡信息 ifconfig Copy 注意&#xff1a;根据实际网卡设备名称情况调整代码&#xff01;不同环境下网卡名称略有不同&#xff01; 根据查询的结果&#xff0c;两张网卡设备名称分别为 enp0s2 和 enp…

【SpringBoot】26 实体映射工具(MapStruct)

Gitee 仓库 https://gitee.com/Lin_DH/system 介绍 现状 为了让应用程序的代码更易于维护&#xff0c;通常会将项目进行分层。在《阿里巴巴 Java 开发手册》中&#xff0c;推荐分层如下图所示&#xff1a; 每层都有对应的领域模型&#xff0c;即不同类型的 Bean。 DO&…

深述C++模板类

1、前言 函数模板是通用函数的描述&#xff0c;类模板是通用类的描述&#xff0c;使用任意类型来描述类的定义。和函数模板有很多相似的地方&#xff0c;关于函数模板可以看我之前写过的一篇文章&#xff1a;简述C函数模板。这里就不过多赘述。 2、模板类的基本概念 模板类的…

利用Python爬虫获取1688搜索词推荐:技术与实践

在电子商务领域&#xff0c;关键词的选择对于产品的曝光和销售至关重要。1688作为中国领先的B2B电子商务平台&#xff0c;提供了丰富的搜索词推荐功能&#xff0c;帮助商家优化关键词策略。本文将详细介绍如何使用Python编写爬虫程序&#xff0c;获取1688平台的搜索词推荐&…

Flink Lookup Join(维表 Join)

Lookup Join 定义&#xff08;支持 Batch\Streaming&#xff09; Lookup Join 其实就是维表 Join&#xff0c;比如拿离线数仓来说&#xff0c;常常会有用户画像&#xff0c;设备画像等数据&#xff0c;而对应到实时数仓场景中&#xff0c;这种实时获取外部缓存的 Join 就叫做维…

从Stream的 toList() 和 collect(Collectors.toList()) 方法看Java的不可变流

环境 JDK 21Windows 11 专业版IntelliJ IDEA 2024.1.6 背景 在使用Java的Stream的时候&#xff0c;常常会把流收集为List。 假设有List list1 如下&#xff1a; var list1 List.of("aaa", "bbbbbb", "cccc", "d", "eeeee&qu…

wsl虚拟机中的dockers容器访问不了物理主机

1 首先保证wsl虚拟机能够访问宿主机IP地址&#xff0c;wsl虚拟机通过vEthernet (WSL)的地址访问&#xff0c;着意味着容器也要通过此IP地址访问物理主机。 2 遇到的问题&#xff1a;wsl虚拟机中安装了docker&#xff0c;用在用到docker容器内的开发环境&#xff0c;但是虚拟机…

华为VPN技术

1.启动设备 2.配置IP地址 [FW1]int g1/0/0 [FW1-GigabitEthernet1/0/0]ip add 192.168.1.254 24 [FW1-GigabitEthernet1/0/0]int g1/0/1 [FW1-GigabitEthernet1/0/1]ip add 100.1.1.1 24 [FW1-GigabitEthernet1/0/1]service-manage ping permit [FW2]int g1/0/0 [FW2-Gi…