在本文中,我想将经典数学建模和机器学习之间建立联系,它们以完全不同的方式模拟身边的对象和过程。虽然数学家基于他们的专业知识和对世界的理解来创建模型,而机器学习算法以某种隐蔽的不完全理解的方式描述世界,但是在大多数情况下甚至比专家开提出的数学模型更准确。然而,在许多应用程序(如医疗保健,金融,军事)中,我们需要清晰可解释的决策,而机器学习算法,特别是深度学习模型并不是这样设计的。

本文将回顾所期望模型的的主要特点,“经典”数学模型和机器学习模型的优点和缺点,并展示一个结合了两种模型特点的案例:disentangled representation learning。

深度学习有什么问题?

自从深度学习开始蓬勃发展以来,我们尝试在任何地方使用神经网络。在许多重要领域,它非常有效并可以得到最先进的结果,例如在计算机视觉,自然语言处理,语音分析和信号处理等领域。最终,这些深度学习的方法都是关于从复杂数据中自动提取特征,在神经网络中结合线性和非线性变换,以一些“向量”(vector)结束,也叫做“嵌入”(embedding),它表示输入对象需要的所有信息并对其进行分类或回归:

1_ylhkvJ23KcdrAn42py2JUg

这些“向量”在特征提取和准确性方面确实非常好,但它们也在很多方面都有不足:

  • 可解释性:大小为N的向量不能告诉我为什么要采取某种决策,只有逆向工程方法可以在输入数据中突出“感兴趣对象”。

  • 需要大量数据:深度学习并不适合只有10-100个样本。

  • 无监督学习:大多数应用都需要标记训练数据。

  • 零重复使用:这是一个非常重要的问题:在一个数据集上训练的神经网络很少可以直接应用于另一个类似的数据集而无需重新训练。

  • 对象生成:我可以通过嵌入生成真实的对象吗?对GAN来说,可以。

  • 对象操作:我可以使用嵌入操作输入对象的特定属性吗?并不能。

  • 理论基础:我们有通用逼近理论。但是不够深入。

在现代机器学习框架中,似乎很难解决这些问题。但是我们可以用某种方式来解决!

数学建模有什么用?

关于上面提到的这些问题,大多数数学家在20,50甚至100年前根本没有遇到过。为什么?因为他们一直在使用数学来建立模型,即用数学抽象来描述现实世界中的对象和过程,例如分布,公式或微分方程(这就是为什么我们的标题中有“ODE”,常微分方程(ordinary differential equations))。再次查看“问题清单”,并考虑科学家从头开始创建的数学模型。我仍然会在这里使用术语“嵌入”,它将代表数学模型的参数,即微分方程中的自由度集。

  • 解释:每个数学模型都是基于科学家如何描述对象而创建的,具有明确的动机和理论。例如,为了描述物理运动,我们的嵌入将包括物体质量,运动速度和坐标空间,没有抽象的向量!

  • 需要大量数据:今天的大部分科学突破都没有在“ImageNet大小”的数据集上完成。

  • 无监督学习:嗯~,这不是数学建模要考虑的情况:)

  • 零重复使用:相同的随机微分方程,比方说,几何布朗运动可以应用于金融,生物或物理,只需要重命名参数名称。

  • 对象生成:立即可用,只需要采样参数。

  • 对象操作:立即可用,只需要操作参数。

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

那么为什么我们不使用微分方程呢?事实证明,对于大规模的复杂数据,它们的表现要差得多。这就是如今掀起深度学习的浪潮的原因。但是,我们仍然希望从开发的模型中获得不错的灵感。

结合机器学习和数学建模

如果我们想使用在分析复杂数据时比较准确的神经网络,但也要具有上面描述的属性,应该怎么做?在不同的环境中,可解释性,生成和操纵对象的能力,无监督的特征学习和零重复使用,怎样找?例如,作为面部图像的特征提取器,我希望看到下面这样的东西:

链接:https://pan.baidu.com/s/10Pj5_5d1saesbvT8JKfkMg

提取码:88rc

它适用于对于微分方程或其他模型而言过于复杂的图像,允许生成和操纵对象,有可解释性,并且很可能也可以在另一个数据集上完成这些操作。这项工作的唯一问题是不是完全无监督。另一个重要的操作问题是当我改变例如“胡须”的特征时,它会自动使脸部变得更有男子气概,这意味着学习的特征虽然可以解释,但是彼此相关连,或者说,纠缠。

β-VAE

然而,存在一种方法可以帮助我们解开纠缠,换句话说,那就是嵌入,其中的每个元素负责单个因子,并且该嵌入可以用于新数据的分类,生成或操作任务(在零重用领域)。该算法是在DeepMind实验室中开发的,基于可变自动编码器,但更强调潜在分布与先验分布选择之间的KL-差异,而不是恢复损失。有关详细信息,可以参考下面的视频,它很好地解释了β-VAE背后的想法,和在监督学习和强化学习中的应用。

链接:https://pan.baidu.com/s/1iH-Xd-btEVSLpCtWmcKMTA

提取码:mhph

观看此视频后,您可以看到,β-VAE实际上能够提取输入数据变化的因素:物理运动方向,物体大小,颜色还有方向,它们能够在强化学习分离出感兴趣的物体和背景,并可以在实际环境中重复使用模拟训练的结果。

我的实验

由于我一直在医疗和金融应用方面工作,脱离了真正解决实际问题相关的可解释的模型,人工数据生成和零重复学习,我尝试将beta-VAE用于ECG和BTC价格数据。您可以在我的GitHub中找到用于训练模型的代码。首先,我将β-VAE(非常简单的MLP网络)用在来自PTB诊断数据集的心电图,它有三个变化因素:不同的心电图脉冲/形式,不同的人随时间变化的脉搏,还有是否患有梗塞的诊断。我一共训练VAE 50次迭代,bottleneck 大小为 10,学习率为5e-4,capacity  C 为 25(详见本处)。输入设置为单个心跳。正如我预料的,我的模型学习了数据集变化的真正因素。在下面的图片中可以看到,操做心跳输入(黑色的线)时bottleneck中的单个特征从-3变为3的,同时保留其他特征是怎样变化的。可以看到,第5个特征负责改变心跳的形式,第8个特征代表心脏状况(蓝色表示有梗塞症状,而红色心电图与它相反),第10个特征改变脉搏等。

解构心电图节拍

关于金融数据,一切都不是那么清楚(不足为奇)。训练参数相似,但输入是2017年收集的BTC价格的180分钟的样本。我期望从beta-VAE学习一些“标准”金融时间序列模型,如均值回归时间序列,但解释获得的表示相对比较困难。可以看出五号特征改变了输入时间序列的趋势,但二号,三号和六号更多或更少的“更改”会在在时间序列的不同部分添加或删除曲线。

解构 BTC收盘价

多目标解析

如果在图像上显示多个对象并且为每个对象找到不同的因素,那么情况又是怎样呢?

2ew6i-dmgss

总结

让我们总结一下 beta-VAE 在描述“一般”深度学习和数学建模时的方法。

  • 可解释性:完全可解释的特征,需要验证每个特定的嵌入元素。

  • 需要大量数据:仍然需要如此,因为我们是在深度学习领域运行。

  • 无监督学习:100%无人监督。

  • 零重复使用:来自视频的强化学习示例

  • 对象生成:像一般的VAE一样容易采样。

  • 对象操作:使用您想要的任何变化因素都很简单。

  • 理论基础:正在进行中

我们几乎拥有经典数学建模所具有的所有优良特性以及深度学习能力,可以高精度地分析复杂的数据类型。因此,非常自然的问题出现了:如果我能够以完全无监督的方式从复杂数据中学习如此好的模型,那么它是否意味着“经典”数学建模的结束?如果ML模型可以做到,我们是否真的需要考虑复杂的模型,只需要分析它的特征?这取决于我们决定:)

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

欢迎关注磐创博客资源汇总站:http://docs.panchuang.net/

欢迎关注PyTorch官方中文教程站:http://pytorch.panchuang.net/

“GANs”与“ODEs”:数学建模的终结?的更多相关文章

  1. python 版 mldivide matlab 反除(左除)《数学建模算法与程序》Python笔记

    今天在阅读数学建模的时候看到了差分那章 其中有一个用matlab求线性的代码,这里我贴出来 这里我送上 Python代码 In [39]: import numpy as np ...: from s ...

  2. 在数学建模中学MATLAB

    为期三周的数学建模国赛培训昨天正式结束了,还是有一定的收获的,尤其是在MATLAB的使用上. 1. 一些MATLAB的基础性东西: 元胞数组的使用:http://blog.csdn.net/z1137 ...

  3. BITED数学建模七日谈之七:临近比赛时的准备工作

    经过前面六天的文章分享,相信大家对数学模型的相关准备.学习都有了更新的认识,希望大家能从中有所收获,以便更高效地准备比赛和学习数学模型,本文是数学建模经验谈的最后一天:临近比赛的准备工作,希望在临近比 ...

  4. BITED数学建模七日谈之六:组队建议和比赛流程建议

    今天进入数学建模经验谈第六天:组队建议和比赛流程建议 数学模型的组队非常重要,三个人的团队一定要有分工明确而且互有合作,三个人都有其各自的特长,这样在某方面的问题的处理上才会保持高效率. 三个人的分工 ...

  5. BITED数学建模七日谈之五:怎样问数学模型问题

    下面进入数学建模经验谈第五天:怎样问数学模型问题 写这一篇的目的主要在于帮助大家能更快地发现问题和解决问题,让自己的模型思路有一个比较好的形成过程. 在我们学习数学模型.准备比赛的时候,经常会遇到各种 ...

  6. BITED数学建模七日谈之四:数学模型分类浅谈

    本文进入到数学建模七日谈第四天:数学模型分类浅谈 大家常常问道,数学模型到底有哪些,分别该怎么学习,这样能让我们的学习有的放矢,而不至于没了方向.我想告诉大家,现实生活中的问题有哪些类,数学模型就有哪 ...

  7. BITED数学建模七日谈之三:怎样进行论文阅读

    前两天,我和大家谈了如何阅读教材和备战数模比赛应该积累的内容,本文进入到数学建模七日谈第三天:怎样进行论文阅读. 大家也许看过大量的数学模型的书籍,学过很多相关的课程,但是若没有真刀真枪地看过论文,进 ...

  8. BITED数学建模七日谈之二:怎样阅读数学模型教材

    今天进入我们数学建模七日谈的第二天:怎样阅读数学建模教材? 大家再学习数学建模这门课程或准备比赛的时候,往往都是从教材开始的,教材的系统性让我们能够很快,很深入地了解前人在数学模型方面已有的研究成果, ...

  9. MCM试题原文及翻译 AB题 2014美国数学建模竞赛

    MCM试题原文及翻译 AB题 2014美国数学建模竞赛 原创翻译,如有瑕疵,敬请谅解. 转载请注明:过客小站 » MCM试题原文及翻译 AB题 2014美国数学建模竞赛 PROBLEM A: The  ...

随机推荐

  1. Vue源码之数据驱动(个人向)

    #1.大致流程 # 2.具体流程 数据驱动 New VUE Where:src/core/instance/index.js Do: 1.使用Function实现Vue类 2.调用_init 初始化V ...

  2. 2——PHP defined()函数

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  3. mongodb 修改oplogSize

    oplog是local库下的一个固定集合,Secondary就是通过查看Primary的oplog这个集合来进行复制的.每个节点都有oplog,记录从主节点复制过来的信息,这样每个成员都可以作为同步源 ...

  4. python爬虫之字体反爬

    一.什么是字体反爬? 字体反爬就是将关键性数据对应于其他Unicode编码,浏览器使用该页面自带的字体文件加载关键性数据,正常显示,而当我们将数据进行复制粘贴.爬取操作时,使用的还是标准的Unicod ...

  5. Blind Estimation and Detection of Space-Time Trellis Coded Transmissions over the Rayleigh Fading MIMO Channel

    目录 文章来源 摘要 基本概念 粒子滤波 时间序列模型 系统模型 通信系统 经典状态空间表示 论文所提出的状态空间表示 借鉴之处 文章来源 IEEE TRANSACTIONS ON COMMUNICA ...

  6. 常见WAF绕过思路

    WAF分类 0x01 云waf 在配置云waf时(通常是CDN包含的waf),DNS需要解析到CDN的ip上去,在请求uri时,数据包就会先经过云waf进行检测,如果通过再将数据包流给主机. 0x02 ...

  7. 微信小程序支付到第三方商户账号

    使用场景:合作商家使用本公司小程序开店,要求支付金额直接到合作商家的公司微信账户; 使用要求:合作商家需提供微信支付关联,商户号,商户API密钥,API证书(该证书只用作退款功能,不开发退款可以不用) ...

  8. 前端面试题-<!DOCTYPE>

    现在的各种前端开发工具都足够强大,支持插入模板代码,也就导致我们往往会忽略已经自动生成的代码,而代码的第一行 DOCTYPE 声明,就是最容易忽略的部分. 一.DOCTYPE DOCTYPE 是 do ...

  9. (26)ASP.NET Core EF保存(基本保存、保存相关数据、级联删除、使用事务)

    1.简介 每个上下文实例都有一个ChangeTracker,它负责跟踪需要写入数据库的更改.更改实体类的实例时,这些更改会记录在ChangeTracker中,然后在调用SaveChanges时会被写入 ...

  10. javascript的“好莱坞原则”

    好莱坞原则——不要给我们打电话,我们会给你打电话(don‘t call us, we‘ll call you).在Javascript中就是:别调用我们,我们会调用你. “好莱坞原则”强调的是高层对低 ...