CS231n笔记5-Neural Networks Part 2: Setting up the Data and the Loss

  • Mean subtraction 是一般会做的,相当于把整个点云平移到原点附近
  • Normalization 仅当不同的Feature是不同的Scale时候更加必要,但是从今天白天对雷达多普勒响应的分类中看,SVM需要Normalize。
  • PCA 方法常常用来降维,np.dot(X, X.T) 就是矩阵X的covariance matrix。这个矩阵一定是对称的、半正定的,因此可以对其应用奇异值分解。分解后得到了协方差矩阵的特征向量(并且np.linalg.svd所得到的特征向量已经按照对应的特征值由大到小的顺序拍好),所以原来的特征空间可以投影到任意比Feature维度低的空间里。
  • variance 小的维度是噪声更大的维度。
  • Whitening 就是把所有维度按照特征值方向投影后,再把每个维度处以该维度的特征值。
  • PCA和Whitening在DL里基本不需要,但是Normalization和centering很重要。
  • 将PCA和Whitening转换回去?可以通过乘Transormation Matrix的转置
  • 所有的预处理都要基于训练集的数据,而不是测试集的数据。比如:mean-subtraction 要减去训练集的mean,pca要拿训练集来计算特征向量
  • 不能将权值初始化为0!!否则每一个Neuron的输出就成了一样的,反向传播时候函数的更新也变成了一样的。但是实际上神经元是不对称的。这叫做Asymmetry breaking
  • 可以将权值初始化为标准正态分布与一个很小的数的乘积,但是特别小的初始化值会令权重更新时候的值也变小,在深度学习时候导致收敛变慢。
  • 初始化为标准正太分布后,每个neuron是一个M x N大小的矩阵,共MN个元素,每个元素都满足标准正态分布,但该neuron的输出会因此而拥有更大标准差的分布,所以我们在初始化neuron的时候要根据输入的数量改变初始化正态分布的标准差。主要的原因是因为输入和输出之间的相乘与相加。
  • 三种形式的初始化:w = np.random.randn(n) / sqrt(n)w = np.random.rand(n) * 1 / (n1 + n2) w = np.random.randn(n) * sqrt(2.0/n)。第三种是为ReLU专门设置的。
  • bias通常都直接初始化为0
  • Batch Normalization 可以有效地缓解不良的初始化,而且batch normalization 是一个可微分的过程。这个过程在神经元之后,Non-linearity 之前
  • 从L2-norm regularization的求导可以得出结论:权值在训练过程中缓慢趋近于0
  • L1 regularization 是显性的特征值挑选
  • 在测试的时候不用Dropout但是要把所有的输出乘以Dropout的系数。因为之前有Dropout的时候,实际上每一层的Activation信号增强了,否则难以达到与没有Dropout时候相同的信号强度
  • 但这个放缩通常被加在training中,除以probability
  • Cross-entropy 在类别标签非常多的时候不好用,可以用一棵树来实现层级式的判断
  • 如果每个样本的label不是一个单一的数字,而是一个向量,我们可以把损失函数写成两种形式,一种是 m a x ( 1 − δ ∗ l a b e l ) max(1 - \delta * label) max(1δlabel),另一种是把问题看成回归问题,将scores向量回归到label向量。
  • 尽量不要构建L2-norm损失函数,因为在差距较大的时候会得到非常大的更新值,而且这个时候要求具体值的精确度,而不像softmax——只要求数量级之间的关系对了就行。
  • 在遇到回归问题时候,先考虑能不能离散化为分类问题。

你可能感兴趣的:(深度学习)