标签: regularized

RNN正则化:要对哪个组件进行正则化?

我正在构建一个用于分类的RNN(在RNN之后有一个softmax层)。要进行正则化的选项有很多,我不确定是否只尝试所有这些,效果会一样吗?在什么情况下我应该规范哪些组件?

这些组件是:

  • 内核权重(图层输入)
  • 循环重量
  • 偏压
  • 激活功能(层输出)

python regularized deep-learning keras recurrent-neural-network

8
推荐指数
1
解决办法
2925
查看次数

为什么需要在机器学习问题中使用正则化?

这似乎是一个愚蠢的问题,但我无法得出一个合理的答案.

据说正则化可以帮助我们获得复杂的模型以避免过度拟合.但对于线性分类问题:

f(x) = Wx
Run Code Online (Sandbox Code Playgroud)

模型的复杂性有些明确:它是线性的,而不是二次的或更复杂的.那么为什么我们仍然需要对参数进行正则化?为什么在这种情况下我们更喜欢较小的重量?

statistics classification machine-learning mathematical-optimization regularized

7
推荐指数
1
解决办法
1738
查看次数

Pytorch 中缺乏 L1 正则化的稀疏解决方案

我正在尝试在简单神经网络的第一层(1 个隐藏层)上实现 L1 正则化。我查看了 StackOverflow 上的一些其他帖子,这些帖子使用 Pytorch 应用 l1 正则化来弄清楚它应该如何完成(参考:在 PyTorch 中添加 L1/L2 正则化?在 Pytorch 中,如何将 L1 正则化添加到激活中?)。无论我将 lambda(l1 正则化强度参数)增加多高,我都不会在第一个权重矩阵中得到真正的零。为什么会这样?(代码如下)

import torch
import torch.nn as nn
import torch.nn.functional as F
import numpy as np

class Network(nn.Module):
    def __init__(self,nf,nh,nc):
        super(Network,self).__init__()
        self.lin1=nn.Linear(nf,nh)
        self.lin2=nn.Linear(nh,nc)

    def forward(self,x):
        l1out=F.relu(self.lin1(x))
        out=F.softmax(self.lin2(l1out))
        return out, l1out

def l1loss(layer):
    return torch.norm(layer.weight.data, p=1)

nf=10
nc=2
nh=6
learningrate=0.02
lmbda=10.
batchsize=50

net=Network(nf,nh,nc)

crit=nn.MSELoss()
optimizer=torch.optim.Adagrad(net.parameters(),lr=learningrate)


xtr=torch.Tensor(xtr)
ytr=torch.Tensor(ytr)
#ytr=torch.LongTensor(ytr)
xte=torch.Tensor(xte)
yte=torch.LongTensor(yte)
#cyte=torch.Tensor(yte)

it=200
for epoch in range(it):
    per=torch.randperm(len(xtr))
    for i …
Run Code Online (Sandbox Code Playgroud)

neural-network python-3.x regularized pytorch

6
推荐指数
1
解决办法
1950
查看次数

反转 dropout 如何补偿 dropout 的影响并保持期望值不变?

我正在从deeplearning.ai课程中学习神经网络中的正则化。在 dropout 正则化中,教授说如果应用 dropout,计算的激活值将小于未应用 dropout 时(测试时)。所以我们需要扩展激活以保持测试阶段更简单。

我明白这个事实,但我不明白缩放是如何完成的。这是一个用于实现反向 dropout 的代码示例。

keep_prob = 0.8   # 0 <= keep_prob <= 1
l = 3  # this code is only for layer 3
# the generated number that are less than 0.8 will be dropped. 80% stay, 20% dropped
d3 = np.random.rand(a[l].shape[0], a[l].shape[1]) < keep_prob

a3 = np.multiply(a3,d3)   # keep only the values in d3

# increase a3 to not reduce the expected value of output
# (ensures that the expected value …
Run Code Online (Sandbox Code Playgroud)

machine-learning neural-network regularized deep-learning dropout

6
推荐指数
1
解决办法
880
查看次数

如何在 Keras/TensorFlow 的自定义层中应用内核正则化?

请考虑 TensorFlow 教程中的以下自定义层代码:

class MyDenseLayer(tf.keras.layers.Layer):
  def __init__(self, num_outputs):
    super(MyDenseLayer, self).__init__()
    self.num_outputs = num_outputs

  def build(self, input_shape):
    self.kernel = self.add_weight("kernel",
                                  shape=[int(input_shape[-1]),
                                         self.num_outputs])

  def call(self, input):
    return tf.matmul(input, self.kernel)
Run Code Online (Sandbox Code Playgroud)

tf.keras.regularizers.L1如何对自定义层的参数应用任何预定义的正则化(例如)或自定义正则化?

python machine-learning regularized keras tensorflow

6
推荐指数
1
解决办法
3473
查看次数

如何在 scikit-learn LogisticRegression 中设置拦截缩放

我正在使用 scikit-learn 的 LogisticRegression 对象进行正则化二元分类。我已经阅读了文档,intercept_scaling但我不明白如何明智地选择这个值。

数据集如下所示:

  • 10-20 个特征,300-500 个重复
  • 高度非高斯分布,事实上大多数观测值为零
  • 输出类别的可能性不一定相同。在某些情况下,它们几乎是 50/50,而在其他情况下,它们更像是 90/10。
  • 通常C=0.001会给出良好的交叉验证结果。

该文档包含警告,指出拦截本身需要进行正则化,就像其他所有功能一样,这intercept_scaling可以用来解决这个问题。但我该如何选择这个值呢?一个简单的答案是探索C和的多种可能组合intercept_scaling,并选择能够提供最佳性能的参数。但这个参数搜索将花费相当长的时间,我想如果可能的话避免这种情况。

理想情况下,我想使用截距来控制输出预测的分布。也就是说,我想确保分类器在训练集上预测“1 类”的概率等于训练集中“1 类”数据的比例。我知道在某些情况下会出现这种情况,但我的数据中并非如此。我不知道这是由于正则化还是由于输入数据的非高斯性质。

感谢您的任何建议!

regression classification machine-learning regularized scikit-learn

5
推荐指数
1
解决办法
3628
查看次数

如何在具有不同批量大小的多个输入输出数据集的 keras 中训练模型

我有一个使用 Keras 函数式 API 解决的监督学习问题。

由于这个模型预测物理系统的状态,我知道监督模型应该遵循额外的约束。

我想补充一点,作为一个额外的损失项,它会惩罚模型做出不遵循这些约束的预测。不幸的是,监督学习问题的训练示例数量 >> 约束示例数量。

基本上,我正在尝试这样做:

型号概要

最小化监督学习误差和作为辅助损失的约束误差。

我不相信在每个数据集上交替训练批次会成功,因为梯度一次只能捕获一个问题的错误,当我真的希望物理约束作为监督学习任务的正则化时。(如果我的解释不正确,请告诉我)。

我知道这可以在纯 Tensorflow 或 Theano 中实现,但我对离开 Keras 生态系统犹豫不决,因为它使其他一切变得如此方便。如果有人知道如何训练批量大小因输入而异的模型,我将非常感谢您的帮助。

neural-network gradient-descent regularized keras

5
推荐指数
0
解决办法
917
查看次数

如何分解大型网格搜索?

我希望为不同的神经网络配置运行一个非常大的网格搜索。就其完整性而言,使用我当前的硬件运行是不切实际的。我知道可能有比朴素网格搜索(例如随机、贝叶斯优化)更好的技术,但是我的问题是我们可以对首先包含的内容做出哪些合理的假设。具体来说,就我而言,我希望在

  • A:隐藏层数
  • B:隐藏层的大小
  • C:激活函数
  • D:L1
  • 乙:L2
  • F:辍学

我有一个想法是将(1)标识的网络结构c通过运行AC网格搜索,(2)选择 c具有最低(例如MSE)误差(对测试数据集),和(3)的运行与配置网络c通过DF 上的单独网格搜索,以确定最合适的正则化策略。

在这种情况下,这是一种明智的方法,还是理论上我可以通过使用在第一次网格搜索(即 AC)中显示更高错误的网络配置来获得更低的最终错误(即在正则化之后)?

machine-learning neural-network regularized hyperparameters

5
推荐指数
1
解决办法
112
查看次数

选择正则化参数

在应用正则化逻辑回归时:我将数据分成训练,交叉验证和测试集.我想应用正则化并正在选择正则化参数lambda.为此,我尝试不同的lambda值,并在训练集上拟合我的假设的参数theta.然后,我选择lambda的值,它给出了验证集上最低成本函数.为此,我是否应该使用惩罚条件计算验证集的成本函数?

machine-learning regularized logistic-regression

4
推荐指数
1
解决办法
3856
查看次数

在Keras,weight_regularizer和activity_ regularizer之间有什么区别

我理解正则化通常会将k*w ^ 2添加到损失以惩罚大权重.但在Keras中有两个正则化参数 - weight_regularizer和activity_ regularizer.有什么不同?

regularized keras

4
推荐指数
1
解决办法
3184
查看次数