什么是解耦表示学习?使用beta-VAE模型探究医疗和金融问题

2023-11-04

640?wx_fmt=jpeg


作者 | Alexandr Honchar

译者 | 大鱼

编辑 | Rachel、琥珀

出品 | AI科技大本营(id:rgznai100)


【导语】本文对传统的人工数学建模和机器学习的优缺点进行了介绍和比较,并介绍了一种将二者优点相结合的方法——解耦表示学习。之后,作者利用 DeepMind 发布的基于解耦表示学习的 beta-VAE 模型,对医疗和金融领域的两个数据集进行了探索,展示了模型效果,并提供了实验代码。


实验中 GitHub 项目地址:

https://github.com/Rachnog/disentanglment


这篇文章会对传统数学建模与机器学习建模之间的联系进行讨论。传统数学建模是我们在学校里都学过的建模方法,该方法中,数学家们基于专家经验和对现实世界的理解进行建模。而机器学习建模则是另一种完全不同的建模方式,机器学习算法以一种更加隐蔽的方式来描述一些客观事实,尽管人类并不能够完全理解模型的描述过程,但在大多数情况下,机器学习模型要比人类专家构建的数学模型更加精确。当然,在更多应用领域(如医疗、金融、军事等),机器学习算法,尤其是深度学习模型并不能满足我们需要清晰且易于理解的决策。


本文会着重讨论传统数学建模和机器学习建模的优缺点,并介绍一个将两者相结合的方法 —— 解耦表示学习 (Disentangled Representation Learning)。


如果想在自己的数据集上尝试使用解耦表示学习的方法,可以参考 Github 上关于解耦学习的分享,以及 Google Research 提供的关于解耦学习的项目代码


深度学习存在的问题


由于深度学习技术的发展,我们在许多领域都对神经网络的应用进行了尝试。在一些重要的领域,使用神经网络确实是合理的,并且获得了较好的应用效果,包括计算机视觉、自然语言处理、语音分析和信号处理等。在上述应用中,深度学习方法都是利用使用线性和非线性转换对复杂的数据进行自动特征抽取,并将特征表示为“向量”(vector),这一过程一般也称为“嵌入”(embedding)。之后,神经网络对这些向量进行运算,并完成相应的分类或回归任务:


640?wx_fmt=png


从特征提取和准确度来看,这种 “嵌入”的方法非常有效,但在许多方面也存在不足:


  • 可解释性:嵌入所使用的N维向量无法对模型分析的原理和过程进行很好的解释,只有通过逆向工程才能找到输入数据中对分析影响更大的内容。

  • 数据需求量庞大:如果只有 10~100 个样本,深度学习无法使用。

  • 无监督学习:大多数深度学习模型都需要有标签的训练数据。

  • 零样本学习:这是一个很关键的问题,基于一个数据集所训练出的神经网络,若不经过重新训练,很难直接应用在另一个数据集上。

  • 对象生成:除了 GANs(生成对抗网络)以外,其他模型都很难生成一个真实的对象。

  • 对象操作:难以通过嵌入调整输入对象的具体属性。

  • 理论基础:虽然我们已经掌握了比较通用的逼近理论,但这还不够。


这些问题很难用机器学习框架来解决,但在最近,我们取得了一些新的进展。


数学建模的优势


在 20 年、50 年 甚至 100 年以前,大多数数学家都没有遇到过上述问题。其中原因在于,他们主要关注数学建模(mathematical modeling),并通过数学抽象来描述现实世界中的对象和过程,如使用分布、公式和各种各样的方程式。在这个过程中,数学家定义了我们在标题中提到的常微分方程(ordinary differential equations, ODE)。我们通过对比深度学习存在的问题,对数学建模的特点进行了分析。需要注意的是,在下面的分析中,“嵌入”代表数学模型的参数,如微分方程的自由度集合。


  • 可解释性:每个数学模型都是基于科学家对客观事物的描述而建立的,建模过程包含数据家对客观事物的描述动机和深入理解。例如,对于物理运动的描述, “嵌入” 包括物体质量、运动速率和坐标空间,不涉及到抽象的向量。

  • 数据需求量大:大多数数学建模上的突破并不需要基于巨大的数据集进行。

  • 无监督学习:对数学建模来说也不适用。

  • 零样本学习:一些随机微分方程(如几何布朗运动)可以应用于金融、生物或物理领域,只需要对参数进行重新命名。

  • 对象生成:不受限制,对参进行采样即可。

  • 对象操作:不受限制,对参数进行操作即可。

  • 理论基础:上百年的科学基础。


我们没有使用微分方程解决所有问题的原因在于,对于大规模的复杂数据来说,微分方程的表现与深度学习模型相比要差得多,这也是深度学习得到飞速发展的原因。但是,我们仍然需要人工的数学建模。


将机器学习与基于人工的建模方法相结合


如果在处理复杂数据时,我们能把表现较好的神经网络和人工建模方法结合起来,可解释性、生成和操作对象的能力、无监督特征学习和零样本学习的问题,都可以在一定程度上得到解决。举个例子,视频1中呈现的是对于人像的特征提取方法。


对于微分方程和其他人工建模方法来说,图像处理很难进行,但通过和深度学习进行结合,上述模型允许我们进行对象的生成和操作、可解释性强,最重要的是,该模型可以在其他数据集上完成相同的工作。该模型唯一的问题是,建模过程不是完全无监督的。另外,对于对象的操作还有一个重要的改进,即当我改变 ”胡须“ 这一特征时,程序自动让整张脸变得更像男人了,也就是意味着,模型中的特征虽然具有可解释性,但特征之间是相关联的,换句话说,这些特征是耦合在一起的。


β -VAE


有一个方法可以帮助我们实现解耦表示,也就是让嵌入中的每个元素对应一个单独的影响因素,并能够将该嵌入用于分类、生成和零样本学习。该算法是由 DeepMind 实验室基于变分自编码器开发的,相比于重构损失函数(restoration loss),该算法更加注重潜在分布与先验分布之间的相对熵。

若想了解更多细节,可阅读beta-VAE的论文(https://openreview.net/forum?id=Sy2fzU9gl);也可参考这个视频2中的介绍,详细解释了 beta-VAE 的内在思想,以及该算法在监督学习和强化学习中的应用。


beta-VAE 可以从输入数据中提取影响变量的因素,提取的因素包括物理运动的方向、对象的大小、颜色和方位等等。在强化学习应用中,该模型可以区分目标和背景,并能够基于已有的训练模型在实际环境中进行零样本学习。


实验过程


我主要研究医疗和金融领域的模型应用,在这些领域的实际问题中,上述模型能够在很大程度上解决模型解释性、人工数据生成和零样本学习问题。因此在下面的实验中,我使用 beta-VAEs 模型对心电图(ETC)数据和和比特币(BTC)的价格数据进行了分析。该实验的代码在 Github上可以找到。

首先,我使用veta-VAE(一个非常简单的多层神经网络)对PTB诊断数据中的心电图数据进行了建模,该数据包含三类变量:心电图图表,每个人随着时间变化的脉搏数据,以及诊断结果(即是否存在梗塞)。在 VAE 训练过程中,epoch 大小设置为 50,bottleneck size 设置为 10,学习率为 0.0005,capacity 参数设置为 25(参数设置参考了这个GitHub项目)。模型的输入是心跳。经过训练,该模型学习到了数据集中影响变量的实际因素。


下图展示了我使用其中一个单一特征对心跳数据进行操作的过程,其中黑线代表心跳,使用的特征数据值从 -3 逐渐增大至 3。在这一过程中,其他特征始终保持不变。不难发现,第 5 个特征对心跳形式的影响很大,第 8 个代表了心脏病的情况(蓝色心电图代表有梗塞症状,而红色则相反),第 10 个特征可以轻微地影响脉博。


640?wx_fmt=png

图:对心电图的心跳进行解耦


正如预期的一样,金融数据的实验效果没有这么明显。模型的训练参数设置与上一实验相似。使用的数据为 2017 年收集的比特币价格数据集,该数据集包含一个时间长度为 180 分钟的比特币价格变化数据。预期的实验效果为使用 beta-VAE 学习一些标准的金融时间序列模型,如均值回归的时间序列模型,但实际很难对所获得的表示进行解释。在实验结果中可以发现,第 5 个特征改变了输入的时间序列的趋势,第 2、4、6 个特征增加/减少了时间序列上不同阶段的波动,或者说使其更加趋于稳定或动荡。


640?wx_fmt=png

图:对比特币的收盘价格进行解耦


多个对象的解耦


假设在图像中包含多个对象,我们想要找出每一个对象的影响因素。下面的动图展示了模型的效果。


640?wx_fmt=gif

640?wx_fmt=gif


总结


下面针对于机器学习存在的问题列表对 beta-VAE 模型进行总结:


  • 可解释性:特征完全可解释,我们只需要对每个具体嵌入的元素进行验证。

  • 数据需求量大:由于该模型属于深度学习框架,数据需求量依然较大。

  • 无监督学习:可以实现完全的无监督学习。

  • 零样本学习:可以进行,在文中展示的强化学习应用就属于这一类。

  • 对象生成:和普通的 VAE 一样易于对参数进行采样。

  • 对象操作:可以轻松操作任何感兴趣的变量。

  • 理论基础:有待研究。


上文的模型几乎具备了数学建模的全部优质特性,也具有深度学习在分析复杂数据时的高准确度。那么,如果能使用完全无监督的方式,从复杂数据中学习到如此好的表示结果,是不是意味着传统数学建模的终结?如果一个机器学习模型就可以对复杂模型进行构建,而我们只需要进行特征分析,那还需要基于人工的建模吗?这个问题还有待讨论。


这里列出了文中视频的网址链接和百度网盘链接,供参考:


  • 视频1:

  • 链接:https://youtu.be/O1by05eX424

  • 百度网盘:链接: https://pan.baidu.com/s/11qsgCVlRF0R4jm7ZLlzF2w 提取码: f76s

  • 视频2:

  • 链接:https://youtu.be/yV698Fi2XzE

  • 百度网盘:链接: https://pan.baidu.com/s/153FBz8YWaw3PWrqJAbPj2A 提取码: ee8v


原文链接:

https://towardsdatascience.com/gans-vs-odes-the-end-of-mathematical-modeling-ec158f04acb9


(本文为 AI科技大本营编译文章,转载请微信联系 1092722531)


CTA核心技术及应用峰会


5月25-27日,由中国IT社区CSDN与数字经济人才发展中心联合主办的第一届CTA核心技术及应用峰会将在杭州国际博览中心隆重召开,峰会将围绕人工智能领域,邀请技术领航者,与开发者共同探讨机器学习和知识图谱的前沿研究及应用。


更多重磅嘉宾请识别海报二维码查看,目前会议早鸟票发售中(原票价1099元),点击阅读原文即刻抢购。添加小助手微信15101014297,备注“CTA”,了解票务以及会务详情。

640?wx_fmt=jpeg

推荐阅读

640?wx_fmt=png

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是解耦表示学习?使用beta-VAE模型探究医疗和金融问题 的相关文章

  • CUDA之矩阵乘法——globalmemory

    CUDA 矩阵乘法 使用global memory 报错 错误 17 error no instance of overloaded function cudaMalloc matches the argument list E Niki
  • Python requests实现图片上传接口自动化测试

    最近帮别人写个小需求 需要本地自动化截图 然后图片自动化上传到又拍云 实现自动截图非常简单 在这里就不详细介绍了 主要和大家写下 如何通过Python requests实现上传本地图片到又拍云服务器 话不多说 因为我们要使用requests
  • Linux——FTP服务器搭建及访问

    FTP是文件传输协议的英文简称 其用于Internet上的控制文件的双向传输 同时 他也是一个应用程序 基于不同的操作系统有不同的FTP应用程序 而所有这些应用程序都遵守同一种协议以传输文件 互联网上提供文件存储进而访问服务的计算机 他们依
  • 自研一个简易版本的OkHTTP

    一 背景 为了彻底搞明白okhttp原理 仿照okhttp自研一个 二 思路 业务上没发出一个request 使用AsyncCall包装起来 然后在网络分发器的作用下 执行具体的每一个Call 这些具体的Call会经过层层的拦截器 最终会调
  • ref使用之react / react hook

    在react典型的数据流中 props传递是父子组件交互的一种方式 通过传递一个新的props值来使子组件重新render 从而达到父子组件通信 某些情况下 例如和第三方的dom库整合 或者某个dom元素focus等 为了修改子组件我们可能
  • 已解决:Navicat 1046 - UDAL - No database selected

    解决方法 1 在常规选项中填入正确的数据库信息 测试连接通过 2 在数据库选项中 勾选 使用自定义数据库列表 gt gt 添加数据库到列表 gt gt 输入数据库名 gt gt 确定 3 搞定
  • redis scan反向二进制位迭代原理

    scan反向二进制位迭代原理 顺序遍历会有什么问题 在Redis中 key是使用Hash结构存储的 使用链表法解决hash冲突 需要遍历所有的key最直观的想法就是遍历hash数组 假设数组长度为8 则从0 7遍历取值即可 但hash是会自
  • Linux之PXE高效批量网络装机

    目录 一 PXE批量部署部署的优点 1 规模化 2 自动化 3 远程实现 二 PXE使用服务 服务端 客户端 三 基本部署过程 四 PXE装机需要的四大文件 五 实验 一 PXE批量部署部署的优点 1 规模化 同时装配多台服务器 2 自动化
  • 2022年Java面试题整理

    一 Java基础部分面试题 1 Java面向对象的三个特征 封装 对象只需要选择性的对外公开一些属性和行为 继承 子对象可以继承父对象的属性和行为 并且可以在其之上进行修改以适合更特殊的场景需求 多态 允许不同类的对象对同一消息做出响应 2
  • 浅析三极管工作状态

    1 NPN三极管输出特征曲线 2 NPN三极管工作状态 2 1 截止 发射结反偏 集电结反偏 UBE lt 0 7V 发射结反偏 UCE gt UBE 集电结反偏 三极管工作在截止状态 当发射结电压Ube小于0 7V的导通电压 发射结没有导
  • python中with...as的用法

    文章内容主要部分来至 http www 360doc com content 16 0905 16 25664332 588595085 shtml with as 就是个python控制流语句 像 if while一样 with as语句
  • SQLi LABS Less-29

    第29关使用GET请求提交参数 在url中构造payload即可 源码中并没有做什么过滤 直接测试注入点即可 在url中输入 1 and true a 源码中的SQL会拼接成下面这样 注释后面的内容不起作用 所以真正执行的SQL是这样的 a
  • Idea 14 最详细创建最简单web项目,并且发布在tomcat

    1 New Project 2 选择Empty Project 然后Next 3 填写Project名称 然后 finish 4 出现如下页面
  • 算法小题4→正整数分解质因数

    题目 将一个正整数分解质因数 例如 输入90 打印出90 2 3 3 5 程序分析 对n进行分解质因数 应先找到一个最小的质数k 然后按下述步骤完成 1 如果这个质数恰等于n 则说明分解质因数的过程已经结束 打印出即可 2 如果n lt g
  • Redis使用总结(三、缓存击穿问题)

    什么是缓存击穿 在谈论缓存击穿之前 我们先来回忆下从缓存中加载数据的逻辑 如下图所示 因此 如果黑客每次故意查询一个在缓存内必然不存在的数据 导致每次请求都要去存储层去查询 这样缓存就失去了意义 如果在大流量下数据库可能挂掉 这就是缓存击穿
  • MATLAB求解函数极值及函数图像

    MATLAB具有求解函数极值以及函数图像的功能 简单举一个例子 求解上述函数极值与图像 1 驻点求解 syms x gt gt y 3 x 2 4 x 4 x 2 x 1 gt gt dy diff y gt gt xz solve dy
  • 防火墙旁挂,策略路由引流

    1 案例拓扑图 2 核心设备AR2的主要配置 2 1AR2 acl number 2000 rule 5 permit source 192 168 1 0 0 0 0 255 匹配需要过滤的路由 traffic classifier li
  • Verilog中阻塞赋值与非阻塞赋值的区别

    最近有初学者会问阻塞 和非阻塞 lt 到底是有什么区别 可能确实有很多的文档对这两种语法的定义展开性讲的已经很天花乱坠 但是对于刚刚学习Verilog语法的小伙伴来说 确实有些绕 这边向大家总结一下个人对这两种赋值的一些简单想法 1 在组合
  • 【翻译】RFP有什么问题?

    科技行业充斥着首字母缩略词和缩写 有时会引发强烈的反应 RfP这些字母总是让我在黯然神伤和极度沮丧之间摇摆不定 为什么呢 因为征求建议书的过程突出了我们采购和交付软件和基础设施的方式是如何被打破的 从表面上看 传统的提案申请程序是非常合理的
  • 【js】Array.prototype.concat和Array.flat、Array.flatMap的关联使用

    Array prototype concat 用于合并两个或多个数组 返回一个新数组 不改变原数组 const arr1 1 2 3 const arr2 4 5 6 const arr3 7 8 9 const result arr1 c

随机推荐

  • 800个有趣句子帮你记忆7000个单词

    800个有趣句子帮你记忆7000个单词 1 With my ownears I clearly heard the heart beat of the nuclear bomb 我亲耳清楚地听到原子弹的心脏的跳动 2 Next year t
  • JS循环及调试

    break 终止某个循环 使程序跳到循环块外的下一条语句 在循环中位于break后的语句将不再执行 for var i 1 i lt 5 i let num parseInt prompt 输入第 i 人的成绩 if num lt 0 do
  • 基于SpringBoot+Vue框架前后端分离的在线购物平台的设计与实现

    系统合集跳转 一 系统环境 运行环境 最好是java jdk 1 8 我们在这个平台上运行的 其他版本理论上也可以 IDE环境 Eclipse Myeclipse IDEA或者Spring Tool Suite都可以 tomcat环境 To
  • 量化投资学习-34:缺口是制造恐慌和疯狂情绪的手段!

    缺口是制造恐慌和疯狂情绪的手段 发生在不同的阶段 目的是不一样的 底部向下 加速赶底 一般发生了连续下跌的末端 在最后制造疯狂下跌的恐慌 这是筑底的标志 底部向上 借助缺口 实现快速拉升 快速脱离底部成本区 大阳 底部跳空缺口是中级行情开始
  • ts项目打包报错 error TS6504: xxxxxx is a JavaScript file. Did you mean to enable the ‘allowJs‘ option?

    项目vue3 ts 打包时一个组件如下错误 解决 加上lang
  • 毕业设计-基于机器学习的网络舆情情感倾向分析

    目录 前言 课题背景和意义 实现技术思路 一 论坛文本采集方法研究 二 文本情感分析理论 三 论坛文本预处理 四 文本表示及特征抽取 五 情感倾向分类器 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业
  • Java中异常问题(异常抛出后是否继续执行的问题)

    public static void test throws Exception throw new Exception 参数越界 System out println 异常后 编译错误 无法访问的语句 代码2 异常被捕获 日志打印了异常
  • Python Pandas修改列类型

    使用astype如下 df column df column astype type type即int float等类型 示例 import pandas as pd data pd DataFrame 1 2 2 2 data colum
  • vue3 setup 组合式api props父子组件传值详解

    vue3组合式api中 父组件通过在子组件上通过v bind传递给子组件数据 子组件通过defineprops函数在子组件中定义父组件中传入子组件的数据就可以接收这些数据 然后可在template中直接使用 但是想要在setup中使用父组件
  • Python之爬虫 搭建代理ip池

    文章目录 前言 一 User Agent 二 发送请求 三 解析数据 四 构建ip代理池 检测ip是否可用 五 完整代码 总结 前言 在使用爬虫的时候 很多网站都有一定的反爬措施 甚至在爬取大量的数据或者频繁地访问该网站多次时还可能面临ip
  • 前端学习--知识整理

    前端学习 知识整理 一 深 浅拷贝 1 深拷贝和浅拷贝是只针对Object和Array这样的引用数据类型的 2 赋值和浅拷贝的区别 3 浅拷贝的实现方式 1 Object assign 2 Array prototype concat 3
  • Ubuntu系统网络连不上&线缆已拔出&服务启动

    解决问题 Ubuntu系统网络连不上 线缆已拔出 服务启动 关于Ubuntu联网失败 最近遇到过多次 但是总结下面前面的解决方法治标不治本 根本原因在于VMware DHCP Service运行状态的问题 之前的解决方法 更改虚拟网络编辑器
  • 【电子DIY】基于NE555制作的简易电子琴

    基于NE555制作的简易电子琴 青岛科技大学 信息科学技术学院 集成162 Listen C 一 背景简介 自多次利用51单片机 无源蜂鸣器制作电子琴多次以后 突然领悟蜂鸣器产生声波的原理 无非是产生一定频率占空比50 的PWM而已 然后
  • 二叉查找树(BST)

    二叉查找树 BST 二叉查找树 Binary Search Tree 又叫二叉排序树 Binary Sort Tree 它是一种数据结构 支持多种动态集合操作 如 Search Insert Delete Minimum 和 Maximum
  • 华为麦芒B199全焦拍照 比单反还有料

    近期 在2000元内价位上涌现了很多表现出色的智能手机 其中不得不提到华为麦芒B199 该机创造了网络平台一分钟售罄10万部的销售神话 到底这部手机有什么神奇之处呢 这里重点介绍下麦芒B199先进的全焦拍照功能 华为麦芒B199 通常 我们
  • vue filters和directives的this指向

    vue filters和directives的this指向 记录一次奇葩的需求 要求自定义一个指令 点击后能跳转指定路由 directives和filters压根就没法访问this 脑袋都想破了 不废话了 上代码
  • 芯片行业常用英文术语最详细总结(图文快速掌握)

    目录 一 简介 二 厂家分类 三 工艺和阶段 3 1 芯片工艺 3 2 芯片阶段 四 晶圆等级 五 其他英文解析 六 相关岗位及职能 一 简介 本文主要总结了半导体行业在工作中常用的英文含义 通过将内容分类 对生产厂家 工艺和阶段 晶圆等级
  • Java Optional类说明及使用(JDK8)

    Optional类是JDK8提供的类 用于防止出现空指针异常 本篇旨在对该类进行说明及具体使用方式列举 一 序言 Option在使用中主要是为了简化传统Java的if else形式对null情况进行判断 既然为了简化代码编写 就必须要提到J
  • c语言 prototype_keil c语言出现错误C206 missing function-prototype

    include include define uchar unsigned char static unsigned char table 6 0 0 0 0 0 0 Declare functions uchar Busy Check v
  • 什么是解耦表示学习?使用beta-VAE模型探究医疗和金融问题

    作者 Alexandr Honchar 译者 大鱼 编辑 Rachel 琥珀 出品 AI科技大本营 id rgznai100 导语 本文对传统的人工数学建模和机器学习的优缺点进行了介绍和比较 并介绍了一种将二者优点相结合的方法 解耦表示学习