自然语言处理(二):近似训练

近似训练

近似训练(Approximate Training)是指在机器学习中使用近似的方法来训练模型,以降低计算复杂度或提高训练效率。这种方法通常用于处理大规模数据集或复杂模型,其中精确的训练算法可能过于耗时或计算资源不足。

近似训练的主要思想是通过在训练过程中引入一些近似技巧或近似算法,以在准确性和效率之间取得平衡。以下是一些常见的近似训练方法:

  1. 随机采样:在训练过程中,通过从数据集中随机采样一部分样本来训练模型,而不是使用完整的数据集。这种方法可以提高训练速度,但可能会引入一定的估计误差。

  2. 小批量训练:将数据集划分为小批量(mini-batch),每次使用一个小批量的样本进行梯度计算和参数更新。相比于全批量训练,小批量训练可以减少计算开销,并在一定程度上保持模型的准确性。

  3. 参数量化:将模型的参数进行量化或压缩,以减少模型的存储空间和计算复杂度。这可以通过使用低精度表示(如浮点数的低位表示)或使用特殊的压缩算法来实现。

  4. 近似损失函数:使用近似的损失函数来代替原始的损失函数。这种方法可以简化计算或优化过程,并在某些情况下仍能保持模型的性能。

  5. 近似优化算法:使用近似的优化算法来更新模型参数。这些算法通常通过减少每次迭代的计算量或降低计算复杂度来提高训练效率。

本章我们讲解的近似方法,主要是为了解决跳元模型和连续词袋模型中softmax大量求和计算提出。

文章内容来自李沐大神的《动手学深度学习》并加以我的理解,感兴趣可以去https://zh-v2.d2l.ai/查看完整书籍


文章目录

  • 近似训练
  • 负采样
  • 层序Softmax


负采样

负采样修改了原目标函数。给定中心词 w c w_c wc的上下文窗口,任意上下文词 w o w_o wo来自该上下文窗口的被认为是由下式建模概率的事件:
P ( D = 1 ∣ w c , w o ) = σ ( u o T v c ) P(D=1|w_c,w_o)=\sigma(u_o^Tv_c) P(D=1∣wc,wo)=σ(uoTvc)

对于词典中索引为 i i i的任何词,分别用 v i ∈ R d v_i\in R^d viRd u i ∈ R d u_i\in R^d uiRd表示其用作中心词和上下文词时的两个向量。

其中 σ \sigma σ使用了sigmoid激活函数的定义:
σ ( x ) = 1 1 + e x p ( − x ) \sigma(x)=\frac{1}{1+exp(-x)} σ(x)=1+exp(x)1
让我们从最大化文本序列中所有这些事件的联合概率开始训练词嵌入。具体而言,给定长度为 T T T的文本序列,以 w ( t ) w^{(t)} w(t)表示时间步 t t t的词,并使上下文窗口为 m m m,考虑最大化联合概率:
∏ t = 1 T ∏ − m ≤ j ≤ m , j ≠ 0 P ( D = 1 ∣ w ( t ) , w ( t + j ) ) \prod_{t=1}^{T}\prod_{-m\leq j \leq m,j\neq 0}P(D=1|w^{(t)},w^{(t+j)}) t=1Tmjm,j=0P(D=1∣w(t),w(t+j))
然而, 上述式子只考虑那些正样本的事件。仅当所有词向量都等于无穷大时, 式子中的联合概率才最大化为1。当然,这样的结果毫无意义。为了使目标函数更有意义,负采样添加从预定义分布中采样的负样本。

S S S表示上下文词 w o w_o wo来自中心词 w c w_c wc的上下文窗口的事件。对于这个涉及 w o w_o wo的事件,从预定义分布 P ( w ) P(w) P(w)中采样 K K K个不是来自这个上下文窗口噪声词。用 N k N_k Nk表示噪声词 w k w_k wk k = 1 , . . . , K k=1,...,K k=1,...,K)不是来自 w c w_c wc的上下文窗口的事件。假设正例和负例 S , N 1 , N 2 , . . . , N k S,N_1,N_2,...,N_k S,N1,N2,...,Nk的这些事件是相互独立的。负采样将上式中的联合概率(仅涉及正例)重写为
∏ t = 1 T ∏ − m ≤ j ≤ m , j ≠ 0 P ( w ( t + j ) ∣ w ( t ) ) \prod_{t=1}^{T}\prod_{-m\leq j \leq m,j\neq 0}P(w^{(t+j)}|w^{(t)}) t=1Tmjm,j=0P(w(t+j)w(t))
通过事件 S , N 1 , . . . , N k S,N_1,...,N_k S,N1,...,Nk近似条件概率:
P ( w ( t + j ) ∣ w ( t ) ) = P ( D = 1 ∣ w c , w o ) ∏ k = 1 , w k   P ( w ) K P ( D = 0 ∣ w ( t ) , w k ) P(w^{(t+j)}|w^{(t)})=P(D=1|w_c,w_o)\prod_{k=1,w_k~P(w)}^{K}P(D=0|w^{(t)},w_k) P(w(t+j)w(t))=P(D=1∣wc,wo)k=1,wk P(w)KP(D=0∣w(t),wk)

在这个公式中, P ( w ( t + j ) ∣ w ( t ) ) P(w^{(t+j)}|w^{(t)}) P(w(t+j)w(t)) 表示在给定中心词 w ( t ) w^{(t)} w(t) 的情况下,目标词 w ( t + j ) w^{(t+j)} w(t+j) 出现的概率。这个概率可以通过两个因素来计算:正例概率 P ( D = 1 ∣ w c , w o ) P(D=1|w_c,w_o) P(D=1∣wc,wo) 和负例概率的乘积。
正例概率 P ( D = 1 ∣ w c , w o ) P(D=1|w_c,w_o) P(D=1∣wc,wo) 表示在给定中心词 w c w_c wc 和上下文词 w o w_o wo 的情况下,目标词 w o w_o wo 是中心词 w c w_c wc 的上下文词的概率,即它们在给定上下文中存在关联的概率。
负例概率的乘积部分表示在给定中心词 w ( t ) w^{(t)} w(t) 的情况下,其他词 w k w_k wk (其中 k k k 的范围是从 1 到 K K K,表示负例的数量)不是中心词的上下文词的概率。这里使用了一个分布 P ( w ) P(w) P(w) 来表示词 w k w_k wk 的概率分布,通常可以根据词的频率来定义分布。
因此,公式中的乘积部分 ∏ k = 1 , w k ∼ P ( w ) K P ( D = 0 ∣ w ( t ) , w k ) \prod_{k=1,w_k\sim P(w)}^{K} P(D=0|w^{(t)},w_k) k=1,wkP(w)KP(D=0∣w(t),wk) 表示对于每一个负例词 w k w_k wk,在给定中心词 w ( t ) w^{(t)} w(t) 的情况下,词 w k w_k wk 不是中心词的上下文词的概率。

分别用 i t i_t it h k h_k hk表示词 w ( t ) w^{(t)} w(t)和噪声词 w k w_k wk在文本序列的时间步 t t t处的索引。上述式子中关于条件概率的对数损失为:
在这里插入图片描述
我们可以看到,现在每个训练步的梯度计算成本与词表大小无关,而是线性依赖于 K K K。当将超参数 K K K设置为较小的值时,在负采样的每个训练步处的梯度的计算成本较小。

层序Softmax

作为另一种近似训练方法,层序Softmax(hierarchical softmax)使用二叉树,其中树的每个叶节点表示词表 V V V中的一个词。
用于近似训练的分层softmax,其中树的每个叶节点表示词表中的一个词用于近似训练的分层softmax,其中树的每个叶节点表示词表中的一个词

L ( w ) L(w) L(w)表示二叉树中表示字 w w w的从根节点到叶节点的路径上的节点数(包括两端)。设 n ( w , j ) n(w,j) n(w,j)为该路径上的 j t h j^{th} jth节点,其上下文字向量为 u n ( w , j ) u_{n(w,j)} un(w,j)。例如, 上图中的 L ( w 3 ) = 4 L(w_3)=4 L(w3)=4。分层softmax将上一节条件概率近似为:
在这里插入图片描述
为了说明,让我们计算图中给定词 w c w_c wc生成词 w 3 w_3 w3的条件概率。这需要 w 3 w_3 w3的词向量 v c v_c vc和从根到 w 3 w_3 w3的路径( 图中加粗的路径)上的非叶节点向量之间的点积,该路径依次向左、向右和向左遍历:
在这里插入图片描述
σ ( x ) + σ ( − x ) = 1 \sigma(x)+\sigma(-x)=1 σ(x)+σ(x)=1,它认为基于任意词 w c w_c wc生成词表 V V V中所有词的条件概率总和为1:
∑ w ∈ V P ( w ∣ w c ) = 1 \sum_{w\in V}P(w|w_c)=1 wVP(wwc)=1
幸运的是,由于二叉树结构, L ( w o ) − 1 L(w_o)-1 L(wo)1大约与 O ( l o g 2 ∣ V ∣ ) O(log_2|V|) O(log2V)是一个数量级。当词表大小 V V V很大时,与没有近似训练的相比,使用分层softmax的每个训练步的计算代价显著降低。

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

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

相关文章

自定义创建项目

基于VueCli自定义创建项目 1.Eslint代码规范 代码规范:一套写代码的约定规则。 比如 赋值符号的左右是否需要空格 一句话结束是否要加; 正规的团队 需要统一的编码风格 https://standardjs.com/rules-zhcn.html 规则查找 https://zh-hans.eslint.org/docs/late…

mysql:[Some non-transactional changed tables couldn‘t be rolled back]不支持事务

1. mysql创建表时默认引擎MyIsam,因此不支持事务的操作; 2. 修改mysql的默认引擎,可以使用show engine命令查看支持的引擎: 【my.conf详情说明】my.cnf配置文件注释详解_xiaolin01999的博客-CSDN博客 3. 原来使用MyIsam创建的表…

微信小程序开发教学系列(12)- 实战项目案例

十二、实战项目案例 本章将通过一个简单的实战项目案例来帮助读者巩固之前学习到的知识。我们将搭建一个名为“ToDoList”的微信小程序,实现一个简单的任务清单功能。 项目介绍 ToDoList是一个用于记录和管理任务的小程序。用户可以添加、编辑、完成和删除任务&a…

springboot web开发springmvc自动配置原理

前言 我们也知道springboot启用springmvc基本不用做什么配置可以很方便就使用了但是不了解原理,开发过程中遇到点问题估计就比较头疼,不管了解的深不深入,先巴拉一番再说… 下面我们先看看官网…我的版本是2.3.2版本,发现官网改动也比较大…不同版本自己巴拉下吧,结构虽然变化…

Lesson4-2:OpenCV图像特征提取与描述---Harris和Shi-Tomas算法

学习目标 理解Harris和Shi-Tomasi算法的原理能够利用Harris和Shi-Tomasi进行角点检测 1 Harris角点检测 1.1 原理 H a r r i s Harris Harris角点检测的思想是通过图像的局部的小窗口观察图像,角点的特征是窗口沿任意方向移动都会导致图像灰度的明显变化&#xff…

java实现粤语歌曲0243填词法

粤语歌曲填词法 一、前言 转化成数字歌。对每个音符,提供配合广东话声调的字,选出成为歌词。可以在网上创作,或下载到自己电脑中使用。 简谱 3656536,歌词 落花满天蔽月光。 唱起来配合乐曲音调。这叫做‘叶韵’,又叫…

UE4 植物生长

这个可以改变SplineMesh朝向

android 输入法demo

背景: 一个简单的android输入法demo,支持输入png、gif,jpeg、webp等格式。 此示例演示如何编写一个应用程序,该应用程序接受使用 Commit Content API 从键盘发送的丰富内容(例如图像)。 用户通常希望通过表…

推荐一本AI+医疗书:《机器学习和深度学习基础以及医学应用》,附21篇精选综述

当代医学仍然存在许多亟待解决的问题,比如日益增加的成本、医疗服务水平的下降...但近几年AI技术的发展却给医疗领域带来了革命性的变化,因此AI医疗迅速兴起。 从目前已知的成果来看,人工智能在医学领域的应用已经相当广泛,智能诊…

AJAX学习笔记1发送Get请求

传统请求有哪些方式,及缺点 传统请求有哪些? 1.直接在浏览器地址栏上输入URL. 2.点击超连接. <a href"/上下文/请求地址">超链接请求</a> ---->相对路径 <a href"http://www.baidu.com">超链接请求</a> ---->绝对路…

【Python】PySpark

前言 Apache Spark是用于大规模数据&#xff08;large-scala data&#xff09;处理的统一&#xff08;unified&#xff09;分析引擎。 简单来说&#xff0c;Spark是一款分布式的计算框架&#xff0c;用于调度成百上千的服务器集群&#xff0c;计算TB、PB乃至EB级别的海量数据…

知识图谱实战应用26-基于知识图谱构建《本草纲目》的中药查询与推荐项目应用

大家好,我是微学AI,今天给大家介绍一下知识图谱实战应用26-基于知识图谱构建《本草纲目》的中药查询与推荐项目应用,本文通过Py2neo连接到知识图谱数据库,系统实现了中药的快速查询、关系分析、智能推荐和知识展示等功能。用户可以输入中药的名称或特征进行查询,系统将从知…

分页功能实现

大家好 , 我是苏麟 , 今天聊一聊分页功能 . Page分页构造器是mybatisplus包中的一个分页类 . Page分页 引入依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.1</ver…

【LeetCode每日一题】——274.H指数

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 排序 二【题目难度】 中等 三【题目编号】 274.H指数 四【题目描述】 给你一个整数数组 ci…

linux系统中串口驱动框架基本分析(经典)

第一&#xff1a;区分不同的终端类型 串行端口终端&#xff08;/dev/ttySn&#xff09; 串行端口终端&#xff08;Serial Port Terminal&#xff09;是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备。 有段时间这些串行端口设备通常被称为终…

Python:列表推导式

相关阅读 Python专栏https://blog.csdn.net/weixin_45791458/category_12403403.html?spm1001.2014.3001.5482 列表推导式使得创建特定列表的方式更简洁。常见的用法为&#xff0c;对序列或可迭代对象中的每个元素应用某种操作&#xff0c;用生成的结果创建新的列表&#xff…

Python—匹配字段

1. 「概述」 在日常开发中&#xff0c;经常需要对数据中的某些字段进行匹配&#xff0c;但这些字段可能存在微小的差异。例如&#xff0c;同一个招聘岗位的数据中&#xff0c;省份字段可能有“广西”、“广西壮族自治区”和“广西省”等不同的写法。为了处理这些情况&#xff…

(数字图像处理MATLAB+Python)第十章图像分割-第四,五节:分水岭分割和综合案例

文章目录 一&#xff1a;分水岭分割&#xff08;1&#xff09;原理&#xff08;2&#xff09;程序 二&#xff1a;综合案例&#xff1a;答题卡图像分割&#xff08;1&#xff09;设计思路&#xff08;2&#xff09;各模块设计&#xff08;3&#xff09;代码 一&#xff1a;分水…

three.js(二):webpack + three.js + ts

用webpackts 开发 three.js 项目 webpack 依旧是主流的模块打包工具;ts和three.js 是绝配&#xff0c;three.js本身就是用ts写的&#xff0c;ts可以为three 项目提前做好规则约束&#xff0c;使项目的开发更加顺畅。 1.创建一个目录&#xff0c;初始化 npm mkdir demo cd de…

第五章 树与二叉树 二、二叉树的定义和常考考点,WPL的算法

一、定义 二叉树可以用以下方式详细定义&#xff1a; 二叉树是由节点构成的树形结构&#xff0c;每个节点最多可以有两个子节点。每个节点有以下几个属性&#xff1a; 值&#xff1a;存储该节点的数据。左子节点&#xff1a;有一个左子节点&#xff0c;如果没有则为空。右子节…