(LXTML笔记)Neural Network

神经网络的话,向前计算是容易地,基本上就是矩阵的乘法加上一点点激活函数的变换,所以这里不做笔记。

Backprop on NNet

下面对学习过程做一点笔记,backprop实际上就是偏导的链式法则
这里写图片描述

我们考虑的是平方误差,即
这里写图片描述

对于输出层,如下图绿框所示,我们对 en e n 关于第 L L 层的权重做偏导
这里写图片描述

对于中间的隐含层,如红色框所示做偏导,有暂时不知道ensj(l)是什么,暂时设为 δ(l)j δ j ( l )

下面再来处理 δ(l)j δ j ( l ) ,如下图所示
这里写图片描述

我们发现 δ(l)j δ j ( l ) 需要由所有的 δ(l+1)j δ j ( l + 1 ) 得到,这样的话,结合GD,我们可以给出NN的权重更新算法
这里写图片描述
更新公式即

w(l)ij=w(l)ijηenw(l)ij=w(l)ijηx(l1)iδ(l)j, w i j ( l ) = w i j ( l ) − η ∂ e n ∂ w i j ( l ) = w i j ( l ) − η x i ( l − 1 ) δ j ( l ) ,

有时候不能让权重 Wij W i j 过大,这是因为这会导致tanh函数的结果基本上集中在1附近,所以我们需要对 Ein E i n
这里写图片描述

做点正则化,比如容易想到的是 (w(l)ij)2 ∑ ( w i j ( l ) ) 2 ,不过似乎不是太好效果,往往使用下面这个标准化后的正则化条件。
这里写图片描述

autoencoder预训练

与PLA一样,如果一开始给定了合适的初值的话,收敛也好性能也好时间也好都有可能有较好的提升,所以我们也可以对NN进行预训练
这里写图片描述
即,首先仅仅依赖相近的两层,先将其权重预处理好,而不是random几个参数,
这里写图片描述
基本思想是:

weight就代表了把上一层的输出的信息做一个转换,亦或者说做一个编码,然后传输给下一层。如果我们能够让下一层接收到编码之后的信息所代表的信息是和上一层是基本一样的话,我们认为这就是好的weight

即如下图所示,我们希望能训练处 g(x)=x g ( x ) = x 一个不动点变换,这个思想还是蛮新颖的,隐含层保留了特征信息,那么由这些特征信息理论上也应该容易还原原来的信息。
这里写图片描述

可以采用平方误差,而输入则是 {(xn,xn)} { ( x n , x n ) } 这样的形式,有时候如果要求更强一些,可以要求 W1ij=W2ji W i j 1 = W j i 2 ,即解码器和编码器的权重是一样的,不过如何才能设置这个限制呢?还没做思考
这里写图片描述

有的时候为了让权重更加strong,我们可以对数据 {(xn,xn)} { ( x n , x n ) } 加入一些噪声,比如令 (xn^=xn+noise) ( x n ^ = x n + n o i s e ) ,这样训练的话鲁棒性更好,这也属于一种regularization.
这里写图片描述

课程后面对将所有激活函数换成 h(x)=x h ( x ) = x 之后的情况进行了分析,直接变成了一个数值分析或者高等代数的习题2333(由此可以导出类似PCA的结果),这里不做赘述。可以查看这里

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值