Some Tips/Tricks in Machine Learning

这篇不算是基础系列,只是在网上看见别人写的,感觉很不错,翻译的别人的英文 原文链接: 原文

数据集扩充

对于深度的NN来说,数据集过小会很容易造成Overfitting,扩充数据集的方法通常有以下几种:

horizontally flipping random crops color jittering

预处理(normalization)

常见的有一下三种:

减去均值 zscore 白化(whittening)

效果逐步增强

减去均值

 >> x -= np..mean(X, axis = 0) # zero-center

zscore

就是减去均值,除以标准差

>> X -= np.mean(X, axis = 0) # zero-center
>> X /= np.std(X, axis = 0) # normalize

白化(whitening)

两种白化的操作:

  1. PCA白化
  2. ZCA白化

首先,需要求出协方差矩阵和方向向量(u1,u2),将原始的数据点使用u1u2来表示,得到新的坐标(投影)

PCA whitening

pca白化是指对上面的pca的新坐标X’,每一维的特征做一个标准差归一化处理

或者是:

ZCA whitening

ZCA白化是在PCA白化的基础上,又进行处理的一个操作。具体的实现是把上面PCA白化的结果,又变换到原来坐标系下的坐标:

权重的初始化

初始化为全0,是错误的做法

一般采用两种方法:

Small Random Numbers

初始化为随机的接近0的小数

>> 0.01 * N(0,1)    #N(0,1)表示均值为0的标准高斯分布

Calibrating the Variances

方差(variance)为2/n

>> w = np.random.randn(n) * sqrt(2.0/n) # current recommendation

Training

Filter size

训练图片的大小是2的倍数的时候,比如32,64,224,512等

it is important to employ a small filter (e.g., 3*3) and small strides (e.g., 1) with zeros-padding, which not only reduces the number of parameters, but improves the accuracy rates of the whole deep network. Meanwhile, a special case mentioned above, i.e., 3*3 filters with stride 1, could preserve the spatial size of images/feature maps. For the pooling layers, the common used pooling size is of 2*2.

Learning rate

推荐使用mini-batch的方式进行训练,初始的lr典型为0.1 对于validation set来说,没什么作用的话,可以将lr/2或者lr/5来试试

Fine-tune on pre-trained models

推荐使用VGG的网络

Activation Functions

  • sigmoid很少用,不推荐(kill gradients, not zero-centered)
  • tanhsigmoid要好(is zero-centered)
  • ReLU系列: ReLU,PReLU,Leaky ReLU,RReLU,中推荐使用PReLU and RReLU

Regularizations

L1正则

L2正则

l2正则一般情况下优于l1正则

Dropout

0.5的概率值是典型的做法

数据倾斜

常用的解决方法:

sampling techniques

1. duplicating instances(maybe special crops processing) from the minority classes until a balanced distribution is reached (oversampling) 2. removing instances from over-represented classes (undersampling) 3. it is suggested that a combination is the best solution for extremely imbalanced distributions 4. generating new data in minority classes based on the current data

cost sensitive techniques

a higher penalty can be given to the network when it misclassifies the minority classes during training

One-class learning

  1. only provides training data from a single class(每一类去训练,不停的fine-tuning)
  2. firstly fine-tune on the classes which have a large number of training samples (images/crops), and secondly, continue to fine-tune but on the classes with limited number samples

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术小站

吴恩达深度学习 course4 卷积神经网络

传统的神经网络所存在的问题:图片的输入维度比较大,具体如下图所示,这就造成了权重w的维度比较大,那么他所占用的内存也会比较大,计算w的计算量也会很大

1443
来自专栏机器学习算法与Python学习

机器学习(2)之过拟合与欠拟合

关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第二 【Python】:排名第三 【算法】:排名第四 过拟合与欠拟合 上一篇(机器学习(1...

2765
来自专栏人工智能

Coursera吴恩达《卷积神经网络》课程笔记(1)-卷积神经网络基础

推荐阅读时间:8min~15min 主要内容:卷积神经网络 《Convolutional Neural Networks》是Andrw Ng深度学习专项课程中的...

1929
来自专栏大数据挖掘DT机器学习

统计学习方法概论

1.统计学习 统计学习的对象是数据,它从数据出发,提取数据的特征,抽象出数据的模型,发现数据中的知识,又回到对数据的分析与预测中去。统计学习...

2734
来自专栏SnailTyan

Single Shot MultiBox Detector论文翻译——中文版

SSD: Single Shot MultiBox Detector 摘要 我们提出了一种使用单个深度神经网络来检测图像中的目标的方法。我们的方法命名为SSD,...

2500
来自专栏YoungGy

判别模型和生成模型

监督学习方法分为生成方法和判别方法,学习到的模型分为生成模型和判别模型。 例子 对于简单的二分类问题 判别模型:学到一个好的分界线,直接把两类区分开 生成模型:...

21410
来自专栏小詹同学

一个AI大佬的学习笔记-- 卷积神经网络基础

这是一篇来自AI大佬关于卷积神经网络的学习笔记,转载以获得授权!在这里强势推荐一下小伙伴的公众号【AI有道】,是小詹觉得最用心的几个公众号之一!二维码见文末,要...

751
来自专栏SnailTyan

Single Shot MultiBox Detector论文翻译——中英文对照

SSD: Single Shot MultiBox Detector Abstract We present a method for detecting ob...

2120
来自专栏机器学习和数学

[深度学习] AlexNet,GoogLeNet,VGG,ResNet简化版

总结了一下这几个网络的比较重要的点,像这些经典的网络,面试的时候,估计会经常问到,怎么用自己的话说出来?不知道大家想过没有。 今天有空就总结了一下,尽量简单和通...

4699
来自专栏机器学习算法全栈工程师

朴素贝叶斯算法详解(1)

1. 引言   朴素贝叶斯算法(Naive Bayes)是机器学习中常见的基本算法之一,主要用来做分类任务的。它是基于贝叶斯定理与条件独立性假设的分类方法。...

3488

扫码关注云+社区