正则化

正则化

这篇博客主要说下机器学习中的正则化技术,以及在tensoflow框架下设计正则化操作的说明,下面直入主题。
正则化主要解决过拟合问题,设假设函数为:
在这里插入图片描述
也就是说x的次数越高,网络的拟合程度越好,但相应的预测能力可能变差。如果发生拟合问题,解决方法1、PCA:丢弃一些不能帮助我们正确预测的特征。2、正则化:保留所有特征,但是减小参数的大小。
假设损失函数为
在这里插入图片描述
i为每个样本的标记,m为样本个数。我们要做的是在一定程度上减少参数θ的值,这就是正则化操作。因此便要修改损失函数为:
在这里插入图片描述
但是在一些网络,如CNN,RNN中有非常多的特征,我们并不知道要惩罚哪些参数,所以我们会惩罚所有的参数,公式变为:
在这里插入图片描述
下面我们把正则化推广到逻辑回归中,公式为:
在这里插入图片描述
下面用代码表示这个函数以及正则化操作:

// An highlighted block
import numpy as np
def LossReg(theta,x,y,L)
	theta=np.matrix(theta)
	x=np.matrix(x)
	y=np.matrix(y)
	one=np.multiply(-y,np.log(sigmiod(x*theta.T)))
	two=np.multiply((1-y),np.log(1-sigmiod(x*theta.T)))
	reg=L/(2*len(x))*np.sum(np.power(theta[:,1:theta.shape[1]],2))
	return np.sum(one-two)/len(x)+reg

在深度学习中,使用tensorflow的正则化表示也设计的也非常友好,使用2-3行代码就可以实现:

为了方便起见使用tflearn库设计一个卷积层如下:
x=tflearn.layers.conv.conv_2d(input,16,(3,3),strides=1,activation='relu',weight_decay=1e-5,regularizer='L2')
说明:weight_decay为权重衰减,对应公式中的λ、程序中的L。regularize='L2'表示使用的L2正则。

loss_zong=loss+tf.add_n(tf.get_collection(tf.GraphKeys.REGULARIZATION_LOSSES))*0.1
说明:loss为神经网络本身需要的函数。   
      tf.get_collection(tf.GraphKeys.REGULARIZATION_LOSSES),把需要惩罚的参数(REGULARIZATION_LOSSES),
通过tf.get_collection()函数放到一个集合当中,再使用tf.add_n函数累加起来。计算时自然会通过
weight_decay权重衰减系数去计算。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值