机器学习笔记 - 深度学习技巧备忘清单

一、数据处理

1、数据增强

        深度学习模型通常需要大量数据才能正确训练。 使用数据增强技术从现有数据中获取更多数据通常很有用。 主要的总结在下表中。 更准确地说,给定以下输入图像,以下是我们可以应用的技术:

机器学习笔记 - 深度学习技巧备忘清单_第1张图片

2、批量标准化

        它是超参数\gamma, \beta的一个步骤,用于规范化批 x_i。 通过记下 mu_B, sigma_B^2 我们想要对批次进行校正的均值和方差,如下所示:

        x_i\longleftarrow\gamma\frac{x_i-\mu_B}{\sqrt{\sigma_B^2+\epsilon}}+\beta

        它通常在完全连接/卷积层之后和非线性层之前完成,旨在允许更高的学习率并减少对初始化的依赖。

二、训练神经网络

1、定义

        Epoch:在训练模型的上下文中,epoch 是一个术语,用于指代模型看到整个训练集以更新其权重的一次迭代。

        小批量梯度下降:在训练阶段,由于计算复杂性或噪声问题,更新权重通常不是一次基于整个训练集或一个数据点。 相反,更新步骤是在小批量上完成的,其中一批中的数据点数量是我们可以调整的超参数。

        损失函数:为了量化给定模型的执行情况,损失函数L通常用于评估模型输出z正确预测实际输出y的程度。

        交叉熵损失:在神经网络的二元分类上下文中,交叉熵损失L(z,y)是常用的,定义如下:

        L(z,y)=-\Big[y\log(z)+(1-y)\log(1-z)\Big]

2、寻找最佳权重

        反向传播:反向传播是一种通过考虑实际输出和期望输出来更新神经网络中权重的方法。 使用链式法则计算每个权重 w 的导数。

机器学习笔记 - 深度学习技巧备忘清单_第2张图片

        使用此方法,每个权重都使用以下规则更新:

        w\longleftarrow w-\alpha\frac{\partial L(z,y)}{\partial w}

        更新权重:在神经网络中,权重更新如下:

        步骤 1:获取一批训练数据并执行前向传播以计算损失。

        步骤 2:反向传播损失以获得损失相对于每个权重的梯度。

        第 3 步:使用梯度更新网络的权重。

机器学习笔记 - 深度学习技巧备忘清单_第3张图片

 三、参数调优

1、权重初始化

        Xavier initialization:Xavier 初始化不是以纯粹随机的方式初始化权重,而是能够使初始权重考虑到体系结构独有的特征。

        迁移学习:训练深度学习模型需要大量数据,更重要的是需要大量时间。 在需要数天/数周训练的庞大数据集上利用预训练的权重并将其用于我们的用例通常很有用。 根据我们手头有多少数据,以下是利用它的不同方法:

机器学习笔记 - 深度学习技巧备忘清单_第4张图片

 2、优化收敛

        学习率:学习率,通常记为 \alpha 或有时为 \eta,表示权重更新的速度。 它可以固定或自适应地改变。 目前实践中比较好的方法叫做 Adam,这是一种适应学习率的方法。

        自适应学习率:训练模型时让学习率变化,可以减少训练时间,提高数值最优解。 虽然 Adam 优化器是最常用的技术,但其他技术也很有用。 它们总结在下表中:

Method Explanation Update of w Update of b
Momentum Dampens oscillations
Improvement to SGD
2 parameters to tune
w-\alpha v_{dw} b-\alpha v_{db}
RMSprop Root Mean Square propagation
Speeds up learning algorithm by controlling oscillations
w-\alpha\frac{dw}{\sqrt{s_{dw}}} b\longleftarrow b-\alpha\frac{db}{\sqrt{s_{db}}}
Adam Adaptive Moment estimation
Most popular method
4 parameters to tune
w-\alpha\frac{v_{dw}}{\sqrt{s_{dw}}+\epsilon} b\longleftarrow b-\alpha\frac{v_{db}}{\sqrt{s_{db}}+\epsilon}

四、正则化

        Dropout:Dropout 是神经网络中使用的一种技术,通过丢弃概率p > 0的神经元来防止过度拟合训练数据。 它迫使模型避免过度依赖特定的特征集。

机器学习笔记 - 深度学习技巧备忘清单_第5张图片

        权重正则化:为了确保权重不会太大并且模型不会过度拟合训练集,通常对模型权重执行正则化技术。 主要的总结如下表:

LASSO Ridge Elastic Net
• Shrinks coefficients to 0
• Good for variable selection
Makes coefficients smaller Tradeoff between variable selection and small coefficients

机器学习笔记 - 深度学习技巧备忘清单_第6张图片

机器学习笔记 - 深度学习技巧备忘清单_第7张图片

机器学习笔记 - 深度学习技巧备忘清单_第8张图片

...+\lambda||\theta||_1$ $\lambda\in\mathbb{R} ...+\lambda||\theta||_2^2$ $\lambda\in\mathbb{R} ...+\lambda\Big[(1-\alpha)||\theta||_1+\alpha||\theta||_2^2\Big]$ $\lambda\in\mathbb{R},\alpha\in[0,1]

        提前停止:一旦验证损失达到平稳或开始增加,这种正则化技术就会停止训练过程。

机器学习笔记 - 深度学习技巧备忘清单_第9张图片

五、较好的实践

        Overfitting small batch:在调试模型时,进行快速测试以查看模型本身的架构是否存在任何重大问题通常很有用。 特别是,为了确保模型可以正确训练,在网络内部传递一个 mini-batch 以查看它是否可以过拟合。 如果不能,则意味着模型要么太复杂,要么不够复杂,甚至无法在小批量上过拟合,更不用说正常大小的训练集了。

        Gradient checking:梯度检查是在执行神经网络的反向传播过程中使用的一种方法。 它将分析梯度的值与给定点的数值梯度进行比较,并起到正确性检查的作用。

Type Numerical gradient Analytical gradient
Formula \frac{df}{dx}(x) \approx \frac{f(x+h) - f(x-h)}{2h} \frac{df}{dx}(x) = f'(x)
Comments • Expensive; loss has to be computed two times per dimension
• Used to verify correctness of analytical implementation
• Trade-off in choosing $h$ not too small (numerical instability) nor too large (poor gradient approximation)
• 'Exact' result
• Direct computation
• Used in the final implementation

你可能感兴趣的:(机器学习,机器学习,深度学习,参数调优,数据增强,权重初始化)