python 深度学习(5)-- 随机失活 & 过采样

(1)随机失活

随机失活 指的是在每轮训练时忽略一定随机数量的神经元,dropout 可能会提高 DNN 性能。随机省略一部分隐藏的神经元的过程称之为 随机失活 。如图

python 深度学习(5)-- 随机失活 & 过采样_第1张图片

阐释一下这种方法:对于每次训练的实例,每个隐藏层的神经元以 p 的概率从网络中随机被忽略。由于神经元是随机选择的,因此每个训练实例选择的都是不同的神经元组合。

随机失活并不能保证提高性能,但通常值得一试。牢记以下三点:

(1)通过在 DNN 中创建多条通往正确分类的路径,随机失活能降低噪声样本中共适性的可能性。
(2)随机失活的比例越大,训练中引入的噪声就越多,这会降低学习速度。

(3)随机失活在非常大的 DNN 模型上的效果最佳

重建模型如下:

''' 其他的参数不再解释 '''
fit2 = Classifier(
            ''' 采用 双曲正切 激活函数 '''
            layers = [Layer("Tanh",units = 45),Layer("Tanh",units = 18),Layer("Tanh",units = 18),
                            Layer("Softmax")],
            learning_rate = 0.80,
            random_state = 2018,
            valid_size = 0.25,
            dropout_rate = 0.20 , ''' 随机失活率 '''
            learning_momentum = 0.30,
            batch_size = 35, ''' batch_size 设置 '''
            n_iter = 100)

(2)过采样

在实际数据中,往往面对样本不平衡的问题,比如在金融交易数据集中,绝大多数的交易是“正常”的,只有一小部分是“可疑”交易。这种严重的类别失衡样本可能导致深度学习模型表现不佳。重新采样数据可疑解决这个问题。在该方法中,对权重过低的类别进行 过采样,以此改变训练集中的相对类别频率。

# 取 x_train 中第 0 列的值
w_train = x_train[:,0]

''' 指定每个样本的采样率,对于较小类别进行过采样,权重为 1.10 '''
''' 注意 x_train 是numpy 二维数组 , y_train 必须是 numpy 的一维数组而不能是 list '''
w_train[y_train == 0] = 1
w_train[y_train == 1] = 1.10
# 此处省略
fit3 = Classifier( ... )

# 在训练时根据指定采样权重采样
fit3.fit(x_train, y_train, w_train)

如下代码示例:

python 深度学习(5)-- 随机失活 & 过采样_第2张图片

python 深度学习(5)-- 随机失活 & 过采样_第3张图片

你可能感兴趣的:(NLP,探索数据挖掘,与,分析)