2017-09-06 4 views
1

Etant donné un design matrix (avec une colonne initiale de 1s correspondant à un facteur de biais), je peux effectuer l'estimation du paramètre standard NN style L2-régularisée, dans lequel only the weights are regularized, avec une variété d'outils de python commeComment exclure un biais de la régularisation en utilisant `matrix_solve_ls` de TensorFlow?

scipy.optimize.minimize(lambda p: np.mean((np.dot(dmat, p) - y_data)**2) + lamb*np.dot(p[1:], p[1:]), np.zeros(n_params).T).x 

ou

scipy.optimize.minimize(lambda p: np.mean((np.dot(dmat, p) - y_data)**2) + 2*lamb*tf.nn.l2_loss(p[1:]).eval(), np.zeros(n_params).T).x 

Mais je ne vois aucun moyen d'exclure le biais de régularisation avec tensorflow de tf.matrix_solve_ls qui traite

tf.matrix_solve_ls(dmat, np.array([y_data]).T, l2_regularizer=lamb*len(dmat)).eval() 

comme équivalent à

scipy.optimize.minimize(lambda p: np.mean((np.dot(dmat, p) - y_data)**2) + lamb*np.dot(p, p), np.zeros(n_params).T).x 

Comment puis-je exclure parti pris (ou, par construction, le premier paramètre) de régularisation en utilisant tf.matrix_solve_ls?

+0

Je ne suis pas sûr d'utiliser 'tf.matrix_solve_ls', mais je l'ai déjà fait en calculant mon terme de régularisation sur les variables qui ne contiennent pas le mot" bias ". Quelque chose comme 'reg_term = tf.norm ([var pour var dans tf.trainable_variables() sinon 'bias' dans var.name])' par exemple. – Engineero

Répondre

1

Malheureusement, cela n'est pas possible avec la version actuelle de matrix_solve_ls. D'autre part, la valeur par défaut (rapide) chemin dans matrix_solve_ls a récemment été modifié pour être simplement une fonction composite Python:

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/ops/linalg_ops.py#L293

Vous pouvez facilement faire une version de ce code où le l2_regularizer est un vecteur (avec une valeur distincte pour chaque paramètre). Ce serait probablement une bonne idée d'implémenter une telle généralisation dans matrix_solve_ls en général. Peut-être que vous pouvez soumettre ce changement comme une demande d'extraction?