自然语言处理:多层感知机MLP和Word2vec

news2024/11/27 8:24:50

文章目录

  • 多层感知机MLP
    • 1.神经网络
    • 2.反向传播算法
    • 3.激活函数
    • 4.损失函数
    • 5.神经网络的使用场景
  • Word2vec
  • 参考

多层感知机MLP

1.神经网络

神经网络是一种计算模型,它受到人脑神经元之间连接和信息处理方式的启发。它由许多简单的处理单元(称为神经元或节点)组成,并通过这些节点之间的连接进行信息传递和处理。

神经网络广泛应用于许多领域,包括图像和语音识别、自然语言处理、机器翻译、推荐系统等。它能够通过学习大量数据来进行模式识别和特征提取,从而实现复杂的任务和问题求解。

本文以多层感知机(Multi-Layer Perceptron,MLP)这一神经网络为例来进行介绍。

  • 结构:

一个神经网络通常由多个层组成,包括输入层、隐藏层和输出层。每个节点接收来自上一层节点的输入,并通过激活函数对输入进行处理,然后将输出传递给下一层节点。隐藏层在输入层和输出层之间起到了“过渡”或“提取特征”的作用。

在这里插入图片描述
h 1 ( x ) = f ( W 1 x + b 1 ) h_1(x) = f(W_1x+b_1) h1(x)=f(W1x+b1)
h l ( x ) = f ( W l h l − 1 ( x ) + b l ) h_l(x) = f(W_lh_{l-1}(x)+b_l) hl(x)=f(Wlhl1(x)+bl)
y ( x ) = f ( W L h L − 1 ( x ) + b L ) y(x) = f(W_{L}h_{L-1}(x)+b_{L}) y(x)=f(WLhL1(x)+bL)
其中, f f f为激活函数, W L W_{L} WL为输出层权重矩阵, b L b_{L} bL为输出层偏置。

  • 训练:

神经网络的学习发生在训练阶段,利用训练数据不断调整节点之间的连接权重和阈值值,以最小化预测输出与实际输出之间的误差。常用的训练算法包括 反向传播算法和梯度下降。

2.反向传播算法

反向传播算法(Backpropagation Algorithm)是神经网络中常用的一种训练算法,用于调整神经网络的权重和偏差(即连接权重和阈值值),以使网络能够更好地逼近给定的训练数据。

反向传播算法的核心思想是通过计算预测输出与实际输出之间的误差,并将误差从输出层向输入层逐层反向传播,以更新网络中的权重和偏差。

具体来说,反向传播算法分为两个主要的步骤:前向传播和反向传播。

  1. 前向传播:从输入层开始,逐层计算每个节点的输出,直到达到输出层。在这个过程中,根据节点之间的连接权重和偏差,将输入信号通过激活函数进行处理,并传递到下一层节点,直到最终的输出。以下几个公式就是前向传播:

h 1 ( x ) = f ( W 1 x + b 1 ) h_1(x) = f(W_1x+b_1) h1(x)=f(W1x+b1)
h l ( x ) = f ( W l h l − 1 ( x ) + b l ) h_l(x) = f(W_lh_{l-1}(x)+b_l) hl(x)=f(Wlhl1(x)+bl)
y ( x ) = f ( W L h L − 1 ( x ) + b L ) y(x) = f(W_{L}h_{L-1}(x)+b_{L}) y(x)=f(WLhL1(x)+bL)
其中, f f f为激活函数, W L W_{L} WL为输出层权重矩阵, b L b_{L} bL为输出层偏置。

  1. 反向传播:计算预测输出与实际输出之间的误差,并将误差从输出层向输入层逐层传播。根据误差值,按照链式法则(Chain Rule)计算每个节点的调整量。然后使用优化算法(如梯度下降),通过乘上学习率,更新神经网络中的连接权重和偏差。

在多层感知机中,反向传播用于更新模型参数,求解损失函数的梯度。设损失函数为 L L L,输出为 y y y,真实标签为 t t t,则反向传播的计算过程如下:

δ L = ∂ L ∂ y f ′ ( W L h L − 1 ( x ) + b L ) \delta_{L} = \frac{\partial L}{\partial y}f'(W_{L}h_{L-1}(x)+b_{L}) δL=yLf(WLhL1(x)+bL)

δ l = ∂ L ∂ h l f ′ ( W l + 1 T δ l + 1 ) \delta_{l} = \frac{\partial L}{\partial h_{l}}f'(W_{l+1}^{T}\delta_{l+1}) δl=hlLf(Wl+1Tδl+1)

∂ L ∂ W l = h l − 1 δ l T \frac{\partial L}{\partial W_{l}} = h_{l-1}\delta_{l}^{T} WlL=hl1δlT

∂ L ∂ b l = δ l \frac{\partial L}{\partial b_{l}} = \delta_{l} blL=δl

其中, δ L \delta_{L} δL为输出层误差, δ l \delta_{l} δl为第 l l l层隐藏层误差, f ′ f' f为激活函数的导数。

反向传播算法反复迭代以上两个步骤,直到达到预定的停止条件(如误差收敛或达到最大训练次数)为止。通过训练过程中不断调整网络参数,神经网络能够逐渐优化并学习到与给定训练数据相匹配的模式和特征。

反向传播算法是神经网络中非常重要且常用的训练算法,它为神经网络的学习和调整提供了一种有效的方式。

3.激活函数

激活函数(Activation Function)是神经网络中的一种非线性函数,应用于神经元的输出,用于引入非线性变换和增加模型的表达能力。

在神经网络中,每个神经元都有一个激活函数,用于对输入信号进行处理,并将处理后的输出传递给下一层的神经元。激活函数的作用是将输入的加权和与偏差进行转换,以产生非线性的输出。

不同的激活函数具有不同的特性,如非线性、可导性和抑制/增强特定输入范围等。选择适当的激活函数对于神经网络的训练和学习非常重要,可以提高模型的表达能力和性能。

关于激活函数建议好好看下这篇博客

4.损失函数

损失函数(Loss Function)是用来衡量模型预测结果与真实值之间差异的函数。它是训练过程中最小化的目标函数,用来衡量模型在训练数据上的性能和误差大小。

在机器学习和深度学习中,常用的损失函数根据任务类型和目标不同,也有多种选择。以下是一些常见的损失函数:

  1. 均方误差(Mean Square Error, MSE):用于回归任务,计算预测值和真实值之间的平均平方差。MSE对异常值比较敏感。

  2. 交叉熵损失(Cross-Entropy Loss):用于分类任务,根据预测结果和真实标签之间的差距计算损失值。交叉熵损失比较适用于多分类任务。

  3. 对数损失(Log Loss):也用于二分类和多分类任务,衡量预测概率分布和真实标签之间的误差。

  4. Hinge损失:用于支持向量机(Support Vector Machines, SVM)中,适合用于二分类。

  5. KL散度(Kullback-Leibler Divergence):用于衡量两个概率分布之间的差异,常用于生成模型中。

选择合适的损失函数对于模型的训练和优化至关重要。通过最小化损失函数,模型可以通过反向传播算法(Backpropagation)调整参数以使预测结果逼近真实值,提高模型的性能和准确性。在多层感知机中,常用的损失函数为均方误差(MSE)和交叉熵(cross-entropy)。

5.神经网络的使用场景

多层感知机(Multi-Layer Perceptron, MLP)适用于许多任务,**特别是在分类和回归问题中表现良好。**以下是一些常见的任务,适合使用多层感知机:

  1. 分类任务:多层感知机可以用于解决二分类和多分类问题。通过在输出层使用适当的激活函数(如Sigmoid或Softmax),多层感知机可以对输入样本进行分类预测。

  2. 回归任务:多层感知机也可以用于解决回归问题,其中输出层不再使用激活函数,而是直接输出连续值。通过训练过程中的误差最小化,多层感知机可以对输入样本进行连续值的预测。

  3. 特征提取:多层感知机的隐藏层可以用来提取输入数据的特征表示。通过在多个隐藏层进行非线性变换,多层感知机可以从原始输入中逐层提取出更高级别的特征。

  4. 强化学习:多层感知机在强化学习任务中也常被用作值函数近似,用于根据当前状态预测最优动作的价值。

需要注意的是,在处理具有复杂结构和序列性质的数据(如文本、语音、图像)时,常常会将多层感知机与其他技术如卷积神经网络(CNN)和循环神经网络(RNN)结合使用,以更好地捕捉数据中的空间和时间相关性。

Word2vec

Word2Vec是一种基于神经网络的词向量模型,它通过学习词语在上下文中的分布来生成词向量,以捕捉词语之间的语义关系。Word2Vec主要基于两个不同的模型:CBOW(Continuous Bag of Words)和Skip-gram。

  1. CBOW模型:

    • 输入:CBOW模型的输入是上下文窗口中的周围词语,例如"I love to eat ice cream"中的上下文词语"love"和"to"。
    • 隐藏层:模型通过将上下文词语的词向量求和并取平均,得到隐藏层的表示。
    • 输出:通过隐藏层的词向量表示来预测中心词语,即输入的缺失词语,如预测"eat"。
    • 目标函数:CBOW模型的目标是最大化正确中心词语的概率。
  2. Skip-gram模型:

    • 输入:Skip-gram模型的输入是中心词语,例如"I love to eat ice cream"中的中心词语"to"。
    • 隐藏层:模型使用中心词语的词向量作为隐藏层的表示。
    • 输出:通过隐藏层的词向量来预测上下文词语,即在给定中心词语的情况下预测周围的词语,如预测"love"和"eat"。
    • 目标函数:Skip-gram模型的目标是最大化正确上下文词语的概率。

在训练Word2Vec模型时,采用的是基于梯度下降的优化算法,通过迭代训练样本来更新并调整词向量的参数。经过训练后,生成的词向量能够表达词语之间的语义关系,用于词语的相似性计算、文本分类、文本生成等自然语言处理任务。

Word2Vec模型的优点包括:能够捕获词语的语义关系、学习到的词向量具有良好的线性性质、可扩展性强等。但也有一些缺点,如对于生僻词和上下文数量较少的词语可能表现不佳,且无法处理词序信息。

总的来说,Word2Vec利用上下文信息学习词语的向量表示,成为了词向量领域的经典模型,并在各种自然语言处理任务中取得了良好的效果。

参考

https://blog.51cto.com/u_16099172/6290977
https://blog.csdn.net/weixin_39910711/article/details/114849349

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

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

相关文章

初始Liunx线程

文章目录 前言1.初始Liunx下线程2.关于虚拟地址的补充知识3.线程的相关特点1.线程的优点2.线程的缺点3.线程异常4.线程和进程的比较 4.线程相关操作接口线程控制相关接口 5.关于线程id的理解 前言 本文主要是对Liunx之下线程的前置知识铺垫,同时也是对之前进程的相…

Spring Boot 中的认证是什么,如何使用

Spring Boot 中的认证是什么,如何使用 在 Web 应用程序中,认证是一项重要的安全措施。Spring Boot 提供了丰富的认证机制,可以帮助我们轻松地实现各种认证需求。本文将介绍 Spring Boot 中的认证是什么,以及如何使用 Spring Boot…

2023上半年软考系统分析师科目一整理-16

2023上半年软考系统分析师科目一整理-16 信息系统的性能评价指标是客观评价信息系统性能的依据,其中,( )是指系统在单位时间内处理请求的数量。 A.系统响应时间 B.吞吐量 C.资源利用率 D.并发用户数 运用互联网技术,在…

软件工程——第7章实现知识点整理

本专栏是博主个人笔记,主要目的是利用碎片化的时间来记忆软工知识点,特此声明! 文章目录 1.实现由哪两个部分组成? 2.编码是什么?所选用的程序设计语言对程序的哪些特性有着深远影响? 3.软件测试在软件生…

旅游卡系统招募城市合伙人

旅游业的不断发展,旅游卡系统作为一种新型的旅游消费模式也逐渐被越来越多的人所认可。现在,许多旅游卡系统开始招募城市合伙人,以进一步拓展其市场。 旅游卡系统是一种可以将不同景区、景点门票进行整合,并提供折扣优惠的旅游…

谈谈mysql——Binlog的复制方式和解析技巧

mysql 我们先来看一下MySQL的基本架构,从大的方面来讲,一个server层,一个引擎层。server层就像一个接口,可以对接任何符合规定的引擎。具体的细节可以参考我之前写过的文章mysql的这些坑你踩过吗?快来看看怎么优化mys…

vue3+pinia用户信息持久缓存(token)的问题

vue3pinia用户信息持久缓存(token)的问题 对博主来说,这是个相当复杂的问题。 当初在使用vue2vuex进行用户信息持久登录时,写了不下3篇博客,确实是解决了问题,博客链接如下 vue存储和使用后端传递过来的tokenvue中对…

动态规划之 509斐波那契数(第1道)

目录 题目:斐波那契数 (通常用 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。 解法: 动态规划法: 题目:斐波那契数 (通常用…

大象机器人人工智能套装2023版深度学习协作机器人、先进机器视觉与应用场景

引言: 介绍当前的版本 今天我们要介绍的是aikit2023,aikit2023是aikit的全新升级版。 AIkit 2023 是一套集视觉,定位抓取、自动分拣模块为一体的入门级人工智能套装。 该套装基于python平台,可通过开发软件实现机械臂的控制&am…

gitee提交项目失败记录:remote:error:hook declined to update refs/heads/master

问题描述; 今天修改了项目里面一些文件内容,结果提交的时候报错了,可以提交到本地仓库,但提交到中央仓库报如下异常,因此记录下,防止后面再遇到…… 解决办法: 登录gitee账号,在设置…

自定义MVC的进阶使用

文章目录 前言一、环境配置1.1 将框架打包成jar包1.2 将Jar包导入新项目1.3 将分页标签相关文件、及相关助手类导入1.4 配置文件 二、前后台编写2.1 实体类2.2 dao2.3 Servlet2.4 配置mvc.xml2.5 JSP2.6 运行结果 前言 通用增删改查、通用分页、XML解析反射建模,包…

【网络安全带你练爬虫-100练】第6练:内嵌发包提取数据

目录 一、分析目标: 二、代码实现 目标1:对于捕获的URL内嵌发包 目标2:找到电话和邮箱的位置 目标3:提取电话和邮箱 三、完整代码 四、网络安全小圈子 (注:需要带上登录成功后的cookie发包&#xff…

Nginx部署前后端分离项目

dev.env.js解释 //此文件时开发环境配置文件 use strice//使用严格模式 const merge require(webpacl-merge)//合并对象 const prodEnv require(./prod.env)//导出 module.exports merge(prodEnv,{//合并两个配置文件对象并生成一个新的配置文件,如果合并的过程…

使用Postman做接口测试并生成接口测试报告

学习目标 1、录制脚本或使用手写url进行抓包 2、微信api接口(可录制可手写) 3、添加多 个标签,获取多个标签,编辑多个标签,删除多个标签!!!(csv格式) 4、通过…

Java JDK 安装及环境配置教程

一、安装 1、安装包 jdk1.8安装包下载路径 2、创建一个英文的文件夹 注意:整个路径不要有中文、建议文件夹直接命名为JDK。 3、在该文件夹下创建两个空文件夹,分别为:jdk1.8 和 jre 其中jdk1.8 是我的JDK版本,这个可以自行改变。…

宝塔 安装/使用Jenkins-图文小白教程

一、Jenkins包下载 大家可以从Jenkins官网(https://www.jenkins.io/)根据自己的需要下载最新的版本。 但Jenkins官网下载较慢,容易造成下载失败。可以去国内的开源镜像网站下载Jenkins最新版本。目前博主使用的是清华大学的开源镜像网站&…

【spring创建对象方式】 and 【Java创建对象方式】

Spring创建对象方式 通过构造函数创建对象,通过静态工厂方式创建对象,通过实例工厂方式创建对象 1、通过构造函数创建对象 无参构造函数: 最基本的对象创建方式,只需要有一个无参构造函数(类中没有写任何的构造函数…

excel 复制出来的数据内容自动带上空格

在excel中批量处理完了公式,想复制到navicat 或者文本编辑框里,发现都会自动带上双引号,但是excel 里是没有,查找了半天。 在excel里的文本如下所示 拷贝出来的结果如下所示: 经过检查发现原文中只要带有回车或者换行…

A40i Linux3.10开发板移植高精度定时器hrtimer驱动

目录 整编内核 修改Makefile文件 编译内核 生成.ko文件 应用层调用 这里使用整个编译内核的方式编译.ko文件。 整编内核 编写一个hrtimer_demo.c的驱动程序源码如下&#xff1a; #include <linux/module.h> #include <linux/kernel.h> #include <linux/i…

相机图片给 Livox 激光雷达点云赋色(python代码 单文件)

需要配置PCD文件路径, 图片路径,相机内参,相机和雷达的外参; 单文件, Windows , liunx 都可以运行。 雷达和相机外参如何标定请看我的另外一篇标定的代码文章。 效果如下图: 附上代码: # coding:utf-8import cv2 import numpy as np import open3d as o3ddef get_U…