机器学习中的嵌入:释放表征的威力

news2025/1/21 1:01:26

简介

机器学习通过使计算机能够从数据学习和做出预测来彻底改变了人工智能领域。机器学习的一个关键方面是数据的表示,因为表示形式的选择极大地影响了算法的性能和有效性。嵌入已成为机器学习中的一种强大技术,提供了一种捕获和编码数据点之间复杂关系的方法。本文[1]探讨了嵌入的概念,其意义及其在各个领域的应用。

了解嵌入

在机器学习中,嵌入是指高维物体的低维,密集的矢量表示。这些对象可以是从自然语言处理中的单词到计算机视觉中的图像。嵌入的目的是以更紧凑和有意义的形式捕获对象的固有属性和关系。

alt

通过表示学习的过程来学习嵌入,其中训练模型以将高维数据映射到较低维的矢量空间。嵌入空间的设计方式使语义上相似的物体更靠近,而不同的对象则距离较远。这种基于接近度的安排使算法能够利用嵌入式中编码的关系来进行准确的预测并执行各种任务。

嵌入的应用

  1. 自然语言处理(NLP):在NLP中,嵌入引起了极大的关注。单词嵌入(例如Word2Vec和Glove)将单词表示为连续空间中的密集向量。通过捕获单词之间的语义和句法关系,这些嵌入使模型能够理解语言结构,执行情感分析,甚至可以生成连贯的文本。此外,上下文嵌入(例如Bert和GPT)在句子的上下文中捕获单词的含义,从而使高级语言理解任务。
  2. 计算机视觉:嵌入也已被广泛用于计算机视觉任务。图像嵌入,例如从卷积神经网络(CNN)获得的图像嵌入,在紧凑的表示中捕获图像的视觉特征。这些嵌入可以用于图像分类,对象检测和图像相似性搜索等任务。通过将图像映射到特征空间,模型可以根据其视觉内容比较和匹配图像。
  3. 推荐系统:嵌入在构建推荐系统中起着至关重要的作用。协作过滤技术利用嵌入来表示用户和项目。通过从历史用户项目交互中学习嵌入,推荐系统可以识别相似的用户或项目并提出个性化建议。嵌入捕获潜在的因素,这些因素可以推动用户偏好,从而推荐与单个口味相符的项目。
  4. 网络分析:嵌入在网络分析和基于图的机器学习中已证明有价值。图形嵌入表示图中的节点为低维向量,从而捕获结构信息和节点之间的关系。这些嵌入可以实现诸如链接预测,社区检测和节点分类之类的任务。通过将节点映射到嵌入空间,基于图的算法可以有效地分析大规模网络。

优点和挑战

使用嵌入为机器学习应用带来了一些好处。首先,嵌入提供紧凑而有益的表示形式,从而降低了数据的维度并提高了计算效率。其次,嵌入有助于探索语义关系,并使算法能够很好地概括到看不见的数据。此外,嵌入可以优雅地处理缺失的值和噪音,从而增强鲁棒性。

但是,嵌入学习中存在挑战。确定最佳的嵌入维度,处理稀有或不播放的术语以及解决嵌入中的偏见的最佳嵌入性。平衡表现力和嵌入性解释性之间的权衡也带来了挑战。

Code Example

在Python中,有几个库和框架可用于机器学习中的嵌入。让我们探索一些流行的选择:

  1. Gensim:Gensim是专为主题建模和文档相似性分析而设计的Python库。它包括有效实现流行的嵌入算法,例如Word2Vec和doc2vec。 Gensim提供了易于使用的API,用于训练和使用嵌入。这是使用Gensim训练Word2Vec模型的示例:
from gensim.models import Word2Vec

# Prepare training data (a list of sentences)
sentences = [["I""love""machine""learning"], ["Embeddings""are""powerful"]]

# Train Word2Vec model
model = Word2Vec(sentences, min_count=1)

# Get the embedding vector for a word
word_vector = model['machine']
  1. TensorFlow:TensorFlow是一个受欢迎的深度学习库,为使用嵌入的工作提供了广泛的支持。它提供了诸如Word2Vec和Glove之类的预训练模型,以及使用神经网络训练自定义嵌入的灵活性。这是在TensorFlow中使用预训练的手套嵌入的示例:
import tensorflow as tf
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences

# Create a Tokenizer
tokenizer = Tokenizer()
tokenizer.fit_on_texts(["I love machine learning""Embeddings are powerful"])

# Convert text to sequences
sequences = tokenizer.texts_to_sequences(["I love embeddings"])

# Pad sequences to a fixed length
padded_sequences = pad_sequences(sequences, maxlen=10)

# Load pre-trained GloVe embeddings
embedding_matrix = tf.keras.preprocessing.text.embedding_matrix.load_glove("glove.6B.100d.txt")

# Define an embedding layer
embedding_layer = tf.keras.layers.Embedding(
    input_dim=len(tokenizer.word_index) + 1,
    output_dim=100,
    weights=[embedding_matrix],
    trainable=False
)

# Embed the padded sequences
embedded_sequences = embedding_layer(padded_sequences)
  1. Pytorch:Pytorch是另一个流行的深度学习库,可提供用于嵌入的工具。它提供了Torch.nn.embedding模块,以在神经网络中创建和使用嵌入。这是使用Torch.nn.embedding模块的一个示例:
import torch
import torch.nn as nn

# Define an embedding layer
embedding_layer = nn.Embedding(10000300)  # Vocabulary size: 10,000, Embedding dimension: 300

# Create input data
input_data = torch.LongTensor([[123], [456]])  # Shape: (2, 3)

# Embed the input data
embedded_data = embedding_layer(input_data)

# Access the embedding vectors
embedding_vectors = embedded_data[0]  # Shape: (3, 300)

要在不使用库的情况下实现Python中的嵌入,您可以从头开始创建一个基本的嵌入框架。这是一个简化的例子:

import numpy as np

# Define a vocabulary
vocabulary = ["apple""banana""orange""grape"]

# Initialize an empty embedding matrix
embedding_matrix = np.zeros((len(vocabulary), 100))  # Embedding dimension: 100

# Assign random vectors to each word in the vocabulary
for i, word in enumerate(vocabulary):
    embedding_vector = np.random.uniform(-11, (100,))
    embedding_matrix[i] = embedding_vector

# Function to retrieve the embedding vector for a given word
def get_embedding(word):
    if word in vocabulary:
        index = vocabulary.index(word)
        return embedding_matrix[index]
    else:
        return None

# Example usage
word_embedding = get_embedding("banana")
print(word_embedding)

在此示例中,我们使用numpy手动创建一个嵌入矩阵,其中每一行都对应于词汇中的一个单词,每个列代表特征维度。我们用随机向量初始化嵌入矩阵,但是您可以使用任何所需的初始化方法。

get_embedding()函数检索给定单词的嵌入向量。它检查该单词是否存在于词汇中,并从嵌入矩阵中返回相应的嵌入向量。

请注意,这是一个简单的演示,可以说明嵌入的概念而不依赖外部库。实际上,建议使用诸如Gensim,Tensorflow或Pytorch之类的库库,以更有效,更优化的嵌入在现实世界机器学习项目中。

总结

嵌入已成为现代机器学习的基本组成部分,提供了一种捕获和代表数据中复杂关系的方法。从NLP到计算机视觉和网络分析,它们的多功能性在各个领域都显而易见。通过利用嵌入,模型可以有效地推理,概括并做出准确的预测

Reference

[1]

Source: https://medium.com/@evertongomede/embeddings-in-machine-learning-unleashing-the-power-of-representation-2402bab526fe

本文由 mdnice 多平台发布

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

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

相关文章

LeetCode1518 换水问题

题目描述 超市正在促销,你可以用 numExchange 个空水瓶从超市兑换一瓶水。最开始,你一共购入了 numBottles 瓶水。 如果喝掉了水瓶中的水,那么水瓶就会变成空的。 给你两个整数 numBottles 和 numExchange ,返回你 最多 可以喝…

人工智能基础_机器学习015_BGD批量梯度下降代码演示_在批量梯度下降中使用逆时衰减---人工智能工作笔记0055

然后我们用代码来演示一下BGD批量梯度下降,首先启动jupyter notebook 然后我们新建一个文件 新建文件夹,然后新建一个python文件 然后我们这里用一元一次方程进行批量梯度下降. import numpy as np 导入数学计算包 X = np.random.rand(100,1) `np.random.rand(100, 1)` 是…

【每日一题】2103. 环和杆-2023.11.2

题目: 2103. 环和杆 总计有 n 个环,环的颜色可以是红、绿、蓝中的一种。这些环分别穿在 10 根编号为 0 到 9 的杆上。 给你一个长度为 2n 的字符串 rings ,表示这 n 个环在杆上的分布。rings 中每两个字符形成一个 颜色位置对 &#xff0c…

【AUTOSAR】【以太网】DoIp

AUTOSAR专栏——总目录_嵌入式知行合一的博客-CSDN博客文章浏览阅读217次。本文主要汇总该专栏文章,以方便各位读者阅读。https://xianfan.blog.csdn.net/article/details/132072415 目录 一、概述 二、功能描述 2.1 Do

06_es分布式搜索引擎2

一、DSL查询文档 1.DSL查询分类 ①查询所有:match_all ②全文检索:利用分词器对用户输入的内容分词,倒排索引去匹配 match_query multi_match_query ③精确查询:根据精确词条查找数据,查找的是keyword,数值,日期,b…

BUCK、BOOST、BUCK-BOOST电路原理分析

一、前导 DC-DC DC-DC电源,即直流-直流变换器,是指将一个固定的直流电压变换为可变的直流电压,也称为直流斩波器。DC-DC有多种拓扑结构,如BUCK(降压)、BOOST(升压)、BUCK-BOOST&…

基于EPICS stream模块的直流电源的IOC控制程序实例

本实例程序实现了对优利德UDP6720系列直流电源的网络控制和访问,先在此介绍这个项目中使用的硬件: 1、UDP6721直流电源:受控设备 2、moxa串口服务器5150:将UDP6721直流电源设备串口连接转成网络连接 3、香橙派Zero3:运…

绿色通道 快速理赔,渤海财险用实干书写服务品牌

7月底,受台风“杜苏芮”影响,北京市连续强降雨,西部、西南部、南部遭遇特大暴雨,房山、门头沟、丰台等地陆续出现山洪暴发现象。      灾害无情人有情,为更好地保障人民群众生命财产安全,渤海财险北京分…

【PWN · 栈迁移|off-by-one|伪随机|爆破】[HDCTF 2023]Makewish

一道精巧、包含很多要点的题目 一、题目 二、思路浅析 通过ctypes酷通过伪随机数检测,没用srand指定随机种子时,默认srand(1)。 通过puts_name的off-by-one来泄露canary 进入vuln时,发现只能刚好填充到rbp前面,但是会将最后一个…

虚拟机设置linux系统固定网络IP

文章目录 虚拟机设置linux系统固定网络IP1.设置虚拟机网络ip2.windows网络适配器设置1.windows112.其他windows版本 3.linux系统IP设置 虚拟机设置linux系统固定网络IP 1.设置虚拟机网络ip 2.windows网络适配器设置 1.windows11 2.其他windows版本 后面设置内容参考windows11…

基于OrangePi Zero 2实现垃圾分类智能垃圾桶项目(11)将指令来源和次数保存到数据库中(SQLite),指令来源和发出时间以及垃圾类型保存在文件中

SQLite(嵌入式数据库) 概念: 一种轻量级的关系型数据库管理系统,可以在应用程序中作为一个单独的组件运行,因此也被称为嵌入式数据库。与传统的客户端-服务器架构不同,SQLite 数据库存储在单个文件中&…

虹科案例 | AR内窥镜手术应用为手术节约45分钟?

相信医疗从业者都知道,在手术室中有非常多的医疗器械屏幕,特别是内窥镜手术室中医生依赖这些内窥镜画面来帮助病患进行手术。但手术室空间有限,屏幕缩放位置相对固定,在特殊场景下医生观看内窥镜画面时无法关注到病患的状态。这存…

axios 实现请求 loading 效果

前景提要: ts 简易封装 axios,统一 API 实现在 config 中配置开关拦截器 loading 分为全屏 loading 和局部 loading。 axios 中设置 loading 只能设置全屏 loading,因为局部 loading 需要当前局部的 dom,在 axios 中显然拿不到发…

数据结构:排序干货!(7大排序汇总+快速排序的优化+计数排序+基数排序+桶排序)

目录 概念 插入排序 直接插入排序 希尔排序 选择排序 直接选择排序 双向选择排序 堆排序 交换排序 冒泡排序 快速排序 Hoare法 挖坑法 前后指针法 快排的优化 三数取中法 非递归快排 归并排序 分治算法二路归并 非递归归并 应用 排序总结 其他排序 计数…

记一次有趣的免杀探索

文章目录 前记查杀排查源码修改免杀效果测试 前记 evilhiding昨天被提issue不能绕过火绒了,于是今天更新了evilhiding v1.1,已经可以继续免杀了。 期待各位的stars,项目地址如下: https://github.com/coleak2021/evilhiding查杀…

【OJ比赛日历】快周末了,不来一场比赛吗? #11.04-11.10 #10场

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…)比赛。本账号会推送最新的比赛消息,欢迎关注! 以下信息仅供参考,以比赛官网为准 目录 2023-11-04(周六) #2场比赛2023-11-05…

科技云报道:大模型会给操作系统带来什么样的想象?

科技云报道原创。 在人工智能的发展历程中,大模型的出现标志着一个里程碑。 特别是近年来,诸如GPT-4、BERT等大模型的出现,不仅在自然语言处理、图像识别等领域取得了令人瞩目的成就,还推动了人工智能技术向更广泛的应用场景拓展…

IAR更新内置JLink

一、背景 IAR8.32,基于GD32F303CET6的工程,能正常使用JLINK进行debug and download,但在调试GD32F303CGT6时程序无法正常download且校验失败 GD32F303CET6:Flash--512K,RAM--64K GD32F303CET6:Flash--1M,RAM--96K 二、原因分析…

GZ035 5G组网与运维赛题第10套

2023年全国职业院校技能大赛 GZ035 5G组网与运维赛项(高职组) 赛题第10套 一、竞赛须知 1.竞赛内容分布 竞赛模块1--5G公共网络规划部署与开通(35分) 子任务1:5G公共网络部署与调试(15分) 子…

开关电源综合电气试验项目是什么?常规电源测试的标准和规范有哪些?

开关电源综合电气试验内容 1. 绝缘电阻和抗电强度测试 2. 输入浪涌电流测试 3. 输出电压、输入功率、输入功率因素、工作效率测试 4. 输出电压纹波及噪声测试 5. 输出过流保护测试 6. 短路保护测试 7. 输出电压过压保护测试 8. 过冲幅度及暂态恢复时间测试 9. 开机启动时间及关…