【初学人工智能原理】【12】循环:序列依赖问题
前言
本文教程均来自b站【小白也能听懂的人工智能原理】,感兴趣的可自行到b站观看。
代码及工具箱
本专栏的代码和工具函数已经上传到GitHub:1571859588/xiaobai_AI: 零基础入门人工智能 (github.com),可以找到对应课程的代码
正文
对于时间上有关联性的数据,如语音和文字,我们需要一种能够理解序列数据的神经网络。这种网络就是循环神经网络(RNN)。RNN的设计理念是利用记忆来处理序列数据,它的隐藏层不仅取决于当前输入,还取决于上一个时间点的隐藏状态。
以处理文字为例,我们首先需要将文字转换为计算机能够理解的数字形式,这通常是通过嵌入层实现的。嵌入层将每个单词映射为一个固定长度的向量,这个向量能够捕捉单词的语义信息。
接下来,这些向量序列被输入到RNN中。RNN的每个时间点都会处理一个单词向量,并更新其内部状态,这个状态包含了之前所有单词的信息。这样,RNN能够在整个句子层面上理解单词的上下文。
最后,RNN的输出可以被用来进行分类任务,比如判断评论是正面的还是负面的。通过训练,RNN学会在序列的每个时间点捕捉到关键信息,并能够在整个序列处理完成后做出决策。
总结来说,对于时间序列数据,我们使用RNN来处理,因为它能够记住序列中的信息,并利用这些信息来理解和预测序列的下一个状态。
如何把文字转成计算机能够识别的数字?
词典索引
在自然语言处理中,我们通常将词作为处理的基本单位,因为词能够更好地捕捉语言的语义。为了将词转换为数字,我们可以使用一种叫做“词袋”模型的方法。这种方法简单来说,就是给每个词分配一个唯一的数字ID。
例如,我们可以通过查词典,找到每个词在词典中的位置,这个位置就可以作为这个词的数字表示。比如,“nice”是第6787个词,“to”是第2845个词,“meet”是第5898个词,“you”是第9032个词。这样,整句话“nice to meet you”就可以被转换为数字序列[6787, 2845, 5898, 9032]。
这种转换后的数字序列可以作为神经网络的输入。然而,这种方法有一个缺点,就是它没有考虑到词之间的上下文关系。为了更好地捕捉词的语义和上下文信息,我们通常使用词嵌入技术,如Word2Vec或GloVe,这些技术可以将每个词映射到一个高维空间中的向量,其中向量之间的距离反映了词之间的语义关系。这样,神经网络就能更好地理解和处理自然语言数据。
处理中文文本时,我们首先需要进行分词,因为中文没有像英文那样的自然空格来分隔单词。分词是将句子切割成一个个有意义的词的过程。一旦我们有了分好的词汇,我们就可以像处理英文那样,将每个词转换成它在词典中的位置,也就是一个数字。
但是,这种方法可能会遇到一个问题。如果两个词在词典中的位置很接近,比如“开除”和“开心”,它们在数字表示上可能非常相似,尤其是在进行归一化处理后。这种相似性可能会误导我们的模型,因为它没有考虑到词的具体含义和上下文。
为了解决这个问题,我们可以使用词嵌入技术,比如Word2Vec或GloVe,这些技术不仅考虑到词的位置,还考虑到词的上下文,能够为每个词生成一个更加丰富的向量表示。这样,即使“开除”和“开心”在词典中的位置接近,它们的向量表示也能够体现出它们在语义上的差异,从而帮助模型更好地理解中文文本。
onehot编码
在自然语言处理中,为了避免词汇之间的混淆,我们通常使用一种叫做one-hot编码的方法。这种编码方式将每个词表示为一个很长的向量,这个向量的维度等于词典中词汇的总数。在这个向量中,只有一个元素是1,其他所有元素都是0。这个1的位置就代表了特定的词。
比如,如果我们有一个包含1万个词的词典,那么“苹果”这个词可能会被编码为一个向量,其中第500个位置是1,其他位置都是0。同样,“香蕉”这个词可能会被编码为另一个向量,其中第800个位置是1,其他位置都是0。这样,每个词都有了自己独特的编码,不会有任何混淆。
使用one-hot编码后,每个词都是完全不一样的,因为每个词的向量都有一个唯一的1。这样,即使是“开除”和“开心”这样在词典中位置接近的词,在one-hot编码后也会是完全不同的向量。不过,one-hot编码并没有考虑到词之间的语义关系,所以通常我们还会使用词嵌入技术来进一步处理这些编码,以便更好地捕捉词的语义。
但问题是我们严格把每个词都变得完全不一样的同时,也丢失了词汇之间的关联性,比如猫和狗这两个词在数据上应该更加接近,苹果和西瓜更加接近,而猫和苹果的差距应该更大,但呆板的onehot编码却无法体现这一点,因为这种人为的随意且呆板的词表示方法完全不能体现语言中词语的特点,而特征提取不当的数据会让神经网络变得难以训练和泛化。
再者onehot的编码会让输入数据非常的大,比如我们使用一个有1万个词的词典,这样每个词的onehot的编码都是一个1万倍的向量,那么一个有4个词的句子,那么输入数据就是4万个元素。
词向量
在自然语言处理中,为了让计算机更好地理解词汇,人们提出了词向量的概念。词向量是一种将词汇表示为向量(即一组数字)的方法,这些数字代表了词汇的不同特征。就像我们用多个特征(如大小、颜色、硬度)来描述一个物体一样,词向量也是通过提取词汇的不同特征来形成的。
例如,“狗”这个词可以被认为有一些特征:它是一个名词(0.9的概率),它是动物(不是植物),它有皮毛,有尾巴等。这些特征可以被转换成数字,从而形成一个向量。这样,“狗”这个词就被表示为一个多维空间中的一个点,这个点在空间中的位置反映了“狗”这个词的特征。
词向量使得计算机能够更好地理解词汇的语义,因为向量之间的距离可以表示词汇之间的相似性。如果两个词向量在空间中的距离很近,那么它们在语义上可能很相似。这种方法比简单的one-hot编码更加强大,因为它能够捕捉到词汇的语义和上下文信息。
词向量通常是通过机器学习算法在大规模文本数据上训练得到的,这些算法能够自动从文本中学习词汇的特征。常见的词向量训练工具有Word2Vec、GloVe等。这些词向量在许多自然语言处理任务中都非常有用,比如文本分类、情感分析、机器翻译等。
点击【初学人工智能原理】【12】循环:序列依赖问题 - 古月居 (guyuehome.com)可查看全文
相关文章:

【初学人工智能原理】【12】循环:序列依赖问题
前言 本文教程均来自b站【小白也能听懂的人工智能原理】,感兴趣的可自行到b站观看。 代码及工具箱 本专栏的代码和工具函数已经上传到GitHub:1571859588/xiaobai_AI: 零基础入门人工智能 (github.com),可以找到对应课程的代码 正文 对于…...

【QT】无法打开QT的ui文件,出现闪退情况
打开qt的ui文件出现闪退的情况: 解决办法:点击扩展-Qt VS Tools-Options 找到Qt General中的Qt Designer 的Run in detached window改为True。...
三、Spring-WebFlux实战案例-流式
目录 一、springboot之间通讯方式 1. 服务端 (Spring Boot) 1.1 添加依赖 1.2 控制器 2. 客户端 (WebClient) 2.1 添加依赖 2.2 客户端代码 3. 运行 二、web与服务之间通讯方式 1、服务端代码 2、客户端代码 3、注意事项 三、移动端与服务端之间通讯方式…...

html+css 实现hover双层按钮
前言:哈喽,大家好,今天给大家分享htmlcss 绚丽效果!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 文…...

SPIFFS与LittleFS的对gz文件格式的区别
SPIFFS 只能安装在Arduino上。LittleFS支持Arduino IDE和VScode的 PlatformIO。 SPIFFS serveStatic: server.serveStatic("/", SPIFFS, "/") 负责提供 SPIFFS 文件系统中的文件。您可以在 SPIFFS 上放置 .gz 文件,并该方法将自动处理它们。 …...

STM32L051K8U6-开发资料
STM32L051测试 (四、Flash和EEPROM的读写)-云社区-华为云 (huaweicloud.com) STM32L051测试 (四、Flash和EEPROM的读写) - 掘金 (juejin.cn) STM32L0 系列 EEPROM 读写,程序卡死?_stm32l0片内eeprom_stm3…...
Markdown语法学习
Markdown学习 一、基础语法讲解 1. 换行 本行末尾双空格然后回车(在Typora的中直接回车也可以) 2. 换段 本段末尾两次回车 3. 加粗 **加粗** __加粗__效果:加粗 4. 斜体 *加粗* _加粗_效果:斜体 5. 斜体加粗 ***加粗**…...
[最短路Floyd],启动!!!
B3647 【模板】Floyd #include<bits/stdc.h> #define ll long long #define fi first #define se second #define pb push_back #define PII pair<int,int > #define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0) using namespace std; const int N …...

7月29(信息差)
🌍最强模型 Llama 3.1 如期而至!扎克伯格最新访谈:Llama 会成为 AI 界的 Linux 🎄谷歌AlphaProof攻克国际奥赛数学题 https://www.51cto.com/article/793632.html ✨SearchGPT第一波评测来了!响应速度超快还没广告&…...
ubuntu中禁止使用鼠标拖动来移动文件
windows和ubuntu中都可以拖动文件到其他路径,然后达到移动文件的目的。 这种方式有好处也有坏处,好处是移动文件方便了,坏处是误操作后会造成故障,尤其是ubuntu中,本身鼠标就特别灵敏并且操作不便,拖动一个…...

【密码学】椭圆曲线密码体制(ECC)
椭圆曲线密码体制(Elliptic Curve Cryptography, ECC)是一种基于椭圆曲线数学特性的公钥密码系统。在介绍椭圆曲线之前,我们先来了解一下椭圆曲线的基本概念。 一、椭圆曲线是什么? (1)椭圆曲线的数学定义…...

第25集《大佛顶首楞严经》
丑二、腾疑细释 分二:寅一、阿难腾疑;寅二、如来细释 请大家打开讲义第五十六页,“丑二、腾疑细释”。 本经的修学重点,就是修学首楞严王三昧。它的整个重点,其实就是一个心地法门。我们在行菩萨道的时候慢慢会发觉…...
python 读写文件之 open 和 with open() 详细解析
python 读写文件之 open 和 with open() 详细解析 文章目录 python 读写文件之 open 和 with open() 详细解析1. open() 和 with open() 能打开不同的文件类型吗?2. 文本文件和二进制文件的区别2.1 文本文件 (Text Files)2.2 二进制文件 (Binary Files)区别 3. 读文…...
操作系统:内存----知识点
什么是虚拟内存? 虚拟内存简称虚存,是计算机系统内存管理的一种技术。它是相对于物理内存而言的,可以理解为“假的”内存。它使得应用程序认为它拥有连续可用的内存(一个连续完整的地址空间),允许程序员编…...
pfx如何配置到nginx中
有pfx文件的时候如何在nginx上使用 好的,如果您已经确认没有中间证书(或中间证书内容为空),那么可以直接使用服务器证书和私钥。以下是简化后的步骤: 从PFX文件中导出私钥: openssl pkcs12 -in xxx.com.pfx…...

详细测评下搬瓦工香港CN2 GIA VPS
搬瓦工香港VPS分移动CMI和电信CN2 GIA两个大类,一个属于骨干网,一个属于轻负载。搬瓦工的香港CN2 GIA根据测试来看实际上是CN2 GIABGP,并非三网纯CN2 GIA。详细测评数据如下: 用FIO再给测试一下硬盘I/O,可以仔细看看数…...

Java中的五种线程池类型
Java中的五种线程池类型 1. CachedThreadPool (有缓冲的线程池)2. FixedThreadPool (固定大小的线程池)3. ScheduledThreadPool(计划线程池)4. SingleThreadExecutor (单线程线程池)…...

FFmpeg Windows安装教程
一. 下载ffmpeg 进入Download FFmpeg网址,点击下载windows版ffmpeg。 下载第一个essentials版本就行。 二. 环境配置 上面源码解压后如下 将bin添加到系统环境变量 验证安装是否成功,输入ffmpeg –version,显示版本即为安装成功。...

‘#‘ is not followed by a macro parameter 关于宏定义的错误
今天在项目代码上想定义一个这样的宏,结果编译错误,这个宏定义类似这样的: #define DELETE_FILE_DPP(key) \ #ifdef PLATFORM_DPP \delete_file(&key); \ #endif 因为有平台之分需要用到编译宏,但不想每个调用的地方都写 #i…...

内网穿透--meterpreter端口转发实验
实验背景 通过公司带有防火墙功能的路由器接入互联网,然后由于私网IP的缘故,公网无法直接访问内部主机,则需要通过已连接会话,代理穿透访问内网主机服务。 实验设备 1.路由器一台 2.内网 Win 7一台 3.公网 Kali 一台 4.网络 …...

聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...

R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)
在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...

【UE5 C++】通过文件对话框获取选择文件的路径
目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...
TJCTF 2025
还以为是天津的。这个比较容易,虽然绕了点弯,可还是把CP AK了,不过我会的别人也会,还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...