【问题标题】:Reverse engineer scikit-learn serialized model逆向工程 scikit-learn 序列化模型
【发布时间】:2019-04-17 16:24:10
【问题描述】:

我正在尝试了解序列化 scikit-learn/keras 拟合模型(使用 pickle/joblib 等)的安全隐患。

具体来说,如果我处理我不想公开的数据,是否有人可以对模型拟合的数据进行逆向工程?或者数据只是算法更新算法相关系数/权重的一种方式? (如果我针对“这部电影很棒”训练模型并将其存储为 foo.pkl 文件,我是否也能够加载 foo.pkl 并说它接受过“这部电影很棒”的训练,如果我有的话访问的是pkl文件而不是数据)

【问题讨论】:

  • 需要更多细节。取决于具体的算法。在大多数情况下,除了可以轻松访问的学习系数(权重、参数等)之外,只有一些估计器会保存部分或全部数据。一些估计器可能会存储一些中心趋势(均值、众数或类似),这些中心趋势可再次用于获取有关数据的概念。
  • 也依赖于预处理。您需要将示例中的字符串转换为一些数字,这在训练和测试之间应该是一致的。因此,您还必须发送预处理算法,这肯定会存储将要进入模型的特征的映射。

标签: python machine-learning scikit-learn pickle joblib


【解决方案1】:

不,您不能(原则上无论如何)基于模型对数据进行逆向工程。您显然可以推导出经过训练的模型权重/等,并开始很好地了解它可能已经训练过的内容,但是直接推导数据,我不知道有任何可能的方法,只要您正在酸洗训练好的模型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-10
    • 2015-12-21
    • 2020-03-19
    • 2017-12-25
    • 2010-12-25
    • 2014-01-07
    • 2011-01-17
    • 2021-07-01
    相关资源
    最近更新 更多