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

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.lryc.cn/news/615916.html

相关文章:

  • Stlink识别不到-安装驱动
  • 医防融合中心-智慧化慢病全程管理医疗AI系统开发(下)
  • 整数规划-分支定界
  • Docker Compose 部署高可用 MongoDB 副本集集群(含 Keepalived + HAProxy 负载均衡)
  • AI编程插件对比分析:CodeRider、GitHub Copilot及其他
  • 给AI装上“翻译聚光灯”:注意力机制的机器翻译革命
  • 【精彩回顾·成都】成都 User Group×柴火创客空间:开源硬件驱动 AI 与云的创新实践!
  • 打卡day34
  • openpnp - 顶部相机如果超过6.5米影响通讯质量,可以加USB3.0信号放大器延长线
  • Spark执行计划与UI分析
  • AutoCAD 2026 的主要功能
  • 变量详解:创建初始化与内存管理
  • lesson34:深入理解Python线程:从基础到实战优化
  • XGBoost算法在机器学习中的实现
  • Android Camera 打开和拍照APK源码
  • Android 开发问题:Invalid id; ID definitions must be of the form @+id/ name
  • Android 16 KB页面大小适配的权威技术方案总结
  • Ubuntu 安装 Kibana
  • 神经机器翻译(NMT)框架:编码器-解码器(Encoder-Decoder)结构详解
  • 支持selenium的chrome driver更新到139.0.7258.66
  • 去除Edge微软浏览器与Chrome谷歌浏览器顶部出现“此版本的Windows不再支持升级Windows 10”的烦人提示
  • Elasticsearch QueryDSL 教程
  • Linux操作系统从入门到实战(十八)在Linux里面怎么查看进程
  • 三、k8s 1.29 之 安装1网络 / ikuai路由器虚拟机安装
  • Linux810 shell 条件判断 文件工具 ifelse
  • JavaWeb(苍穹外卖)--学习笔记18(Apache POI)
  • 【QT】常⽤控件详解(七)容器类控件 GroupBox TabWidget 布局管理器 Spacer
  • 祝融号无线电工作频段
  • redis主从模型与对象模型
  • Jmeter性能测试之检测服务器CPU/Memory/磁盘IO/网络IO