机器学习的知识产权保护(1)--保护的难题
企业想保护的是什么
机器学习, 尤其是现今流行的深度学习, 主要是深度神经网络, 其中包含两个部分: 网络结构, 比如用了几个隐含层, 每个隐含层的神经元数量各自是多少, 激活函数用的是ReLU还是tanh还是其他, 卷积层是怎样的, 有没有层间直接的连接等等. 网络参数, 每个神经元都只是做$Z=W A +B $, A是上一层传来的值, 独立参与计算的就是W和B.
如果知道了一个神经网络的结构和参数, 这个网络就可以被复制并且使用. 如果仅仅知道了神经网络的结构, 还需要自己去找大量的数据进行训练, 也是可以找到参数的, 自己训练找到的参数集合和其他人训练得出的参数集合会有不同, 可能有细微的差异.
神经网络的使用和训练不是一会事: * 使用, 只需要让数据按照网络的方向前向流动, 也就是不断计算
$$ Z=W A +B \newline A=F(Z) $$
, 这个速度可以比较快, 涉及到的运算量相对较少. 比如一些经过精巧优化过的神经网络可以在手机达到实时(20-30fps)识别图像的能力. * 训练, 需要将神经网络按照反向进行求导, 将误差反向传播到各个参数上, 然后逐渐迭代. 训练需要极大的计算能力, 比如多个高等级的GPU群组, 经过数天乃至数周的运算, 才能将神经网络训练完成.
现有神经网络的结构虽然在迅速变化, 日新月异, 但总量有限, 而且目前这个领域还处于学术研究的早中期, 大量的网络结构是开源的, 学术界更多在探索网络结构优化网络结构上. 由于训练获得理想的参数需要大量的数据, 而数据又是企业的优势, 或者获取数据昂贵, 所以企业更多是用已有的结构稍作修改, 然后使用自有的数据进行训练, 获取参数.
综上, 企业在神经网络的参数上投入资本更多, 需要保护的是神经网络的参数.
专利保护
申请专利显然是保护知识产权最常规的做法, 那么在专利里面列出参数表进行保护?
当然有这样的实例, 比如对于药品\化学品的专利, 就可以对配方的配比进行保护, 按照这个比例或者用量做出来的药物才有效. 但是对于深度神经网络来说, 有一些问题:
参数数量
参数多, 一个网络光是层数就可能有152层(比如深得离谱的ResNet), 每层又有很多个神经元, 每个神经元上其实是输入*输出数量的矩阵, 整个参数表是非常大的. 光是列出来这些参数数据恐怕就需要K或者M这样的数量级. 这在现阶段的专利文本上是不现实的.
保护范围
对于一个数, 保护这个数的数值是没有意义的, 比如写个黑色火药的专利, 保护"1硫2硝3木炭", 那么"1.003硫, 1.997硝, 3木炭"的爆炸效果应该也不会差.
所以一定要保护一个范围, 比如硫的比例在0.5~1.5, 但要去对每一个参数一一进行保护范围的限定, 也是非常困难的: 首先都列出来是个难题. 其次, 前面说过大量的应用是建立在同一网络结构之上的, 不同的应用可能只是部分参数的微小差别, 要组合多个网络参数的差别才会变成另一个应用. 如果把参数看作是座标的话, 相当于在极高的维度上进行空间范围的限定和划分, 这恐怕已经超出了法律所能够进行的能力.
侵权识别
专利权只有能够对侵权者施加惩罚才有意义, 其中的必要条件就是要能够识别出侵权者, 由于网络结构可能一样, 所以从程序的行为上是否可以判定程序是否侵权呢? 前面说过一个神经网络结构和参数都一致就是同一个神经网络, 那么在结构不变或者已知的情况下, 就需要去判定参数了.
逆向工程获取参数, 也许有可能做到, 但这要求神经网络是在本地运行的, 如果在云端, 则参数很难采集到. 采集不到参数就不足以证明对方的侵权行为.
综上, 机器学习的专利保护会有难撰写, 难申请, 侵权难界定的问题. 有可能专利保护并非机器学习知识产权的有力工具.