Month: June 2024

快速上手推荐系统:微软 Recommenders 示例精解快速上手推荐系统:微软 Recommenders 示例精解

引言 想要快速体验不同推荐算法的魅力,并构建自己的推荐系统原型?微软 Recommenders 工具的 00_quick_start 目录提供了一系列开箱即用的 Jupyter Notebook 示例,涵盖了从数据准备、模型构建到模型评估的完整流程。 示例概览 00_quick_start 目录下的示例 Notebook 涵盖了多种经典和先进的推荐算法,并使用了不同的数据集和运行环境,具体如下表所示: 示例 数据集 运行环境 描述 als MovieLens PySpark 使用交替最小二乘法 (ALS) 预测电影评分,在 PySpark 环境中运行。 dkn MIND Python CPU, [...]

将 Recommenders 示例无缝迁移到 AzureML 云平台将 Recommenders 示例无缝迁移到 AzureML 云平台

引言 随着推荐系统规模的扩大和对训练效率要求的提高,将本地实验迁移到云平台成为一种趋势。Azure 机器学习服务(AzureML)为开发者提供了一个强大的云端环境,可以用于数据准备、模型训练、测试、部署、管理和跟踪。 本指南将以 run_notebook_on_azureml.ipynb 为例,介绍如何将 Recommenders 示例 Notebook 提交到 AzureML 计算目标,利用云平台的优势加速推荐系统开发流程。 AzureML 简介 AzureML 提供了丰富的功能,包括: 准备工作 使用 AzureML 之前,需要完成以下准备工作: 连接到 AzureML 工作区 AzureML 工作区是用于组织和协调机器学习工作流的 Azure 资源,它协调存储、数据库和计算资源,为实验、部署、推理和模型监控提供额外功能。 以下代码将获取或创建一个 AzureML 工作区,并将配置保存到 [...]

微软 Recommenders:推荐系统实战宝典微软 Recommenders:推荐系统实战宝典

引言 构建一个高效的推荐系统并非易事,需要对数据进行预处理、选择合适的算法、进行模型训练和评估,最终才能将其部署到生产环境。为了帮助开发者和研究人员更好地应对这些挑战,微软开源了 Recommenders 工具,并提供了一系列 Jupyter Notebook 示例和最佳实践,涵盖了推荐系统开发的完整流程。 示例概览 Recommenders 的示例 Notebook 按照功能和用途被组织在不同的目录下,具体如下表所示: 目录 是否支持本地运行 描述 00_quick_start 是 快速入门示例,演示如何在本地环境中使用推荐算法构建推荐系统。 01_prepare_data 是 数据准备示例,为不同的推荐算法准备和加载数据。 02_model_collaborative_filtering 是 协同过滤算法模型训练和评估示例,深入探讨算法原理和实现细节。 … … … 本地运行示例 大部分示例 Notebook [...]

深入浅出推荐系统:微软开源工具 Recommenders 解析深入浅出推荐系统:微软开源工具 Recommenders 解析

引言 在信息爆炸的时代,人们面对海量数据往往无所适从。推荐系统应运而生,它通过分析用户的历史行为和偏好,为用户提供个性化的推荐内容,帮助用户快速找到自己感兴趣的信息。从电商平台的商品推荐,到社交媒体的内容推送,再到音乐软件的歌曲推荐,推荐系统已经渗透到我们生活的方方面面。 微软开源工具 Recommenders 正是为构建、实验和部署各种经典和先进的推荐系统而生。它提供了一系列 Jupyter Notebook 示例和最佳实践,涵盖了推荐系统构建的五个关键任务: Recommenders 提供了多个实用工具,用于支持加载数据集、评估模型输出和划分训练/测试数据等常见任务。它还包含了一些先进算法的实现,供用户自学和定制自己的应用程序。 算法概览 Recommenders 提供了丰富的推荐算法,涵盖了协同过滤、基于内容的过滤等多种类型,具体如下表所示: 算法 类型 描述 示例 交替最小二乘法 (ALS) 协同过滤 适用于大型数据集的显式或隐式反馈的矩阵分解算法,针对可扩展性和分布式计算能力进行了优化。它在 PySpark 环境中工作。 快速入门 / 深入探讨 注意力异步奇异值分解 (A2SVD) 协同过滤 基于序列的算法,旨在使用注意力机制捕获用户的长期和短期偏好。它在 [...]

SalUn : 通过基于梯度的权重显著性赋能图像分类和生成中的机器遗忘SalUn : 通过基于梯度的权重显著性赋能图像分类和生成中的机器遗忘

引言 随着数据法规的不断演变,机器遗忘 (MU) 已成为增强当今人工智能模型信任度和安全性的重要工具。然而,现有的 MU 方法侧重于数据和/或权重视角,在遗忘准确性、稳定性和跨领域适用性方面往往存在局限性。为了应对这些挑战,我们引入了 MU 的“权重显著性”概念,并将其与模型解释中的输入显著性进行了类比。这一创新将 MU 的注意力从整个模型转移到特定的模型权重上,从而提高了有效性和效率。由此产生的方法被称为显著性遗忘 (SalUn),它缩小了与“精确”遗忘(从移除遗忘数据点后从头开始重新训练模型)的性能差距。据我们所知,SalUn 是第一个能够有效消除遗忘数据、类别或概念在图像分类和生成任务中的影响的原则性 MU 方法。例如,SalUn 在高方差随机数据遗忘中具有稳定性优势,例如,在 CIFAR-10 数据集上与精确遗忘相比,差距为 0.2%。此外,在防止条件扩散模型生成有害图像方面,SalUn 实现了近 100% 的遗忘准确率,优于当前最先进的基线,如 Erased Stable Diffusion 和 Forget-Me-Not。代码可在 https://github.com/OPTML-Group/Unlearn-Saliency 获取。 警告:本文包含的模型输出可能具有冒犯性。 机器遗忘的挑战 [...]

Ollama:让大型语言模型触手可及Ollama:让大型语言模型触手可及

导语: 近年来,大型语言模型(LLM)发展迅猛,但对于普通用户而言,搭建和使用LLM仍有一定门槛。Ollama应运而生,它是一个轻量级、可扩展的框架,致力于让每个人都能轻松构建和运行本地LLM。 一键安装,轻松上手 Ollama 提供了简单易用的安装方式,无论你是 macOS、Windows 还是 Linux 用户,都能快速开始使用。 macOS: 下载 Windows (预览版): 下载 Linux: 您也可以参考手动安装指南进行安装。 Docker: Ollama 也提供了官方 Docker 镜像 ollama/ollama,您可以在 Docker Hub 上找到它: https://hub.docker.com/r/ollama/ollama。 海量模型库,总有一款适合你 Ollama 支持 ollama.com/library [...]

新奇性算法,也称为新奇性搜索(Novelty Search)新奇性算法,也称为新奇性搜索(Novelty Search)

新奇性算法,也称为新奇性搜索(Novelty Search),是一种非传统的优化和搜索方法,它与传统的目标驱动型算法形成鲜明对比。该算法的核心思想不在于直接追求某个预设的目标或优化某个特定的目标函数,而是鼓励探索未知和新颖的解决方案。它基于自然进化的原理,即新奇的行为或特性往往能开启通往更多新奇发现的路径,从而促进创新和多样性。 核心概念 实践案例 思考与应用 新奇性算法挑战了我们对目标设定的传统理解,提倡在某些情况下,无目标的探索可能比直接追求目标更能促进创新和长期的成功。在教育、创新项目管理、以及人工智能的开放式探索中,这种方法鼓励人们接受不确定性,拥抱探索过程中的偶然性,从而可能发现更为广阔的可能性空间。 新奇性搜索在机器学习领域的应用广泛,它通过鼓励探索未知和新颖的解决方案,推动了多个方面的创新。以下是一些具体实例: 这些应用展示了新奇性搜索在促进创新、增加解决方案多样性以及在复杂、非线性问题上的潜力。通过鼓励探索未知,新奇性搜索为机器学习和人工智能领域带来了新的视角和方法。 通过新奇性搜索解决复杂问题,主要依赖于以下几个步骤和原则: 通过上述步骤,新奇性搜索利用探索的广度而非直接的深度来解决复杂问题,这种方法特别适合于那些目标不明确或解决方案空间高度不确定的问题。它通过不断尝试和学习新奇事物,最终可能间接地达到或超越传统目标驱动方法的成果。 评估新奇性搜索中解决方案的新奇性,通常涉及以下几个关键步骤和考虑因素: 通过上述方法,新奇性搜索能够系统地识别和保留那些在当前探索中具有独特性的解决方案,促进对未知领域的探索,即使这些新奇解在初期可能不直接带来性能上的提升。 在新奇性搜索(Novelty Search, NS)的实现基础中,保存新颖项信息的核心在于设计一个能够有效记录和管理探索过程中遇到的新颖解决方案的数据结构。以下是实现这一过程的关键步骤和组件: 通过这样的实现,NS 能够有效地跟踪和利用探索过程中的新颖性信息,促进对未知解决方案空间的探索,而不是直接追求性能优化。这种方法鼓励算法探索新的行为或解决方案,从而在复杂和多变的问题中找到创新的路径。 [...]

策略梯度方法利用动作特征的挑战策略梯度方法利用动作特征的挑战

策略梯度方法,如A3C(Asynchronous Advantage Actor-Critic,Mnih等人,2016年提出的),确实面临在处理高维或连续动作空间时的挑战,但这并不意味着它们无法利用动作特征。实际上,策略梯度方法通过参数化策略,可以有效地利用动作空间的特征。在高维动作空间中,策略网络通常设计为接收状态信息,并输出动作的概率分布,或者直接输出动作的连续值,这背后就涉及到了对动作空间的特征表示。 利用动作特征 面临的挑战 尽管策略梯度方法能够利用动作特征,它们在高维动作空间中仍然面临挑战,如学习效率低下、收敛速度慢和方差大的问题。为了应对这些挑战,研究者们引入了如目标网络、策略正则化(如TRPO、PPO中的方法)、以及更复杂的策略表示方法,如使用更深层次的神经网络和更高级的优化技巧。 因此,策略梯度方法在理论上和实践中都能够利用动作特征,但需要通过恰当的模型设计和算法改进来克服高维动作空间带来的困难。 策略梯度方法在处理大动作空间时面临挑战,主要由于以下几个原因: 高维动作空间的复杂性:在连续或高维离散动作空间中,动作的数量几乎是无限的,这使得找到最优或接近最优的策略变得极其困难。每个动作的细微变化都可能对最终的奖励产生影响,导致策略的梯度信号非常稀疏且噪声大。 梯度估计的方差问题:策略梯度方法通过采样动作序列来估计策略的梯度,而在大动作空间中,这种采样过程的方差通常很高。这意味着即使多次尝试,梯度的估计也可能波动很大,这会减慢学习速度并可能导致学习过程不稳定。 优化难度增加:在高维空间中,优化目标可能非常复杂且非凸,这使得找到全局最优解或接近最优解的难度大大增加。局部最优解的陷阱更为常见,策略可能在某些局部区域徘徊而无法跳出。 动作空间的连续性处理:对于连续动作空间,策略需要输出动作的概率分布,这通常通过高斯分布或其他连续分布来近似。在这样的空间中,精确地调整动作以最大化奖励需要非常精细的梯度信号,而这种信号在大空间中很难获得。 探索与利用的平衡:在大动作空间中,有效的探索变得至关重要,因为不常见的动作可能带来重要的信息。然而,策略梯度方法在初始阶段可能难以探索动作空间的广泛区域,导致学习进展缓慢。 计算资源需求:处理大动作空间需要更多的计算资源,因为每个动作的评估和梯度计算都可能更复杂,尤其是在使用神经网络作为策略函数时,模型的训练和评估会更加耗时和资源密集。 为了克服这些挑战,研究者们发展了多种策略,如引入基线减少方差、使用目标网络来稳定学习、正则化策略以避免过拟合、以及采用近端策略优化(PPO)、信任区域策略优化(TRPO)等算法来提高学习效率和稳定性。这些方法通过不同的机制来改善在大动作空间中的表现,比如通过优势函数来指导学习,或者通过策略的结构优化来更好地处理高维动作。 策略梯度方法与基于值的方法在处理连续动作空间时存在显著差异,主要体现在目标函数、优化策略、以及对动作空间的处理方式上: 策略梯度方法的特点: 基于值的方法的特点: 对比总结: 在实际应用中,结合两种方法的混合策略,如Actor-Critic架构,可以结合两者的优点,既直接优化策略,又利用价值函数的稳定性来指导学习,成为处理连续动作空间的有力工具。 基于梯度的策略优化方法是一类直接在策略参数上进行优化的强化学习算法,旨在通过梯度上升或下降来最大化累积奖励。以下是一些重要的基于梯度的策略优化算法: 这些算法各有特点,适用于不同的学习环境和任务需求,但共同点在于它们都通过直接优化策略参数来学习最优行为策略。 策略梯度方法在处理高方差问题时,通常采用以下几种策略来提高学习的稳定性和效率: 这些方法通过不同的机制来减少策略梯度估计的方差,提高学习的稳定性和效率,使得智能体在复杂和高维的环境中能够更有效地学习。 REINFORCE 算法能有效处理采样梯度的期望问题,主要是因为它利用了策略梯度理论和蒙特卡洛方法的结合。以下是其有效性的几个关键点: 综上所述,REINFORCE算法通过直接在策略上进行优化,并利用蒙特卡洛采样来估计策略梯度,有效地解决了在复杂策略空间中寻找最优策略的采样期望问题。虽然存在方差大的挑战,但通过引入基线和其他方差减少技术,可以进一步提高其学习效率和稳定性。 监督学习中的“数据”: 在监督学习中,我们处理的是带有标签的数据集。这意味着每一份数据(例如图像、文本或数值)都配有一个明确的正确答案或标签(例如分类标签、回归值)。学习过程旨在通过这些已知的输入-输出对来学习一个函数,这个函数能够对新的、未见过的数据做出准确的预测。监督学习的关键在于从这些配对的数据中提取模式,以泛化到未知数据。数据是学习过程的直接指导,它告诉模型“正确答案”是什么。 强化学习中的“环境”: [...]

Resemble Enhance:AI赋能的语音增强利器Resemble Enhance:AI赋能的语音增强利器

近年来,人工智能技术在语音处理领域的应用日益广泛,语音增强技术作为其中重要一环,其发展也日新月异。今天,就为大家介绍一款名为Resemble Enhance的AI语音增强工具,它能够有效降低噪音、提升语音质量,为用户带来更清晰、更纯净的音频体验。 Resemble Enhance:双模块协同,打造高品质语音 Resemble Enhance 的核心是由去噪器和增强器这两个模块构成的。 值得一提的是,这两个模块的训练数据均为高品质的44.1kHz语音数据,这保证了Resemble Enhance 能够输出高保真的增强语音。 Resemble Enhance:简单易用,功能强大 Resemble Enhance 的一大优势在于其简单易用的特点。即使你不是技术专家,也能轻松上手。 安装与使用 你可以通过以下命令,轻松安装稳定版本的 Resemble Enhance: 如果你想尝试最新的预发布版本,可以使用以下命令: 安装完成后,使用起来也非常简单。只需执行以下命令,即可对指定目录下的音频文件进行增强: 其中,in_dir 是输入音频文件所在的目录,out_dir 是输出增强后的音频文件所在的目录。 如果你只想进行去噪处理,可以使用以下命令: Web Demo 体验 为了方便用户体验 Resemble [...]

S3:一个简单高效的多模态对话系统S3:一个简单高效的多模态对话系统

近年来,人工智能 (AI) 领域见证了多模态系统的兴起。这些系统能够无缝整合文本、图像和音频等多种形式的数据,在模拟人类认知能力方面正变得越来越娴熟。然而,该领域的研究人员面临的主要挑战之一是需要大量数据和计算资源来训练最先进的模型。 本文介绍了一种全新的范式,即只需少量数据和计算资源即可构建强大的多模态系统。我们提出了一个简单而有效的基线模型 S3,它挑战了大型数据集和过度计算能力是开发具有竞争力的多模态 AI 系统的先决条件的传统观念。通过使用包含不到 150,000 个多模态样本的精简语料库、预训练的冻结模态编码器、7B 语言模型,以及利用单个 A100-80GB GPU 的计算经济性,我们创建了一个架构简洁优雅、性能可与目前领域内更复杂系统相媲美的模型。我们方法的核心是一个模态投影器,它使用一个简单的多层感知器 (MLP) 将多模态特征映射到标记嵌入中。 S3 的强大之处 S3 的贡献可以概括如下: 深入 S3 的核心技术 多模态数据预处理的艺术 为了实现多模态对话的目标,我们以标准聊天布局格式化了每个数据集。这种格式将每条消息表示为一个 JSON 对象,其中包含“角色”(指示消息是来自用户还是机器人)、“类型”(指示消息包含图像、音频还是文本)以及消息内容本身(在图像和音频的情况下,这将是文件路径)。 图1:多模态对话数据 json 格式示例 我们为每个数据集创建了一个自定义系统提示,以引出与原始数据集紧密匹配的机器人响应。例如,对于 [...]