主动学习基础-贝叶斯神经网络

引言

传统的深度神经网络一般都有过度自信的问题。
即使我给神经网络提供一个从来没有训练过的类别图像,神经网络也会输出一个类别。比如训练猫狗的分类器,如果你抛出一个人的图像,网络也会将其分类为猫或者狗。

在几乎所有现实世界的问题中,我们想要的不仅仅是结果,还需要对该结果的信心/确定性的了解。如果正在制造自动驾驶汽车,不仅要检测行人,还要表达对该物体是行人而不是交通锥的信心。

在贝叶斯世界观中,一切都具有概率分布,包括模型参数(神经网络中的权重和偏差)。在编程语言中,我们有可以采用特定值的变量,每次访问该变量时,您都会获得相同的值。与此相反,在贝叶斯世界中,我们有类似的实体,称为随机变量,每次访问它时都会给出不同的值。

从随机变量中获取新值的过程称为采样。得出什么值取决于随机变量的相关概率分布。与随机变量相关的概率分布越宽,其值的不确定性就越大,因为它可以根据(宽)概率分布取任何值。

在传统的神经网络中,有固定的权重和偏差来确定输入如何转换为输出。
在贝叶斯神经网络中,所有权重和偏差都有一个概率分布。要对图像进行分类,需要对网络进行多次运行(前向传递),每次都使用一组新的采样权重和偏差。

每次运行得到一组,得到多组输出值。输出值集表示输出值的概率分布,因此可以找出每个输出的置信度和不确定性。所以,对输入图像是网络从未见过的东西,那么对于所有输出类别,不确定性将会很高。

贝叶斯定理:

贝叶斯定理

A:神经网络参数 (权重和偏差的初始概率分布)
B:训练数据
使用数据来找出权重和偏差的更新分布P(A | B)

P(A):神经网络参数的先验。
P(B|A):在给定参数,我们可以多次运行(前向传递),每次都使用一组新的采样权重和偏差。每次运行得到一组,得到多组输出值,输出值集表示输出值的概率分布。

在这里插入图片描述

P(B)计算很困难,在所有可能的参数值下观察数据(输入/输出对)的概率,并按各自的概率加权。 evidence

在这里插入图片描述

  • 参数Aj的值范围可以从 负无穷大到 正无穷大

  • 对于该范围内的每个Aj值,您必须运行模型来查找生成您观察到的输入、输出对的可能性(总数据集可能有数百万对)

  • 这样的参数可能不止一个,而是很多个 (可能上百万)

上面是后验的枚举方法,还有其他方法

  1. 基于抽样的方法 蒙特卡罗方法( Monte-Carlo )
    对于复杂的贝叶斯模型,例如具有 800 万个参数的神经网络,蒙特卡罗方法的收敛速度仍然很慢,并且可能需要数周时间才能发现完整的后验。
  2. 优化方法:变分贝叶斯

P(z|x)在分布空间中,在这个分布空间的一个分布族Q,找一个分布q*∈Q与P(z|x)的距离最近

找一个q*∈Q去估计P(z|x)
在这里插入图片描述

L经常用KL散度,两个分布差异的度量。
在这里插入图片描述

这个是不能直接计算的,因为P(z|x)是未知,进行转化:
在这里插入图片描述

ELBO evidence lower bound,
KL 大于等于0 ,logp(x) constant ;evidence
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

变分贝叶斯方法的要点是由于我们无法精确计算后验概率,因此我们可以找到最接近它的“行为良好”的概率分布。在“行为良好”的分布中随机初始化参数后,可以进行梯度下降并每次稍微修改分布的参数(例如均值或方差),以查看结果分布是否更接近后验分布。度量接近程度用ELBO.

蓝色曲线是进行(枚举)计算得到的真实后验。 因为他是一种像正态分布一样表现良好的分布,绿色曲线的整个形状可以用一个参数 Z 来描述。变分贝叶斯方法所做的是使用梯度下降方法来随机改变 Z 参数的值初始化值为其结果分布最接近真实后验的值。优化结束时,绿色曲线与蓝色曲线并不完全相同,但非常相似。我们可以安全地使用近似的绿色曲线而不是未知的真实蓝色曲线来进行预测。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【论文阅读】Self-supervised Learning: Generative or Contrastive

Abstract 研究了在计算机视觉、自然语言处理和图形学习中用于表示的新的自监督学习方法。全面回顾了现有的实证方法,并根据其目的将其归纳为三大类:生成性、对比性和生成性对比(对抗性)。进一步收集了关于自我监督学习的相关理论…

亚信安慧AntDB超融合数据库:拓展亿级用户系统的智能化新纪元

在面对亿级用户规模的系统建设需求时,传统数据库往往面临诸多挑战。为了满足多样化的技术要求,项目通常需要倚赖多套技术体系,例如,一套关系型数据库用于元数据管理和标签化管理,另一套则专注于非结构化文件的处理。这…

软件测试|深入了解PyCharmDebug功能:逐步调试Python代码

简介 PyCharm作为一款强大的Python集成开发环境,提供了丰富的调试功能,可以帮助开发者轻松定位和解决代码问题。本文将详细介绍如何在PyCharm中使用Debug功能,并通过示例演示其实际应用。 debug 步骤 打开项目: 打开PyCharm&…

因成本不断增加,阿里云发布区域调价公告|一周IT资讯

因成本不断增加,阿里云发布域名调价公告 1月9日晚,阿里云在官网发布域名调价公告:因注册局成本上调、域名实名制审核等服务成本不断增加,经慎重考虑,现决定于2024年2月1日,对 .net 英文域名进行价格调整&a…

关于自动化测试用例失败重试的一些思考

动化测试用例失败重跑有助于提高自动化用例的稳定性,那我们来看一下,python和java生态里都有哪些具体做法? 怎么做 如果是在python生态里,用pytest做测试驱动,那么可以通过pytest的插件pytest-rerunfailures来实现失…

apipost 前端使用云端mock实现自定义返回

目录 一.新建接口 1.选择mock环境 2.设置接口路径,以及相关参数 3.自定应响应示例 4.开启云端mock,设置相应条件 5.更改接口类型post,保存设置,发送请求 6.测试 一.新建接口 1.选择mock环境 如图,更改环境 2.设置接口路径&#xff0c…

Mr_HJ / form-generator项目文档学习与记录(续2)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: https://gitee.com/nbacheng/n…

Android开发基础(四)

Android开发基础(四) 本篇将从Android数据存储方式去理解Android开发。 Android数据存储方式 Android提供了多种数据存储方式。 一、SharedPreferences存储 主要用于存储一些简单的配置信息,如登录账号密码等; 这种存储方式采…

androj studio安装及运行源码

抖音教学视频 目录 1、 jdk安装 2、下载安装androj studio 3 、打开源码安装运行相关组件 4、 安装模拟器 1、 jdk安装 安卓项目也是java开发的,运行在虚拟机上,安装jdk及运行的时候,就会自动生成虚拟机, jdk前面已经讲过&…

MFC为对话框资源添加类

VC6新建一个对话框类型的工程; 建立之后资源中默认有2个对话框,一个是主对话框,About这个是默认建立的关于版权信息的; 然后主对话框有对应的.h和.cpp文件;可以在其中进行编程; 默认建立的有一个 关于 对话框; 在资源中新插入一个对话框,IDD_DIALOG1是对话框ID; 新加…

C++(9.5)——浅谈new和delete的实现原理

(注:本文是针对上篇文章中C内存管理的两个关键字)两个关键字原理的解析,对于这两个关键字的使用并没有什么影响,如果只想得知两个关键字的使用方法,则可以直接跳过本篇文章) 目录 1. 引入: 2.operator new 与 operat…

Maven之自定义archetype生成项目骨架(构建脚手架项目)

pom引入 <build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>3.1.0</version><configuration><encoding>UTF-8</encoding…