机器翻译基础与模型 之二: 基于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;而在动态卷积中,为了增强模型的表示能力,卷积参数来自于当前位置输入的变换。通过这种方式,模型可以根据不同位置的表示来确定如何关注其他位置信息的“权重”,更好地提取序列信息。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue 3集成海康Web插件实现视频监控

​🌈个人主页:前端青山 🔥系列专栏:组件封装篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来组件封装篇专栏内容:Vue 3集成海康Web插件实现视频监控 引言 最近在项目中使用了 Vue 3 结合海康Web插件来实…

【Maven】nexus 配置私有仓库配置【转】

介绍:【Maven】Nexus几个仓库的介绍-CSDN博客 一、仓库类型 proxy 远程仓库的代理,比如说nexus配置了一个central repository的proxy,当用户向这个proxy请求一个artifact的时候,会现在本地查找,如果找不到,则会从远程…

Python学习------第十天

数据容器-----元组 定义格式,特点,相关操作 元组一旦定义,就无法修改 元组内只有一个数据,后面必须加逗号 """ #元组 (1,"hello",True) #定义元组 t1 (1,"hello") t2 () t3 tuple() prin…

Spring Web入门练习

加法计算器 约定前后端交互接⼝ 约定 "前后端交互接⼝" 是进⾏ Web 开发中的关键环节. 接⼝⼜叫 API(Application Programming Interface), 我们⼀般讲到接⼝或者 API,指的都是同⼀个东西. 是指应⽤程序对外提供的服务的描述, ⽤于交换信息…

uniapp微信小程序接入airkiss插件进行WIFI配网

本文可参考uniapp小程序插件 一.申请插件 微信公众平台设置页链接:微信公众平台 登录您的小程序微信公众平台,进入设置页,在第三方设置->插件管理->添加插件中申请AiThinkerAirkissforWXMini插件,申请的插件appId为【wx6…

蓝队技能-应急响应篇日志自动采集日志自动查看日志自动化分析Web安全内网攻防工具项目

知识点: 1、应急响应-系统日志收集-项目工具 2、应急响应-系统日志查看-项目工具 3、应急响应-日志自动分析-项目工具 演示案例-蓝队技能-工具项目-自动日志采集&自动日志查看&自动日志分析 系统日志自动采集-观星应急工具(Windows系统日志) SglabIr_Co…

类和对象——static 成员,匿名对象(C++)

1.static成员 a)⽤static修饰的成员变量,称之为静态成员变量,静态成员变量⼀定要在类外进行初始化。 b)静态成员变量为所有类对象所共享,不属于某个具体的对象,不存在对象中,存放在静态区。 …

node.js中express的基本了解

定义 Express是基于Node.js平台,快速、开放、极简的Web开发框架。 本质 Express是一个npm上的第三方包,提供了快速创建Web服务器的便捷方法。 作用 与Node.js内置的http模块类似,Express也是专门用来创建Web服务器的,但它极大地简…

Django实现智能问答助手-基础配置

设置 Django 项目、创建应用、定义模型和视图、实现问答逻辑,并设计用户界面。下面是一步一步的简要说明: 目录: QnAAssistant/ # 项目目录 │ ├── QnAAssistant/ # 项目文件夹 │ ├── init.py # 空文件 │ ├── settings.py # 项目配…

Spring工作流程

(3)案例工作流程 启动服务器初始化过程 1.服务器启动,执行ServletContainersInitConfig类,初始化web容器功能类似于以前的web.xml 2.执行createServletApplicationContext方法,创建了WebApplicationContext对象 该方法…

C语言第13节:指针(3)

1. 回调函数 回调函数的基本思想是,将函数指针作为参数传递给另一个函数,并在需要时通过这个函数指针调用对应的函数。这种方式允许一个函数对执行的内容进行控制,而不需要知道具体的实现细节。 回调函数在以下场景中尤为有用: …

用pyspark把kafka主题数据经过etl导入另一个主题中的有关报错

首先看一下我们的示例代码 import os from pyspark.sql import SparkSession import pyspark.sql.functions as F """ ------------------------------------------Description : TODO:SourceFile : etl_stream_kafkaAuthor : zxxDate : 2024/11/…

STM32芯片EXIT外部中断的配置与原理以及模板代码(标准库)

配置EXIT外部中断其实就是把GPIO刀NVIC的各个外设配置好 第一步:配置RCC,把我们涉及到的外设的时钟都打开 (此处EXTI是默认打开的,而NVIC是内核外设无需配置) 第二步:配置GPIO,选择端口为输入模式 第三…

misc设备驱动

MISC 理解 简化创建设备号,cdev,class,device 的步骤。 设备树 代码 模块初始化和退出 平台下驱动匹配和移除 MiSC 结构体 文件描述符的处理函数 其他

layui合并table相同内的行

<table border"1" id"table1" class"layui-table"><thead><tr><th><b>姓名</b></th><th><b>项目</b></th><th><b>任务</b></th><th><b>…

java ssm 羽绒服商城网站 在线商城 在线服饰销售网站 源码 jsp

一、项目简介 本项目是一套基于SSM的羽绒服商城网站&#xff0c;主要针对计算机相关专业的和需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本、软件工具等。 项目都经过严格调试&#xff0c;确保可以运行&#xff01; 二、技术实现 ​后端技术&#xff…

程序里sendStringParametersAsUnicode=true的配置导致sql server cpu使用率高问题处理

一 问题描述 近期生产环境几台sql server从库cpu使用率总是打满&#xff0c;发现抓的带变量值的慢sql&#xff0c;手动代入变量值执行并不慢&#xff0c;秒级返回&#xff0c;不知道问题出在哪里。 二 问题排查 用扩展事件或者sql profiler抓慢sql&#xff0c;抓到了变量值&…

OpenAI震撼发布:桌面版ChatGPT,Windows macOS双平台AI编程体验!

【雪球导读】 「OpenAI推出ChatGPT桌面端」 OpenAI重磅推出ChatGPT桌面端&#xff0c;全面支持Windows和macOS系统&#xff01;这款新工具为用户在日常生活和工作中提供了前所未有的无缝交互体验。对于那些依赖桌面端进行开发工作的专业人士来说&#xff0c;这一更新带来了令人…

湘潭大学软件工程算法设计与分析考试复习笔记(四)

回顾 湘潭大学软件工程算法设计与分析考试复习笔记&#xff08;一&#xff09;湘潭大学软件工程算法设计与分析考试复习笔记&#xff08;二&#xff09;湘潭大学软件工程算法设计与分析考试复习笔记&#xff08;三&#xff09; 前言 现在是晚上十一点&#xff0c;我平时是十…

Python学习29天

二分查找 # 定义函数冒泡排序法从大到小排列 def bbble_sort(list):# i控制排序次数for i in range(len(list) - 1):# j控制每次排序比较次数for j in range(len(list) - 1 - i):if list[j] < list[j 1]:list[j], list[j 1] list[j 1], list[j] # 定义二分查找函数 def…