深度学习 DAY3:NLP发展史及早期的前馈神经网络(ANN)及多任务学习

NLP发展史

NLP发展脉络简要梳理如下:

2001 - Neural language models(神经语言模型)
2008 - Multi-task learning(多任务学习)
2013 - Word embeddings(词嵌入)
2013 - Neural networks for NLP(NLP神经网络)
2014 - Sequence-to-sequence models
2015 - Attention(注意力机制)
2015 - Memory-based networks(基于记忆的网络)
2018 - Pretrained language models(预训练语言模型)

2001 - 神经语言模型

第一个神经语言模型是Bengio等人在2001年提出的前馈神经网络,如图所示:

             

这个模型将从表C中查找到的n个单词作为输入向量表征。这种向量被现在的学者们称做“词嵌入”。这些词嵌入级联后被输入到一个隐藏层中,该隐藏层的输出又被输入到softmax。

场景示例:预测下一个词

假设我们有一句话的前几个词:

“I like to eat …”

我们的目标是:用神经网络根据已有的上下文I like to eat来预测下一个词(比如 “apples”, “rice”, “pizza” 等)。

1. 准备输入(词索引)

  • 首先,我们给词表(vocabulary)中的每个单词都分配一个 索引 (index)。在最底层,模型看到的输入并不是 “I, like, to, eat” 的字符,而是它们在词表中的索引编号。
  • 比如:
    • “I” → index = 101
    • “like” → index = 532
    • “to” → index = 7
    • “eat” → index = 85
  • 在图中,这些索引就对应 “index for wt−3​”、“index for wt−2” 等。

Thought about neural language model explanation,持续 12 秒

下面给你举一个具体示例,帮助理解图中神经网络语言模型(Neural Language Model)是如何工作的。


场景示例:预测下一个词

假设我们有一句话的前几个词:

“I like to eat …”

我们的目标是:用神经网络根据已有的上下文I like to eat来预测下一个词(比如 “apples”, “rice”, “pizza” 等)。

1. 准备输入(词索引)

  • 首先,我们给词表(vocabulary)中的每个单词都分配一个 索引 (index)。在最底层,模型看到的输入并不是 “I, like, to, eat” 的字符,而是它们在词表中的索引编号。
  • 比如:
    • “I” → index = 101
    • “like” → index = 532
    • “to” → index = 7
    • “eat” → index = 85
  • 在图中,这些索引就对应 “index for wt−3w_{t-3}wt−3​”、“index for wt−2w_{t-2}wt−2​” 等。

2. 从词嵌入矩阵 C 中查询 Embedding

  • 模型里有一个嵌入矩阵(Embedding Matrix),通常记作 C。它是一个「表」,用来将「词索引」映射成「向量表示」。
  • 举例,如果词表的大小是 V=10000,而我们的词向量维度设为 d=300,那么 C 的大小就是 10000 x 300。每一行对应一个单词的 300 维向量。
  • 当输入是索引 [101, 532, 7, 85](表示 “I like to eat”)时,模型会分别去 C 的第 101 行、第 532 行、第 7 行、第 85 行,把那几行向量取出来:
    • C("I") = 一个 300 维向量
    • C("like") = 一个 300 维向量
    • C("to") = 一个 300 维向量
    • C("eat") = 一个 300 维向量
  • 这几条向量就如同图中那几个蓝色小方框,里面放着红色小圆点(表示向量维度的数值)。

3. 将若干个词向量组合输入到隐层

  • 拿到这四个词向量后,通常会拼接 (concatenate) 或者做其他操作(例如平均、加和等),形成一个长的向量,作为神经网络的输入。
  • 随后,这个长向量会通过一个(或多个)隐层 (hidden layer)
    • 图中用 “tanh” 表示可能存在一个全连接层 + 激活函数(如 tanh⁡ 或 ReLU)。
    • 模型会将输入向量映射到一个新的表示空间,学习到“这些词组合在一起时,它们所包含的上下文信息”。

4. 输出层(Softmax)得到下一词概率分布

  • 随后,隐层的输出会传递给输出层 (output layer),这里通常是一个大小为 V(词表大小)的全连接层,再接一个 Softmax。
  • Softmax 会将网络输出变成一个概率分布,即对词表中每个可能的词(1 到 V)给出一个概率:

  • 这就意味着模型会输出类似:
    • “apples” → 0.28
    • “rice” → 0.15
    • “pizza” → 0.10
    • “is” → 0.05
    • “and” → 0.01
    • …(其他词)
  • 这些值相加等于 1,表示在给定 “I like to eat” 这个上下文时,模型认为下一个词是 “apples” 的概率最高,其次是 “rice”,再然后是 “pizza”,依此类推。

5. 训练 & 参数更新

  • 在训练过程中,我们会有大量的句子样本(真实文本)。模型会对每个句子中的每个位置尝试预测下一个词,然后与真实词做对比,计算交叉熵损失或负对数似然等。
  • 通过反向传播 (backpropagation),模型会不断更新:
    • Embedding Matrix C(让词向量变得更能表达单词的含义与语境),
    • 隐层/输出层的权重(让网络更好地捕捉上下文与下一词的依赖关系)。

6. 小结

综合起来,这个流程就是:

  1. 将离散单词索引 → 查表得到向量 (Embedding) → 隐层 → 输出层 (Softmax) → 获得概率分布
  2. 通过大量语料训练,让模型参数学到“在特定上下文时,下一个词更可能是什么”。

这个思路在当年是对传统 n-gram 语言模型的一次巨大改进,因为神经网络可以通过共享的词向量解决数据稀疏和泛化能力差的问题,并且在处理多样化的文本时效果更好。

语言建模通常是应用RNN时的第一步,是一种非监督学习形式。尽管它很简单,但却是本文后面讨论的许多技术发展的核心:

词嵌入:word2vec 的目标是简化语言建模。

sequence-to-sequence 模型:这种模型通过一次预测一个单词生成一个输出序列。

预训练语言模型:这些方法使用来自语言模型的表述进行迁移学习。

反过来讲,这意味着近年来 NLP 的许多重要进展都可以归结为某些形式的语言建模。为了“真正”理解自然语言,仅仅从文本的原始形式中学习是不够的。我们需要新的方法和模型。

2008- 多任务学习

多任务学习是在多个任务上训练的模型之间共享参数的一种通用方法。在神经网络中,可以通过给不同层施以不同的权重,来很容易地实现多任务学习。多任务学习的概念最初由Rich Caruana 在1993年提出,并被应用于道路跟踪和肺炎预测(Caruana,1998)。直观地说,多任务学习鼓励模型学习对许多任务有用的表述。这对于学习一般的、低级的表述形式、集中模型的注意力或在训练数据有限的环境中特别有用。

在2008年,Collobert 和 Weston 将多任务学习首次应用于 NLP 的神经网络。在他们的模型中,查询表(或单词嵌入矩阵)在两个接受不同任务训练的模型之间共享,如下面的图所示。 

 

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

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

相关文章

全面了解 Web3 AIGC 和 AI Agent 的创新先锋 MelodAI

不管是在传统领域还是 Crypto,AI 都是公认的最有前景的赛道。随着数字内容需求的爆炸式增长和技术的快速迭代,Web3 AIGC(AI生成内容)和 AI Agent(人工智能代理)正成为两大关键赛道。 AIGC 通过 AI 技术生成…

54.数字翻译成字符串的可能性|Marscode AI刷题

1.题目 问题描述 小M获得了一个任务,需要将数字翻译成字符串。翻译规则是:0对应"a",1对应"b",依此类推直到25对应"z"。一个数字可能有多种翻译方法。小M需要一个程序来计算一个数字有多少种不同的…

RabbitMQ5-死信队列

目录 死信的概念 死信的来源 死信实战 死信之TTl 死信之最大长度 死信之消息被拒 死信的概念 死信,顾名思义就是无法被消费的消息,一般来说,producer 将消息投递到 broker 或直接到queue 里了,consumer 从 queue 取出消息进…

10JavaWeb——SpringBootWeb案例01

前面我们已经讲解了Web前端开发的基础知识,也讲解了Web后端开发的基础(HTTP协议、请求响应),并且也讲解了数据库MySQL,以及通过Mybatis框架如何来完成数据库的基本操作。 那接下来,我们就通过一个案例,来将前端开发、后…

JAVA 接口、抽象类的关系和用处 详细解析

接口 - Java教程 - 廖雪峰的官方网站 一个 抽象类 如果实现了一个接口,可以只选择实现接口中的 部分方法(所有的方法都要有,可以一部分已经写具体,另一部分继续保留抽象),原因在于: 抽象类本身…

ResNeSt: Split-Attention Networks论文学习笔记

这张图展示了一个名为“Split-Attention”的神经网络结构,该结构在一个基数组(cardinal group)内进行操作。基数组通常指的是在神经网络中处理的一组特征或通道。图中展示了如何通过一系列操作来实现对输入特征的注意力机制。 以下是图中各部…

设计模式Python版 原型模式

文章目录 前言一、原型模式二、原型模式示例三、原型管理器 前言 GOF设计模式分三大类: 创建型模式:关注对象的创建过程,包括单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、原型模式和建造者模式。结构型模式:关注类和对…

神经网络的通俗介绍

人工神经网络,是一种模仿人类大脑工作原理的数学模型。人类的大脑是由无数的小“工作站”组成的,每个工作站叫做“神经元”。这些神经元通过“电线”互相连接,负责接收、处理和传递信息。 一、人类大脑神经网络 人类大脑的神经网络大概长这…

OpenEuler学习笔记(八):安装OpenEuler

在VMware Workstation中安装OpenEuler 准备工作 下载并安装VMware Workstation虚拟机软件。前往OpenEuler官网下载OpenEuler系统镜像文件。 创建虚拟机 打开VMware Workstation,点击“创建新的虚拟机”,选择“自定义”,点击“下一步”。选择…

Leetcode::119. 杨辉三角 II

119. 杨辉三角 II 已解答 简单 相关标签 相关企业 给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例 1: 输入: rowIndex 3 输出: [1,3,3,1]示例 2: 输入: rowIndex 0…

让Android adb支持互联网调试脱离局域网

某些特殊场景下由于不方便,手机不在身边,但需要进行adb调试。 首先可以先开启adb的无线调试模式,我使用的是第二种方式。 在Android手机上安装一个终端模拟器,并赋予root权限,随后执行: setprop service.…

Dest1ny漏洞库:用友 U8-CRM 系统 ajaxgetborrowdata.php 存在 SQL 注入漏洞

用友U8-CRM系统ajaxgetborrowdata.php存在SQL注入漏洞,文件多个方法存在SQL注入漏洞,未经身份验证的攻击者通过漏洞执行任意SQL语句,调用xp_cmdshell写入后门文件,执行任意代码,从而获取到服务器权限。 hunter app.n…

能说说MyBatis的工作原理吗?

大家好,我是锋哥。今天分享关于【Redis为什么这么快?】面试题。希望对大家有帮助; 能说说MyBatis的工作原理吗? MyBatis 是一款流行的持久层框架,它通过简化数据库操作,帮助开发者更高效地与数据库进行交互。MyBatis…

DeepSeek崛起:中国AI新星如何撼动全球资本市场格局

引言 近期,中国人工智能实验室DeepSeek发布的两款开源模型——DeepSeek V3和DeepSeek R1——以其优异的性能和低廉的成本迅速爆火,引发了全球资本市场的震动,尤其对美国资本市场产生了显著影响。DeepSeek R1更是能够在数学、代码和推理任务上…

将5分钟安装Thingsboard 脚本升级到 3.9

稍微花了一点时间,将5分钟安装Thingsboard 脚本升级到最新版本 3.9。 [rootlab5 work]# cat one-thingsboard.shell echo "test on RHEL 8.10 " source /work/java/install-java.shell source /work/thingsboard/thingsboard-rpm.shell source /work/po…

算法刷题Day30

题目链接 描述 解题思路 考点:动态规划 dp[i][j]表示当前坐标的最小路径和dp初始化状态转移: dp[i][j] matrix[i][j] min(dp[i-1][j],dp[i][j-1]) 比较正上方和正左方的路径和哪个小。取小的那条路 代码 import copy class Solution:def minPathS…

大数据Hadoop入门2

目录 第三部分(Hadoop MapReduce和Hadoop YARN) 1.课程内容-大纲-学习目标 2.理解先分再合、分而治之的思想 3.hadoop团队针对MapReduce的设计构思 4.Hadoop MapReduce介绍、阶级划分和进程组成 5.Hadoop MapReduce官方示例-圆周率PI评估 6.Hadoo…

基于ESP8266的多功能环境监测与反馈系统开发指南

项目概述 本系统集成了物联网开发板、高精度时钟模块、环境传感器和可视化显示模块,构建了一个智能环境监测与反馈装置。通过ESP8266 NodeMCU作为核心控制器,结合DS3231实时时钟、DHT11温湿度传感器、光敏电阻和OLED显示屏,实现了环境参数的…

开发环境搭建-3:配置 JavaScript 开发环境 (fnm+ nodejs + pnpm + nrm)

在 WSL 环境中配置:WSL2 (2.3.26.0) Oracle Linux 8.7 官方镜像 node 官网:https://nodejs.org/zh-cn/download 点击【下载】,选择想要的 node 版本、操作系统、node 版本管理器、npm包管理器 根据下面代码提示依次执行对应代码即可 基本概…

npm:升级自身时报错:EBADENGINE

具体报错信息如下: 1.原因分析 npm和当前的node版本不兼容。 // 当前实际版本: Actual: {"npm":"10.2.4","node":"v20.11.0"}可以通过官网文档查看与自己 node 版本 兼容的是哪一版本的npm,相对应进行更新即可…