当前位置: 首页 > ai >正文

python | numpy小记(十):理解 NumPy 中的 `np.random.multinomial`(进阶)

python | numpy小记(十):理解 NumPy 中的 `np.random.multinomial` (进阶)

  • `np.random.multinomial` 在机器学习与数据科学中的进阶应用
    • 一、分类模型预测采样
      • 示例:模拟预测类别
    • 二、强化学习中的策略采样
      • 示例:RL 策略采样
    • 三、自然语言处理中的词生成
      • 示例:基于概率的词采样
    • 四、蒙特卡洛模拟(Monte Carlo Simulation)
      • 示例:模拟彩票游戏
    • 五、批量采样加速
    • 六、小结



np.random.multinomial 在机器学习与数据科学中的进阶应用

在上一篇文章中,我们详细介绍了 np.random.multinomial 的基本用法、数学原理以及常见示例。
这篇进阶篇,我们将讨论它在机器学习、自然语言处理(NLP)、强化学习等领域中的实际应用场景,并给出代码示例。


一、分类模型预测采样

在多分类任务中,模型通常会输出一个概率分布(softmax 输出)。如果我们想模拟预测结果的随机性,而不是直接选择最大概率类别,可以用 np.random.multinomial 按预测概率进行抽样。

示例:模拟预测类别

import numpy as np# 假设这是模型的 softmax 输出
probs = np.array([0.7, 0.2, 0.1])# 抽样 n=1 次,得到 one-hot 形式
sample = np.random.multinomial(1, probs)
predicted_class = np.argmax(sample)print("采样结果 One-hot:", sample)
print("预测类别:", predicted_class)

优点

  • 保留了模型的随机性
  • 可用于数据增强或生成多样化的模拟预测

二、强化学习中的策略采样

在策略梯度方法(如 REINFORCE、PPO)中,智能体会根据策略网络输出的概率分布来选择动作。
np.random.multinomial 可以高效地实现这种动作采样。

示例:RL 策略采样

# 动作概率分布(由策略网络输出)
action_probs = np.array([0.1, 0.3, 0.6])# 从分布中采样一个动作
action = np.argmax(np.random.multinomial(1, action_probs))print("选择的动作:", action)

好处

  • 确保采样符合策略分布
  • 支持批量采样,适合并行环境

三、自然语言处理中的词生成

在 NLP 中,语言模型会给出下一个单词的概率分布。使用 np.random.multinomial 可以从该分布中采样,生成多样化的句子。

示例:基于概率的词采样

vocab = ["I", "love", "deep", "learning"]
word_probs = [0.1, 0.5, 0.2, 0.2]for _ in range(5):idx = np.argmax(np.random.multinomial(1, word_probs))print(vocab[idx])

📌 注意

  • 如果只选最大概率单词,生成的文本会非常死板。
  • 使用采样能提高生成的多样性,但也可能增加语法错误率。

四、蒙特卡洛模拟(Monte Carlo Simulation)

np.random.multinomial 在模拟概率事件时非常有用,比如估算赌场游戏的输赢概率、市场份额预测等。

示例:模拟彩票游戏

np.random.seed(0)
p = [0.5, 0.3, 0.2]  # 三个奖项的概率
simulations = 10000# 每次买10张彩票
results = np.random.multinomial(10, p, size=simulations)
avg_results = results.mean(axis=0)print("平均每轮中奖数量:", avg_results)

五、批量采样加速

如果一次要进行很多次采样(比如 RL 中的并行环境或大规模仿真),可以用 size 参数一次性批量生成结果,提高速度。

pvals = [0.4, 0.4, 0.2]
batch_samples = np.random.multinomial(5, pvals, size=1000)print(batch_samples.shape)  # (1000, 3)

六、小结

在进阶应用中,np.random.multinomial 不仅是数学上的多项分布采样工具,还在以下领域发挥重要作用:

  • 分类预测采样(避免过拟合)
  • 强化学习策略采样(保持探索性)
  • 语言模型生成(提升多样性)
  • 蒙特卡洛模拟(概率估算)
  • 批量加速采样(高性能并行)

掌握 np.random.multinomial,不仅能提升你的数据模拟能力,还能让你的机器学习和强化学习项目更高效、更真实。

http://www.xdnf.cn/news/17384.html

相关文章:

  • 医学统计(随机对照研究分类变量结局数据的统计策略2)
  • 面对信号在时频平面打结,VNCMD分割算法深度解密
  • 【接口自动化】-5- 接口关联处理
  • 比特币现货和比特币合约的区别与联系
  • 金融机构在元宇宙中的业务开展与创新路径
  • nginx+lua+redis案例
  • AI智能编程工具汇总
  • Numpy基础(通用函数)
  • [IOMMU]基于 AMD IOMMU(AMD‑Vi/IOMMUv2)的系统化总结与落地方案
  • 【C++】模版进阶
  • FMS 2025存储峰会获奖技术全景解读
  • C/C++基础详解(二)
  • AcWing 4579. 相遇问题
  • Day38 Dataset和Dataloader类
  • Datawhale AI夏令营-记录2
  • NVIDIA Jetson实战笔记
  • 【c++】探秘Loop机制:C++中优雅的双向数据交互模式
  • 力扣 hot100 Day70
  • 【Python 高频 API 速学 ⑥】
  • CrystalDiskInfo 9.0.1 安装教程 - 硬盘检测工具下载安装步骤详解
  • 基于迁移学习的伺服电机轴承故障诊断
  • Python变量引用拷贝
  • 求和算法的向后稳定性 backward stable
  • 大模型“涌现”背后的暗线——规模、数据、目标函数的三重协奏
  • Spring 的原理探究
  • 服务器硬件电路设计之I2C问答(二):I2C总线的传输速率与上拉电阻有什么关系?
  • vs2022编译Activemq
  • 创建一个django项目
  • 【js】判断异步函数的返回值要加await
  • 大语言模型提示工程与应用:大语言模型对抗性提示安全防御指南