L2 Normalization
第二种Normalization对于每个样本缩放到单位范数(每个样本的范数为1),主要有L1-normalization(L1范数)、L2-normalization(L2范数)等
Normalization主要思想是对每个样本计算其p-范数,然后对该样本中每个元素除以该范数,这样处理的结果是使得每个处理后样本的p-范数(比如l1-norm,l2-norm)等于1。
p-范式的计算公式:
tensorflow中实现这一方法的函数如下:
tf.nn.l2_normalize(x,
dim,
epsilon=1e-12,
name=None)
上式:
x为输入的向量;
dim为l2范化的维数,dim取值为0或0或1或[0,1];
epsilon的范化的最小值边界;
下面看个例子:
#-*-coding:utf-8-*-
import tensorflow as tf
input_data = tf.constant([[1.0,2,3],[4.0,5,6],[7.0,8,9]])
output_1 = tf.nn.l2_normalize(input_data, dim=0, epsilon=1e-10, name='nn_l2_norm')
output_2 = tf.nn.l2_normalize(input_data, dim=1, epsilon=1e-10, name='nn_l2_norm')
output_3 = tf.nn.l2_normalize(input_data, dim=[0, 1], epsilon=1e-10, name='nn_l2_norm')
with tf.Session() as sess:
print(output_1.eval())
print(output_2.eval())
print(output_3.eval())
‘’’output:
[[0.12309149 0.20739034 0.26726127]
[0.49236596 0.51847583 0.53452253]
[0.86164045 0.82956135 0.80178374]]
[[0.26726124 0.5345225 0.8017837 ]
[0.45584232 0.5698029 0.6837635 ]
[0.5025707 0.5743665 0.64616233]]
[[0.05923489 0.11846977 0.17770466]
[0.23693955 0.29617444 0.35540932]
[0.4146442 0.4738791 0.53311396]]
'''
dim = 0, 为按列进行l2范化
[[1./norm(1), 2./norm(2) , 3./norm(3) ]
[4./norm(1) , 5./norm(2) , 6./norm(3) ] =
[7./norm(1) , 8./norm(2) , 9./norm(3) ]]
[[0.12309149 0.20739034 0.26726127]
[0.49236596 0.51847583 0.53452253]
[0.86164045 0.82956135 0.80178374]]
dim=1,为按行进行l2范化
[[1./norm(1), 2./norm(1) , 3./norm(1) ]
[4./norm(2) , 5./norm(2) , 6./norm(2) ] =
[7./norm(3) , 8..norm(3) , 9./norm(3) ]]
[[0.12309149 0.20739034 0.26726127]
[0.49236596 0.51847583 0.53452253]
[0.86164045 0.82956135 0.80178374]]
dim=[1, 2],按行列进行l2范化
16.1882
[[1./norm, 2./norm , 3./norm ]
[4./norm , 5./norm , 6./norm ] =
[7./norm , 8./norm , 9./norm ]]
[[0.05923489 0.11846977 0.17770466]
[0.23693955 0.29617444 0.35540932]
[0.4146442 0.4738791 0.53311396]]
L1和L2regulation
L1 regulation
线性模型常用来处理回归和分类任务,为了防止模型处于过拟合状态,需要用L1正则化和L2正则化降低模型的复杂度,很多线性回归模型正则化的文章会提到L1是通过稀疏参数(减少参数的数量)来降低复杂度,L2是通过减小参数值的大小来降低复杂度。
L1正则化的损失函数为:
上式中,是损失函数,是加上正则项的损失函数
求的梯度:
更新权重:
咱们做个假设,所有的w都大于0,上式变为:
看上式,因为w>0,在式子最后减去一个,这容易使得最后的w趋向于0,如果假设w<0,同理也会有这个效果。所以,当w大于0时,更新的参数w变小;当w小于0时,更新的参数w变大;所以,L1正则化容易使参数变为0,即特征稀疏化。
L2 regulation
L2正则化的损失函数为:
由上式可知,正则化的更新参数相比于未含正则项的更新参数多了
项,当w趋向于0时,参数减小的非常缓慢,因此L2正则化使参数减小到很小的范围,但不为0
来源:https://blog.csdn.net/qq_39068872/article/details/100977808