神经网络笔记

      斯坦福CS231n课程确实很好,学了有两三遍,每次都有不一样的收获,理解的也更深刻。这里把自己觉得重要的东西记录下来,以加深印象,同时便于查阅。CS211n简书笔记链接:https://www.jianshu.com/p/182baeb82c71

神经网络笔记1(上)

      线性分类:评分函数s=Wx  W:[10x3072],x:[3072x1]

      神经网络:评分函数s=W2max(0,W1x)  W1:[100x3072],W1将图像转化为100维的过渡向量,max(0,-)作用到每个元素,有多种选择。W2:[10x100],得到10个数字,可以解释为分类评分。W1,W2通过随机梯度下降学习到,反向传播中通过链式法则求导计算得出。

      三层神经网络类比看做s=W3max(0,W2max(0,W1x)),其中W1,W2,W3是要学习的参数,隐层尺寸为超参数。

      常用激活函数:Tanh:2σ(2x)-1(简单放大的sigmoid函数);ReLU:f(x)=max(0,x)。ReLU激活函数的优点是梯度下降收敛快,前两者复杂度高,缺点是如果学习率设置太高,网络中40%的神经元都会死掉,梯度变为0,因此派生了Leky ReLU等变形来解决此问题。

      正则化损失从生物学角度可以看做逐渐遗忘,因为它的效果是让所有突触权重W在参数更新过程中逐渐想着0变化。

      一个单独的神经元可以实现一个二分类器,如二分类softmax或SVM分类器。

神经网络笔记1(下)

      将神经网络算法以神经元的形式图形化,N层神经网络,没有把输入层算入。输出层一般不会有激活函数,因为输出层大多用于表示分类评分值,是任意的实数,或者某种实数的目标数(如在回归中)。

      网络尺寸:神经元个数(输入层不算),参数个数(W,b)。

      一个层的所有连接强度可以存在一个单独的矩阵中。3层神经网络比2层好,而做到4,5,6层帮助较小,但卷积神经网络不同。


    过拟合(overfiting)是网络对数据中的噪声有很强的拟合能力,而没有重视数据间(假设)的潜在基本关系。

      看起来如果数据不是足够复杂,则似乎小一点的网络更好,因为可以防止过拟合。然而并非如此,防止神经网络的过拟合有很多方法(L2正则化,dropout和输入噪音等),比减少网络神经元好得多,同时网络梯度下降难以训练。尽可能使用大网络,然后使用正则化技巧来控制过拟合。

神经网络笔记2

      神经元模型在计算内积后进行线性激活函数计算,将这些神经元组成各个层,这些做法共同定义了评分函数(score function)的新形式。

      数据预处理包括均值减法,归一化,PCA和白花(whitening),最后一项卷积神经网络很少采用。

      任何预处理策略(如数据均值)都只能在训练集数据上进行,应先分成训练/验证/测试集,只是从训练集中求图片均值,然后各个集中的图像在减去这个平均值。

      权重初始化:不可以做全零初始化,因为如果权重被初始化为同样的值,神经元将失去不对称的源头。

      正则化(regularization)(对模型复杂度的某种惩罚):有不少方法是通过控制神经网络的容量来防止其过拟合。L2正则化是最常见的正则化方法,其通过惩罚目标函数中所有参数的平方实现。目标函数加一个1/2λW²,这关于W梯度就是λW(λ为正则化强度)。使网络倾向于使用所有特征,所有权重都以W+=-lambda*W向着0线性下降。

      L1正则化向目标函数增加一个λ|W|,同时L1和L2也可以组合使用:λ1|W|+λ2|W²|。L1正则化会让权重向量在最优化过程中变得稀疏(即非常接近0)。而L2等传统方法可以得到大量很小的系数(0和非0小数有本质区别,L1更容易做截断来获得大量为0的系数)。

      一般来说,L2正则化都会比L1正则化效果更好。

      最大范式约束(maxnorm constraints):给每个神经元中权重向量的量级设定上限,并使用投影梯度下降来确保这一约束。

      随机失活(dropout):让神经元以超参数p的概率被激活或者被置为0,predict函数即测试过程中不进行随机失活,但对于隐层输出都要乘以p。实际更倾向于使用反向随机失活(inverted dropout)预测代码保持不变。通常在使用L2正则化的同时在所有层后面使用随机失活。

      损失函数:数据损失:

      其中N是训练集数据样本函数,输出层激活函数简写为:f=f(xi;W)。对于分类问题,SVM分类器损失公式为:


      softmax分类器采用交叉熵损失,公式为:


      属性分类,上面提到损失公式前提是每个样本只有一个正确标签yi,若yi是一个二值向量,每个样本可能有,也可能没有某个属性,而且属性之间并不相互排斥。在这种情况下,一个明智的方法是为每个属性创建一个独立的二分类的分类器。例如,针对每个分类的二分类器会采用下面的公式:


      上式中,求和是对所有分类jy_{ij}的值为1或者-1,具体根据第i个样本是否被第j个属性打标签而定,当该类别被正确预测并展示的时候,分值向量f_j为正,其余情况为负。

      回归问题,预测实数值的问题,如房价,计算预测值和真实值之间的损失,L2范式公式为:


      L1范式公式为:


      面对回归问题,尽量把输出变成二分类,然后对其分类,变成一个分类问题,若分类不适用,则使用L2损失,L2损失非常脆弱,不应在加dropout。

神经网络笔记3(上)

      静态部分:创建网络连接,数据和损失函数。

      动态部分:学习参数和搜索最优超参数的过程。

      梯度检查:把解析梯度和数值梯度进行比较。

      学习之前,合理性检查的提示与技巧:寻找特定情况的正确损失值;对小数据子集过拟合(先把正则化强度设为0),确保能得到0损失值。

      检查整个学习过程:周期(epochs),该单位衡量了在训练中每个样本数据都被观察过次数的期望(一个周期意味着每个样本都被观察过了一次);迭代次数(iterations)与数据的批尺寸(bitchsize)有关。

      训练期间第一个要跟踪损失值,第二个重要参数为验证集和训练集的准确率(训练分类器时),最后跟踪权重中更新值的数量和全部数量直接的比例(注意是更新的,而不是原始梯度,比例一般在1e-3左右)。

      遇到过拟合时,应增大正则化强度(更强的L2权重惩罚,更多的随机失活等)或收集更多的数据。

      对图像数据,第一层特征可视化(特征平滑,干净且种类多时较好)。

神经网络笔记3(下)(扩展)

      随机梯度下降的各种更新方法:普通更新,动量(momentum)更新。

      学习率退火:让学习率随着时间退火是有帮助的。

      超参数调优:神经网络常用的设置有:初始学习率;学习率衰减方式(例如一个衰减常数);正则化强度(L2惩罚,随机失活强度)。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值