JSMA算法笔记
JSMA算法笔记
JSMA算法的代码和作者解读(这是一个超链接)
在上述文章中解释了JSMA算法的作用和原理,这里简单说一下代码的运行过程
input:
output:
基本公式:
前向导数,描述了i输入分量对于j分类分值的影响
第一步:求jacobian矩阵
矩阵中的(i,j)是第i个分类对input的x(i)的偏导
第二步:求出alpha矩阵和beta矩阵
通过对jacobian矩阵进行操作可以得到alpha和beta矩阵
第三步:根据公式求解最大值
求解最大值的过程中,作者发现如果根据上述公式寻找合适的一个点,这个点可能不存在或者很难找到。所以作者决定采用下述公式,同时寻找一对点:
同时在图中出现的限制条件,采用mask矩阵的方式,不符合条件的则在该位置置为0,最后mask矩阵和alpha,beta矩阵相乘得到Map。
第四步:在找到的点上加上扰动和判断类型,失败则继续迭代
没说到的地方:
在代码中存在一些调整,比如说对于该位置达到修改值上限(下限)的话则不在搜索该位置,该位置在mask中也会置为0.存在正负扰动值,但两者逻辑都差不多。