您的位置:首页 > 其它

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

2016-08-21 23:35 567 查看

Data preprocessing

PCA的前几个主要成分是低频的,全局性的。

pitfall:在subtraction mean的时候,是要计算training data的mean,而不是所有数据的mean

PCA可能的一个问题,是在wighten的过程中,可能会放大其noise,比如说某一个维度本来就很小,而且std也很小,那么wighten之后,其实就会扩大这一维度的scale。

Weight init

Pitfall:肯定不能全0初始化,会跪。你见过黑客帝国里的一群史密斯么,就是那样儿的。

初始化可以是一个方差很小的全局初始化。

现在比较常见的就是
w = np.random.randn(n) * sqrt(2/n)
,但是没想明白,为什么需要2.。。

BN这种方法在linear之后,non-linear之前,似乎相当于层间的预处理的步骤。

Regularization

正则化的方法避免过拟合。L2、L1比较常见了。

MaxNorm会限制权重向量的长度。

dropout使用inverted dropout,也就是在逐层计算的时候就
/p


一般的dropout是在训练的时候按照p来进行计算,但是这样就需要在test的时候进行这样的操作,耽误时间。。。所以在训练的时候就将其进行改变,训练的时候就通过
/p
的方法假装网络是全乎的。

几个附加的想法:

1.为啥bias不进行正则化。正则化的目的,是学习特征的全局分布,在这样的情况下,我认为要是都减少了,那不就是等比例了。。。还有什么意义么?而且其实我觉得影响不大。

做个实验验证一下bias正则化和不正则化的影响

2.dropout的bp时候,如果对于某些返回是0的话,那么就是
delta_pre = thata' * delta_post
,然后
delta_pre(~sel,:) = 0


3.dropout建议在classification而不是regression上使用,因为这两个目标是不同的。分类是为了经过多层之后,数据在空间中变得容易进行划分。而回归是根据数据在空间中的分布和其value来计算哪些维度对于最后结果的影响,或者说是按照维度进行影响性的排序。

两个的核心差别在于,label不同,可以根据不同的feature组合进行区分,因为每一个feature都具有一定的区分性,而且关键是,相互独立。这意味着,这意味着!!!classification关注的是class之间的空隙。来几个feature都不怕,无非是低维度的映射,不管什么类别,反正在这个维度上就是这么分。

但是regression关注的不是空隙,而是数据本身!!!你降一个维度再进行回归,和原来能一样么!两个将军分战功和一个将军一个小兵分战功能一样么!

dropout相当于,提取一个子空间,子空间,分类问题照样分。但是回归问题就相当于提取了部分参数让你回归,这个回归完了,换一波再回归。老虎不在,猴子当大王,这个每一个forward都换一个角色,在不同的model扮演兔子,牦牛,狮子的角色。。。这个谁不精分!

所以说dropout还是用在classification比较好。

4.softmax多分类

softmax是单分类的一个求概率分布的方法,有一个问题比如说那如果最后的向量中不仅仅有一个激活的点呢?那么其实就是相当于是n个binary-softmax了。其实计算起来也不是很难哈。

5.l2不稳定

其实我认为最关键的原因就是可能两个东西真的很像,但是还是要强行分开,这个在普通情况下我觉得是很难的,因为都是一个order。但是softmax能够避免这个问题我觉得因为即使两个东西难以分开,假设a和b的差值delta为constant,但是exp之后,a和b在不同的scale上,概率分布完全不同,也就导致即使两个东西可能在同一个level上相当近似,但是如果协同增大,那么在exp的尺度上,能够具有很强的区分性。这也就意味着,即使最后的结果都几乎是同一个order,但是结果差别依旧很大的原因。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  机器学习
相关文章推荐