in isoexp/main_attack_one_user.py [0:0]
def compute_relaxed_attack(alg, a_star, x_star, slack=10**-10):
d = model.n_features
delta = cp.Variable(d)
obj = cp.Minimize(cp.quad_form(delta, np.eye(d))/2)
theta_a_star = alg.thetas_hat[a_star]
betas = alg.alpha()
constraints = []
P_a_star = sqrtm(alg.inv_design_matrices[a_star])
for a in range(len(alg.thetas_hat)):
if a != a_star:
theta = alg.thetas_hat[a]
P = sqrtm(alg.inv_design_matrices[a])
temp_constraint = (theta - theta_a_star)@(x_star+delta) + betas[a]*cp.norm(P@(x_star+delta))\
#- betas[a_star]R * (cp.norm(P_a_star @ x_star) + (alg.inv_design_matrices[a] @ x_star) @
# delta/cp.norm(P_a_star @ x_star))
constraints.append(temp_constraint + slack <= 0)
prob = cp.Problem(obj, constraints)
try:
prob.solve(verbose=False, max_iters=1000, feastol=10**-8)
epsilon = delta.value
# print('epsilon =', epsilon)
# for a in range(len(alg.thetas_hat)):
# if a != a_star:
# theta_a_star = alg.thetas_hat[a_star]
# betas = alg.alpha()
# theta = alg.thetas_hat[a]
# P = sqrtm(alg.inv_design_matrices[a])
# P_a_star = sqrtm(alg.inv_design_matrices[a_star])
# print('The constraint for arm {}:'.format(a), np.dot(theta - theta_a_star, (x_star+epsilon)) + betas[a]*np.linalg.norm(P.dot((x_star+epsilon))) \
# - betas[a_star] * (np.linalg.norm(P_a_star.dot(x_star)) +
# np.dot((alg.inv_design_matrices[a].dot(x_star)), epsilon)/np.linalg.norm(P_a_star.dot(x_star))))
except:
print('Exception')
epsilon = np.zeros((d,))
# print('epsilon =', epsilon)
if epsilon is None:
return np.zeros((d,))
return epsilon