混合密度网络Mixture Density Networks(MDN)

news2025/1/25 9:25:28

目录

  • 简介
  • 1 介绍
  • 2 实现
  • 3 几个MDN的应用:
  • 参考

简介

平方和或交叉熵误差函数的最小化导致网络输出近似目标数据的条件平均值,以输入向量为条件。对于分类问题,只要选择合适的目标编码方案,这些平均值表示类隶属度的后验概率,因此可以认为是最优的。然而,对于涉及连续变量预测的问题,条件平均只能对目标变量的性质提供非常有限的描述。对于要学习的映射是多值的问题尤其如此,就像反问题的解中经常出现的那样,因为几个正确目标值的平均值本身不一定是正确的值。为了获得数据的完整描述,为了预测与新输入向量对应的输出,我们必须对目标数据的条件概率分布进行建模,同样以输入向量为条件。本文介绍了将传统神经网络与混合密度模型相结合而得到的一类新的网络模型。完整的系统被称为混合密度网络,原则上可以像传统神经网络表示任意函数一样表示任意条件概率分布。我们用一个玩具问题和一个涉及机器人逆运动学的问题来证明混合密度网络的有效性。

作者:Bishop, Christopher M. (1994).  混合密度网络的提出者;
论文:Mixture density networks. 
出版:Technical Report. Aston University, Birmingham.
论文地址:https://publications.aston.ac.uk/id/eprint/373

论文地址

关注微信公众号,获取更多资讯内容:
在这里插入图片描述

1 介绍

混合密度网络通常作为神经网络的最后处理部分。将某种分布(通常是高斯分布)按照一定的权重进行叠加,从而拟合最终的分布。

如果选择高斯分布的MDN,那么它和GMM(高斯混合模型 Gaussian Mixture Model)有着相同的效果。但是他们有着很明显的区别

在这里插入图片描述
1 该部分案例参考该博客

  • MDN的均值、方差、每个模型的权重是通过神经网络产生的,利用最大似然估计作为Loss函数进行反向传播从而确定网络的权重(也就是确定一个较好的高斯分布参数)
  • GMM的均值、方差、每个模型的权重是通过估计出来的,通常使用EM算法来通过不断迭代确定。

MDN实现简单,而且可以直接模块化的连接到神经网络的后端。他的结果可以得到一个概率范围,相对有deterministic类只输出一个结果,往往有更好的健壮性。
[1]中有相关代码实现。

2 实现

假设我们要拟合如下一个带噪声的函数:
y = 7.0 s i n ( 0.75 x ) + 0.5 x + ϵ y=7.0sin(0.75x)+0.5x+ϵ y=7.0sin(0.75x)+0.5x+ϵ
原始图像为:
在这里插入图片描述
使用神经网络拟合得到:
在这里插入图片描述
对调x和y,再用神经网络拟合得到:
在这里插入图片描述
使用MDN:对于单一输入x,预测y的概率分布。DN的输出为服从混合高斯分布(Mixture Gaussian distributions),具体的输出值被建模为多个高斯随机值的和:
在这里插入图片描述

class MDN(nn.Module):
    def __init__(self, n_hidden, n_gaussians):
        super(MDN, self).__init__()
        self.z_h = nn.Sequential(
            nn.Linear(1, n_hidden),
            nn.Tanh()
        )
        self.z_pi = nn.Linear(n_hidden, n_gaussians)
        self.z_mu = nn.Linear(n_hidden, n_gaussians)
        self.z_sigma = nn.Linear(n_hidden, n_gaussians)
    def forward(self, x):
        z_h = self.z_h(x)
        pi = F.softmax(self.z_pi(z_h), -1)
        mu = self.z_mu(z_h)
        sigma = torch.exp(self.z_sigma(z_h))
        return pi, mu, sigma

由于输出本质上是概率分布,因此不能采用诸如L1损失、L2损失的硬损失函数。这里我们采用了对数似然损失(和交叉熵类似):
在这里插入图片描述
使用MDN得到的如下结果:
在这里插入图片描述
具体过程,请参考:
Github库
YoungTimes博客
xiongxyowo的CSDN博客

3 几个MDN的应用:

在这里插入图片描述
3 参考自博客

参考

[1] A Hitchhiker’s Guide to Mixture Density Networks

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

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

相关文章

记录一次单例模式乱用带来的危害。

项目场景: 我们在接受到短信网关下发的回执之后,需要将回执内容也下发给我们的下游服务。为了防止下游响应超时,我们需要将超时的信息存放到Redis中然后进行补发操作。 问题描述 在使用Redis进行数据存储的时候,报NPE问题。 原因…

Leetcode第136场双周赛题解(c++)

题外话 也是好久没有更新力扣比赛的题解了,前段时间也是比较忙(说的好像现在不忙一样哈哈),像我等菜鸟,一般都是保二进三四不写的,笑死。 题目一.求出胜利玩家的数目 给你一个整数 n ,表示在…

【C++ STL】vector

文章目录 vector1. vector的接口1.1 默认成员函数1.2 容量操作1.3 访问操作1.4 修改操作1.5 vector与常见的数据结构的对比 2. vector的模拟实现2.1 类的定义2.2 默认成员函数迭代器的分类 2.3 容量接口memcpy 浅拷贝问题内存增长机制reserve和resize的区别 2.4 修改接口迭代器…

ScreenAgent:基于LVLM的计算机控制智能体

ScreenAgent : A Vision Language Model-driven Computer Control Agent 论文链接: https://arxiv.org/abs/2402.07945https://arxiv.org/abs/2402.07945IJCAI 2024 1.概述 大型语言模型(LLM),诸如ChatGPT与GPT-4,在自然语言处理领域(涵盖生成、理解及对话等任务)展现出…

springBoot 3.X整合camunda

camunDa camunDa 是2013年从Activiti5 中分离出来的一个新的工作流引擎。Camunda 官方提供了 Camunda Platform、Camunda Modeler,其中 Camunda Platform 以 Camunda engine 为基础为用户提供可视化界面,Camunda Modeler 是流程文件建模平台&#xff0c…

python 的 tuple(元组) 是不是冗余设计?

有人问,python 的 tuple(元组) 是不是冗余设计?因为它和list(列表)很像。 先抛观点,tuple不是冗余设计,它最大的特点是不可变,在Python程序设计中非常重要。 tuple与li…

药店管理小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,药品分类管理,药品信息管理,留言板管理,订单管理,系统管理 微信端账号功能包括:系统首页,药品信息&#xf…

VBA中类的解读及应用第十四讲:限制复选选择,程序运行过程及效果

《VBA中类的解读及应用》教程【10165646】是我推出的第五套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。 类,是非常抽象的,更具研究的价值。随着我们学习、应用VBA的深入&#xff0…

【Vue3】组件通信之$parent

【Vue3】组件通信之$parent 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗的…

利用Dockerfile文件执行docker build自动构建镜像

一、Dockerfile使用详解 1.1 Dockerfile介绍 DockerFile是一种被Docker程序解释执行的脚本,由一条条的命令组成的,每条命令对应linux下面的一条命令,Docker程序将这些DockerFile指令再翻译成真正的linux命令,其有自己的书写方式和…

读零信任网络:在不可信网络中构建安全系统08设备清单管理

1. 设备清单管理 1.1. 设备的认证和完整性检查是零信任安全至关重要的第一大步,但是仅仅验证设备是否属于企业是不够的 1.2. 设备清单管理涉及对设备及其属性进行编目管理 1.2.1. 将配置管理作为设备清单数据库 1.2.2. 维护/管理这些记录对客户端和服务器设备同样…

AI电销机器人的效果与作用

ai电销机器人的工作效率是非常高的,电销机器人一天的外呼量至少是3000左右,工作效率是人工的十倍还多,并且电销机器人没有负面情绪,一直都可以保持高昂的工作热情,非常简单方便。 并且ai电销机器人是越用越聪明的&…

刘润《关键跃升》读书笔记3

1) 防御动⼒”发动机 ⽐如,恐惧。 转正考核、末位淘汰等,本质上都是在制造“危险”环境,从⽽激发员 ⼯全⼼投⼊。万⼀没转正,万⼀被淘汰,房贷怎么还,孩⼦怎么养? 你想想都害怕&am…

【Redis 进阶】哨兵 Sentinel(重点理解流程和原理)

Redis 的主从复制模式下,一旦主节点由于故障不能提供服务,需要人工进行主从切换,同时大量的客户端需要被通知切换到新的主节点上,对于上了一定规模的应用来说,这种方案是无法接受的,于是 Redis 从 2.8 开始…

sa-token登录机制以及网关统一鉴权环境搭建

文章目录 1.sa-token1.37集成(基于token)1.文档网址2.**sun-club-auth-application-controller引入依赖**3.application.yml4.sun-club-auth-application-controller测试的controller1.UserController.java2.启动测试1.登录,得到satoken2.验证…

当AIGC走进温室大棚:AI+“种菜“的前世今生

( 于景鑫 国家农业信息化工程技术研究中心) 近年来,人工智能生成内容(AIGC)技术引发业界广泛关注。从NLP领域的GPT-3到CV领域的Stable Diffusion,AIGC展现了惊人的创造力,正在重塑人们的工作和生活方式。与此同时,农业领域也正经历着数字化、智能化的深刻…

Golang环境篇

一、Golang环境篇 一)go简介 1、Golang定义 Go语言是Google于2009年推出的一门新的系统编程语言。 2、特性: 静态编译内存分配:Go 选择了 tcmalloc,它本就是为并发而设计的高性能内存分配组件。垃圾回收:每次升级&…

基于51单片机的汽车灯控制器proteus仿真

地址: https://pan.baidu.com/s/1YrwCUQIKwdth1N2UsUtSRA 提取码:1234 仿真图: 芯片/模块的特点: AT89C52/AT89C51简介: AT89C52/AT89C51是一款经典的8位单片机,是意法半导体(STMicroelectro…

基于Java的网络考试系统的设计与实现

点击下载源码 基于Java的网络考试系统的设计与实现 摘 要 科技在进步,人们生活和工作的方式正发生着改变,不仅体现在人们的衣食住行,也体现在与时俱进的考试形式上。以前的考试需要组织者投入大量的时间和精力,需要对考试的试题…

Java线程池原理剖析和应用指南

目录 Java线程池详解一、Java线程池简介池化思想池化思想的优点 二、线程池的实现原理分析实现线程池需要考虑哪些问题?线程池的简单使用示例线程池原理的简单图示 三、Executor详解Executor简介Executor框架的继承结构总结ExecutorExecutorService 四、ThreadPoolE…