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,但是结果差别依旧很大的原因。
相关文章推荐
- 20170304#cs231n#6.Neural Networks Part 2: Setting up the Data and the Loss
- CS231n Neural Networks Part 1: Setting up the Architecture
- CS231n Neural Networks Part 3: Learning and Evaluation Babysitting the learning process
- Neural Networks Part 1:Setting up the Architecture
- Setting up and using the Rational Data Architect - Rational ClearCase integration
- [Clojure] Data Collection and Data Analysis on the music of www.xiami.com - Part 1
- SCSF Business Modules: Start Up And The ControlledWorkItem (Introduction To CAB/SCSF Part 20)
- iOS-Best Practices for Setting Up Your Local Device as a Peripheral(API Reference) the seventh part
- REST web services with Python, MongoDB, and Spatial data in the Cloud - Part 2
- Setting the background color and background alpha on a Flex PopUpButton control’s pop up menu
- 【CS231n笔记】04 Backpropagation and Neural Networks part 1
- CS231n Neural Networks Part 3: Learning and Evaluation Gradient Checks
- [Android]:Setting up a Library Project and how to use the library (工程引用和dll引用)
- (Visual Studio)Part 4: Setting up Code for the Debugger
- [Clojure] Data Collection and Data Analysis on the music of www.xiami.com - Part 5
- [Clojure] Data Collection and Data Analysis on the music of www.xiami.com - Part 3
- Setting Up the Development Environment for SharePoint 2010 on Windows Vista, Windows 7, and Windows
- (Visual Studio)Part 2: Setting up the IDESetting up the IDE for the debugger
- CS231nNeural Networks Part 1: Setting up the Architecture
- [Clojure] Data Collection and Data Analysis on the music of www.xiami.com - Part 2