V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ray5173
V2EX  ›  程序员

请教一个深度学习的问题

  •  
  •   ray5173 · 2022-03-28 15:40:42 +08:00 · 2340 次点击
    这是一个创建于 963 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想用生成对抗网络或者变分自编码器做个序列缺失数据填补,不知可行否?

    场景如下: 比如:有一段时间内的人体监控参数,比如血压、心跳、呼吸,每隔 15s 一组。假设已经有了一个月这种的数据,然后发现中间缺失了某一个或者几个小时的数据,现在想通过某种方法将它补上。

    通过生成对抗网络或者变分自编码器能达到这个目的么?

    21 条回复    2022-03-29 19:56:32 +08:00
    kop1989smurf
        1
    kop1989smurf  
       2022-03-28 15:46:56 +08:00
    从功能角度出发,楼主的这个需求有点怪。

    如果说只是要求近似(或者说拟合),那么传统的经验策略算法就够用了,不需要机器学习。比如针对前一天 or 几天的,同时段的数据取平均值+随机。
    如果说是要切合实际情况,那么你这个用什么方法也做不到。因为无论是机器学习,还是既有算法,都是对历史和经验的过拟合。

    当然,如果楼主只是借这个不确切的需求来探讨机器学习,那算我没说,机器学习也不是我的长项,就不班门弄斧了。
    murmur
        2
    murmur  
       2022-03-28 15:47:17 +08:00
    我日,这你都想的出来,别人心脏检查要做 24 小时的心电图都未必能找到那个异常的点,你这居然想 PS 心电图
    ray5173
        3
    ray5173  
    OP
       2022-03-28 15:59:26 +08:00
    我的例子举得不好,造成了误解,请容我重新举下例😂
    ray5173
        4
    ray5173  
    OP
       2022-03-28 16:02:38 +08:00
    不拿人体举例了,拿地质参数举例。
    比如:测量地质的某组参数,压强、裂缝、温度等。每隔一米测量一组数据,在几公里内,中间缺失了几米,可以用什么方法将这部分数据补充上呢?
    ray5173
        5
    ray5173  
    OP
       2022-03-28 16:05:00 +08:00
    @kop1989smurf 麻烦看下补充,我重新举了例子。这个例子里,就没法用同时段的数据取平均值了,有什么其他好方法么
    ray5173
        6
    ray5173  
    OP
       2022-03-28 16:05:23 +08:00
    @murmur 我那个例子不合适,我换了个😂
    thinkershare
        7
    thinkershare  
       2022-03-28 16:34:04 +08:00
    @ray5173 你要补上的目的是什么干什么? 机器学习又不是什么魔法, 这种拟合出来的数据没啥用
    3dwelcome
        8
    3dwelcome  
       2022-03-28 16:34:09 +08:00
    AI 里有个 python inpaint 和楼主这个有点类似,也是用别的数据,补全缺失的部分数据。

    但是具体代码我还没看,不知道算法有没有泛用性。

    理论上应该是可行的。
    kadingshushi
        9
    kadingshushi  
       2022-03-28 16:34:42 +08:00
    hehe
    thinkershare
        10
    thinkershare  
       2022-03-28 16:37:32 +08:00
    机器学习本质上就是拟合分布, 你需要保证你需要预测的数据符合分布. 因此机器学习只能预测共性, 没法预测它没学到的未知的东西, 而测量恰好就是未知数据! 我之前也研究过给雷达点云按照历史数据预测不存在的点来尝试补齐物体的轮廓, 后面发现效果不好, 没啥用, 纯粹属于浪费时间和算力!
    Rubbly
        11
    Rubbly  
       2022-03-28 16:55:18 +08:00
    前提是给的训练数据和测试数据一定是有规律的。在你的例子里,如果每一天的血压在时间维度都是先上升再下降,那你将这样的数据喂给网络,当他看到一段缺失自然能根据 context 将其补齐。

    不过这个 context 具体是什么,需要你根据不同的数据特征来做实验。比如完全抛弃时间的概念,那你可以套用 Image Inpainting 的思路,直接用一个 UNet 学习由 [残缺的数据] 到 [完整的数据] 这样的映射;也可以加入时间的概念,用 LSTM 去学习序列中的关系, [前 N 组] 去预测 [后 N 组] ,这样也是完全可行的。

    不过不管怎么说,第一步一定是观察数据。
    nightwitch
        12
    nightwitch  
       2022-03-28 17:10:40 +08:00
    建议如果你的数据比较平滑的话直接用临近的数据多项式插值一下,效果估计也大差不差
    数据有明显的时序分布规律的话可以考虑用一下网络。
    czfy
        13
    czfy  
       2022-03-28 17:15:49 +08:00   ❤️ 1
    这首先是一个数据插补问题,不是一个深度学习问题

    数据插补可以用机器学习算法,但不一定要用
    建议搜一下 数据插补 data imputation
    除了最简单的均值、回归,还有用随机森林做插补的,有 R 包,missForest
    还有一大批其他插补方法的 R 包
    至于其他软件有没有包我就不清楚了
    h272377502
        14
    h272377502  
       2022-03-28 17:27:30 +08:00
    补几秒或许还可以,补几个小时就扯淡了
    galileo1214
        15
    galileo1214  
       2022-03-28 18:28:16 +08:00
    对抗网络是密度学习,你这补充数据,用普通的神经网络拟合下不就好了
    shyrock
        16
    shyrock  
       2022-03-28 19:01:24 +08:00   ❤️ 2
    举得场景都很扯啊。。。
    AI 补全目前看靠谱的场景都是审美类的,真正用在治病、科考这些方面的数据都要求严谨,缺失的数据反而是说明问题的重点,你这有点给维纳斯补手臂的意思,画蛇添足啊。
    zvl0reqglvd
        17
    zvl0reqglvd  
       2022-03-28 19:20:31 +08:00
    插值?
    cjx2233
        18
    cjx2233  
       2022-03-28 23:12:47 +08:00
    补的话当然可以用 GAN 做,但是合成的数据可靠或可信吗?目前没有定论
    peterchen26
        20
    peterchen26  
       2022-03-29 10:30:48 +08:00 via Android
    灌水可以 拿来用就得严格验证产生的数据可靠性
    tfdetang
        21
    tfdetang  
       2022-03-29 19:56:32 +08:00
    首先肯定可以,一张照片上擦掉图案都可以补上。问题是有没有必要这么做
    主要还是看补出来的数据用来做什么,是否需要用 GAN 的方式来生成,因为 GAN 其实并不那么容易训练。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1300 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 23:55 · PVG 07:55 · LAX 15:55 · JFK 18:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.