cs231n'18: Course Note 6

本文介绍了神经网络中数据预处理的重要性,包括减均值、除标准差、PCA和白化的区别,强调训练数据的均值和方差应用于验证和测试数据。接着讨论权重初始化,解释了为什么不能全设为0,提出了高斯初始化和Kaiming初始化策略。此外,还提及了正则化中的L1/L2范数和dropout技术,以及代价函数的选择,如SVM和softmax在分类问题中的应用。
摘要由CSDN通过智能技术生成

Neural Networks Part 2: Setting up the Data and the Loss

数据预处理

常见的数据预处理方法包括:
1. 减均值
2. 除标准差:只有在feature具有相似的标准和度量方式时才有意义
3. PCA:先减均值,再除标准差,然后找所有eigenvalue,最后将原始数据映射到最大N个eigenvalue定义的空间上
4. 白化:将数据映射到eigenvalue定义的空间内,然后再除以eigenvalue

1常用,2视情况而定,3和4不用。

另外需要注意的是,在进行数据预处理的时候,均值、方差仅仅由training数据得到,然后将此均值、方差应用到val/test数据上。如果对所有数据取均值、方差后,再划分train/val/test集,是 错误的

权重初始化

  1. 不可以全部初始化为0
  2. 0均值高斯随机初始化。这里需要注意的是,对于很深的NN,方差会随着layer的深入而减小,直到均值为0,方差也为0,这样造成的问题是backprop回来的grads太小,造成梯度消失。
  3. 经过linear function后输出方差的大小正比于输入数据的个数,因此如果输入数据,即mini-batch个数很多的话,输出方差会很大,常用方法是除以 n n 。这里要注意的是与上一点的区别,这里是为了保证,经过linear function后的输出方差大小近似,而不是正比于输入的数据个数。

目前常用的方法是Kaiming法,将随机方差设为 2.0/n 2.0 / n ,即:

w = np.random.randn(n) * sqrt(2.0/n)
  1. 稀疏初始化:仅将很少数目的权重做高斯初始化,其余均设为0
  2. bias全部初始化为0
  3. batch normalization:作业里会细讲,这里先略过

正则化

  1. L1/L2 regularization:前面已经提过两次了:L1是sparse,L2是spread

    L2: encouraging the network to use all of its inputs a little rather than some of its inputs a lot.


L1: leads the weight vectors to become sparse during optimization (i.e. very close to exactly zero).
  1. Dropout:作业里细讲
  2. 人为的引入stochasticity,例如dropout,data augmentation。

常用的方法是L2 + dropout。

代价函数

不同的问题有不同的代价函数,对于classfication而言,常用的代价函数是SVM和softmax。其他问题的代价函数也不是几句话就能总结清楚的,以后用到再说。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值