Office hour 2-自然语言处理

server/2025/2/23 5:04:28/

主要涉及**自然语言处理(NLP)**的多个方面,包括发展历程、神经网络模型、大语言模型、以及实际应用。

01 - NLP的发展历程

1. 1950 - 1969

• 机器翻译研究:NLP的研究始于机器翻译,探索计算机如何处理和翻译语言。最初的研究尝试通过规则和字典进行翻译,但效果有限。

2. 1970 - 1980

• 基于规则的方法:在这一时期,NLP研究依赖于手工制定的规则和知识库来解决语言理解问题。专家系统和基于规则的系统成为主流,人工编码语言的规则进行处理。

3. 1990 - 2000

• 统计方法的兴起:随着计算能力的提高和数据量的增加,基于统计的学习方法逐渐取代了基于规则的方法,成为NLP的主流。此时期的NLP主要依赖统计模型(如N-gram模型)来分析文本。

4. 2010至今

• 深度学习的兴起:深度学习在NLP中的应用带来了革命性的进展。特别是卷积神经网络(CNN)和循环神经网络(RNN)等模型使得计算机在语言理解和生成方面取得了巨大突破。

02 - 神经网络模型

1. MLP

• 多层感知机(MLP):MLP由多个层组成,每层由多个神经元组成,每个神经元的输出是其输入的加权和,通过激活函数得到最终输出。常用于分类和回归任务

 

(1)输入层(Input Layer)

• 输入层是神经网络的第一层,接收来自外部的数据输入。每个节点(神经元)对应输入数据中的一个特征。输入层的任务是将数据传递到网络的后续层。

• 输入层不进行任何计算,它只是一个数据的传递站。

(2)隐藏层(Hidden Layers)

• MLP 中通常包含一个或多个隐藏层。每个隐藏层由多个神经元组成,这些神经元之间是全连接的(即每个神经元与上一层的所有神经元都有连接)。

• 计算过程:每个神经元会接收上一层所有神经元的输出,并通过加权求和的方式进行处理。这个求和的结果会通过激活函数(如ReLU、Sigmoid或Tanh等)进行非线性变换,从而增加网络的表达能力。

• 多个隐藏层的作用:多个隐藏层能够使网络学习到数据中的高层次特征,捕捉更加复杂的模式。

(3)输出层(Output Layer)

• 输出层是神经网络的最后一层,其作用是将隐藏层的信息转化为最终的输出。对于分类任务,输出层通常采用 softmax 函数,将结果映射为类别的概率分布;对于回归任务,输出层则可能是一个单一的节点,输出一个连续值。

MLP的工作原理

(1) 前向传播(Forward Propagation)

• MLP 中的信息流动是单向的,即从输入层开始,经过每一层的计算,直到输出层。前向传播的过程是将输入数据传递并计算出最终输出。

• 每一层的计算都会涉及到一个加权和操作(即输入数据和层的权重矩阵的乘积),并通过激活函数进行处理。

(2) 激活函数(Activation Function)

• 激活函数在 MLP 中至关重要。它引入了非线性,使得神经网络能够学习并表示复杂的模式和关系。常见的激活函数包括:

• ReLU(Rectified Linear Unit):广泛应用于隐藏层,能够有效避免梯度消失问题。

• Sigmoid:通常用于二分类问题的输出层。

• Tanh(双曲正切函数):常用于传统神经网络中,能将输出压缩到-1到1之间。

(3) 训练过程与反向传播(Backpropagation)

• 在训练过程中,MLP 会通过反向传播算法来更新权重。具体来说,神经网络根据损失函数(如均方误差或交叉熵损失)计算输出的误差,然后将误差反向传播,通过梯度下降方法更新每一层的权重。

• 反向传播通过计算每个权重对误差的贡献,来调整网络中的权重,优化网络性能。

 

MLP的优缺点

(1)优点

• MLP能够处理非线性问题,因此它具有强大的功能,适用于各种回归和分类任务。

• 它的结构简单且容易实现,可以通过标准的深度学习库(如TensorFlow、PyTorch)进行训练和优化。

(2)缺点

• MLP对输入数据的顺序和位置较为敏感,不适合处理结构化的输入数据(如图像、序列数据等)。因此,对于图像和时序数据,卷积神经网络(CNN)或循环神经网络(RNN)通常更为合适。

• 当隐藏层数目增加时,网络可能容易出现过拟合,且训练时需要较长的时间。

2. CNN

• 卷积神经网络(CNN):CNN主要用于处理图像数据,包含卷积层、池化层和全连接层。它通过局部感知区域的卷积操作,提取图像中的特征。

• 卷积层(Convolution)

• 卷积层通过使用多个滤波器(即卷积核)对输入数据(如图像)进行卷积操作,以提取图像的特征(如边缘、纹理等)。

• 图中展示了多个卷积操作,每个卷积层的输出会生成特征图,代表输入数据在该层提取的不同特征。

• 池化层(Max-Pool)

• 池化层用于对特征图进行降维操作,减少特征的数量,从而减少计算量。最大池化(Max-Pool)通常是池化操作的一种,它取局部区域中的最大值作为输出。

• 图中有多个Max-Pool操作,它们用于减小卷积输出的空间大小,并保留最重要的特征。

• 全连接层(Dense Layer)

• 全连接层的作用是将卷积和池化提取的特征进一步处理,并进行最终的预测或分类。它将来自卷积层和池化层的特征连接到输出层。

• 图中展示了最后一个全连接层,输出尺寸为1x128,接着是1x256,表示特征已经从图像特征映射到高维特征表示。

 

3. 时序神经网络(RNN)

• RNN是处理序列数据的神经网络,特别适用于处理语言模型、语音识别等任务。它通过循环结构将前一个时刻的输出与当前输入结合,使得模型能够记住前面的一些信息。

(1) 上部分(RNN的结构)

• 图中展示了一个RNN单元的基本结构,其中每个绿色的A代表一个神经网络层,这个层有相同的参数(参数共享)。

• 输入词汇word(例如”the”, “cat”, “sat”等)通过**词嵌入(word embedding)**层转换为向量形式。

• 每个词嵌入向量 x_t (如 “the”, “cat”)被输入到RNN单元中。

• RNN通过循环计算传递“状态(state)”,即上一时间步的输出(h_t-1)与当前输入(x_t)一同传入当前的A层。

• 每个RNN单元根据当前的输入和前一个时间步的状态生成新的状态h_t。

(2) 中部(RNN的计算过程)

• 该部分展示了如何通过矩阵计算来更新RNN的状态。

• h_t-1是上一时间步的输出,x_t是当前时间步的输入(词嵌入向量),A是网络的参数矩阵。

• tanh(双曲正切函数)被用作激活函数,tanh帮助神经网络捕捉输入和前一状态的非线性关系。

• 计算公式:h_t = tanh(A * [h_t-1, x_t]),其中 A 是权重矩阵,[h_t-1, x_t] 是将上一层的输出和当前输入拼接在一起的向量。

(3) 下部分(tanh函数)

• 这个部分展示了tanh函数的图像和数学定义。tanh函数是一种S形的非线性函数,通常用于神经网络中以引入非线性变换。

• tanh(x)的输出范围是-1到1,因此它有助于限制神经网络的输出范围,避免数值过大或过小,从而提高训练的稳定性。

 

4. LSTM(长短时记忆网络)

• LSTM 是一种特殊的 RNN(循环神经网络),用于解决传统RNN在处理长序列数据时遇到的梯度消失和梯度爆炸问题。以下是这张图的详细解释:

LSTM 的核心概念

LSTM 网络通过引入 门控机制 来控制信息的流动,使得网络能够记住长时间步的数据,同时忘记不重要的信息。

(1) 输入(x_t)

• 输入是当前时间步 t 的数据,这些数据通过一个词嵌入层或其他处理方式提供给 LSTM 单元。

(2) 记忆单元(c_t)

• c_t 表示当前时间步的 细胞状态,它传递了长时间步的信息。LSTM 通过细胞状态来记住重要的信息,并决定什么时候更新或丢弃这些信息。

(3) 隐藏状态(h_t)

• h_t 是当前时间步的 输出状态,它不仅依赖于当前时间步的输入 x_t,还受前一时间步的影响。h_t 是网络的输出,并传递到下一个时间步。

(4) 门控机制

• 遗忘门(σ):遗忘门决定了当前时间步的细胞状态 c_t 中的哪些信息应该被丢弃。它通过 Sigmoid 函数输出一个值(0 到 1 之间),这个值表示当前信息需要保留的程度。

• 输入门(σ):输入门控制当前输入 x_t 如何更新细胞状态 c_t。它也是通过 Sigmoid 函数来决定哪些输入需要被添加到当前状态。

• 输出门(σ):输出门控制当前细胞状态 c_t 如何影响最终的输出 h_t。它决定了从细胞状态 c_t 中提取多少信息用于当前输出。

(5) tanh 函数

• tanh 函数被应用于细胞状态 c_t,它将细胞状态的值压缩到 [-1, 1] 范围内,确保输出不会过大或过小。

(6) 信息流

• 细胞状态 c_t 在时间步之间流动,并通过门控机制(遗忘门、输入门、输出门)进行调整。输入数据 x_t 和前一时间步的输出状态 h_t-1 会共同影响当前时间步的计算。

 

5. Attention机制

• Attention机制通过在处理输入数据时聚焦于最相关的信息部分,模拟了人类的注意力机制。它通过计算每个输入元素的权重,生成加权表示,帮助模型关注重要部分。

Attention机制的核心思想:

(1) 选择性聚焦:

在处理输入数据时,模型不是平等对待所有部分,而是能够根据

当前任务的重要性动态地分配不同的关注度。

(2) 加权求和:

模型会为输入序列中的每个元素计算一个权重(或分数),然后

根据这些权重对输入进行加权求和,生成一个加权的表示,这个

表示捕捉了输入中与当前任务最相关的信息。

 

• MatMul:指的是矩阵乘法操作。此步骤通常用于计算 Query(查询)、Key(键)、Value(值)之间的关系,常用于自注意力机制(Self-Attention)中。

• SoftMax:用于对计算出来的权重进行归一化处理,使得所有权重加起来为1,便于计算注意力分布。

• Mask (opt.):在某些任务(如语言模型)中,可能需要应用掩蔽(Mask),比如防止模型看到未来的词(在训练时处理序列的任务)。

• Scale:缩放操作,通常是在计算注意力时用来防止数值过大。比如在计算点积注意力时,为了避免数值不稳定,会将点积结果缩放。

• Q, K, V:Q(Query),K(Key),V(Value)是自注意力机制中的核心概念,表示当前单词的查询信息、键和值信息。通过计算 Q 和 K 的相似度来决定 V 的重要性。

 

6. Transformer模型

• Transformer模型采用了自注意力机制(Self-Attention),能够并行处理序列中的所有元素,从而提高了训练效率。它的编码器-解码器架构允许模型同时处理输入和输出序列。

(1) 自注意力机制(Self-Attention)

自注意力机制允许模型在序列中的每个位置都计算与其他位置的关系,这使得模

型能够捕捉序列中的长距离依赖关系。

它通过计算序列中每个元素对其他所有元素的注意力分数来实现,这些分数决定

了在生成输出时应该给予其他元素多少关注。

(2) 并行处理:

与循环神经网络(RNN)不同,Transformer模型可以并行处理序列中的所有元

素,这大大提高了训练效率。

(3) 编码器-解码器架构(Encoder-Decoder Architecture):

Transformer模型通常由编码器和解码器两部分组成。编码器处理输入序列,解

码器生成输出序列。

4. 多头注意力(Multi-Head Attention):

多头注意力允许模型在不同的表示子空间中并行地学习信息,这增强了模型的表

达能力。

5. 位置编码(Positional Encoding):

由于Transformer模型本身不包含递归或卷积结构,为了使模型能够理解序列中

的位置信息,需要添加位置编码。

6. Feed Forward:在每个层之间,会有一个全连接层(Feed Forward),该层有助于增强网络的非线性表达能力。

 

7. BERT

• BERT(Bidirectional Encoder Representations from Transformers)是谷歌提出,作为一个Word2Vec的替代者,其在NLP领域的11个方向大幅刷新了精度。

BERT的优势:

RNN/LSTM:可以做到并发执行,同时提取词在句子中的关系特征,并且能在多个不同层次提取关系特征,进而更全面反映句子语义

word2vec:其又能根据句子上下文获取词义,从而避免歧义出现。

ELMO:elmo是伪双向,只是将左到右,右到左的信息加起来,而且用的是lstm,同时缺点也是显而易见的,模型参数太多,而且模型太大,

少量数据训练时,容易过拟合。

• Token Embeddings:每个输入词都会被映射到一个词向量(Token Embedding)。这些词向量捕捉了每个词的基本语义信息。

• Segment Embeddings:BERT同时支持句子对输入,每个句子通过一个“Segment Embedding”来标识(例如,Sentence A 和 Sentence B)。这有助于模型理解句子间的关系。

• Position Embeddings:BERT通过位置编码捕捉词语在句子中的顺序信息,因为Transformer本身无法处理词序问题。

• [CLS] 和 [SEP]:[CLS] 是输入序列的特殊标记,用于分类任务的输出。[SEP] 是句子分隔符,帮助模型区分不同句子。

• Embedding 合成:图中展示了通过 Token EmbeddingsSegment Embeddings 和 Position Embeddings 将词和其位置编码合并,从而形成每个词的最终表示。

 

03 - 大语言模型(LLM)

1. LLM的现存问题

• 长尾知识:LLM通常在常见的知识领域表现良好,但对长尾知识(罕见领域的知识)处理较差,生成的内容不够可靠。

• 私有数据:LLM训练时主要依赖公开数据,缺乏私有数据的知识,这限制了其在特定领域的应用。

• 数据新鲜度:LLM的知识基于固定的数据集,因此难以迅速更新对新出现信息的理解。

• 来源验证与可解释性:LLM生成的内容通常没有明确的来源,且缺乏可解释性,这给其应用带来了一定的挑战。

2. RAG - 检索增强生成

• RAG结合了传统的信息检索技术和LLM,通过外部数据库获取相关信息,再结合这些信息生成答案。这种方法可以提高生成结果的准确性,尤其是在涉及较少见问题时。

04 - 自然语言处理的应用

​​​​​​​

1. 机器翻译

• 机器翻译是NLP应用中的经典问题,通过神经网络模型,尤其是Transformer模型,机器翻译的精度和效率得到了显著提升。

2. 语法检查(Grammarly)

• 语法检查工具,如Grammarly,使用NLP技术来检测文本中的语法错误、拼写错误以及语言风格问题。

3. NanoGPT实例

• NanoGPT是一个轻量级的生成式神经网络模型,可以用来训练自定义的生成模型,例如训练一个基于《西游记》对话的聊天工具或莎士比亚风格的生成器。

https://github.com/karpathy/nanoGPT


http://www.ppmy.cn/server/169172.html

相关文章

以用户为中心,汽车 HMI 界面设计的创新之道

在汽车智能化飞速发展的当下,汽车 HMI(人机交互界面)成为连接人与车的关键桥梁。如何打造出优秀的 HMI 界面?答案是以用户为中心,探索创新之道。 用户需求是汽车 HMI 界面设计的指南针。在设计前期,深入调…

Spring-GPT智谱清言AI项目(附源码)

一、项目介绍 本项目是Spring AI第三方调用整合智谱请言(官网是:https://open.bigmodel.cn)的案例,回答响应流式输出显示,这里使用的是免费模型,需要其他模型可以去 https://www.bigmodel.cn/pricing 切换…

深入理解Redis

一、引言 在当今高并发、大数据量的互联网应用场景中,提升系统性能和响应速度是后端开发的关键挑战之一。Redis作为一款高性能的内存数据库,以其出色的读写速度、丰富的数据结构和强大的功能特性,成为Java后端开发中不可或缺的缓存和数据存储…

Spring Boot 实战:轻松实现文件上传与下载功能

目录 一、引言 二、Spring Boot 文件上传基础 (一)依赖引入 (二)配置文件设置 (三)文件上传接口编写 (一)文件类型限制 (二)文件大小验证 &#xff0…

iOS开发书籍推荐 - 《高性能 iOS应用开发》(附带链接)

引言 在 iOS 开发的过程中,随着应用功能的增加和用户需求的提升,性能优化成为了不可忽视的一环。尤其是面对复杂的界面、庞大的数据处理以及不断增加的后台操作,如何确保应用的流畅性和响应速度,成为开发者的一大挑战。《高性能 …

深入解析 Flutter 性能优化:从原理到实践

深入解析 Flutter 性能优化:从原理到实践的全面指南 Flutter 是一个高性能的跨平台框架,但在开发复杂应用时,性能问题仍然可能出现。性能优化是开发高质量 Flutter 应用的关键。本篇博客将从 Flutter 的渲染原理出发,结合实际场景…

算术优化算法AOA-(可用于特征选择与提取/图像识别与分类/图像分割/能源系统规划)

具体算法:算术优化算法AOA-(可用于特征选择与提取/图像识别与分类/图像分割/能源系统规划) 算术优化算法(Arithmetic Optimization Algorithm,简称AOA)是一种用于求解优化问题的数学算法。它通过使用算术运…

【AI】Docker中快速部署Ollama并安装DeepSeek-R1模型: 一步步指南

【AI】Docker中快速部署Ollama并安装DeepSeek-R1模型: 一步步指南 一、前言 为了确保在 Docker 环境中顺利安装并高效运行 Ollama 以及 DeepSeek 离线模型,本文将详细介绍整个过程,涵盖从基础安装到优化配置等各个方面。通过对关键参数和配置的深入理解…