必威体育Betway必威体育官网
当前位置:首页 > IT技术

EarlyStop

时间:2019-08-24 15:41:07来源:IT技术作者:seo实验室小编阅读:77次「手机版」
 

early

这里写图片描述

在训练中,我们希望在中间箭头的位置停止训练。而early stopping就可以实现该功能,这时获得的模型泛化能力较强,还可以得到一个中等大小的w的弗罗贝尼乌斯范数。其与L2正则化相似,选择参数w范数较小的神经网络

可以用L2正则化代替early stopping。因为只要训练的时间足够长,多试几个lambda。总可以得到比较好的结果。

Early stopping:

优点:只运行一次梯度下降,我们就可以找出w的较小值,中间值和较大值。而无需尝试L2正则化超级参数lambda的很多值。

缺点:不能独立地处理以上两个问题,使得要考虑的东西变得复杂。举例如下:

这里写图片描述

一般机器学习的步骤分为以上两步,第一步我们确定一个成本函数J,然后可以用梯度下降等方法去优化它;第二步我们不希望模型发生过拟合,就有正则化等方式去操作,这是一个动态的过程。但是如果采用early stopping,这就相当于用一种方式来控制两个问题的结束,这会使得问题变得复杂。如图一所示,在中间位置时,模型已经停止训练了,而成本函数还没有下降到合适的区域。

earlyStop例子:

# coding:utf-8

class EarlyStop:
    def __init__(self,max_not_better_epochs=50):
        self.__max_not_better_epochs=max_not_better_epochs
        self.__current_not_better_epochs=0
        self.__best_valid_rate=0
        pass

    def jude_for_each_epoch(self,current_valid_rate):
        if current_valid_rate>self.__best_valid_rate:
            self.__best_valid_rate=current_valid_rate
            self.__current_not_better_epochs=0
        else:
            self.__current_not_better_epochs+=1
        pass

    def if_stop(self):
        if self.__current_not_better_epochs>=self.__max_not_better_epochs:
            return True
        else:
            return false

相关阅读

分享到:

栏目导航

推荐阅读

热门阅读