第三十六周学习笔记

第三十六周学习笔记

SuperPoint 复现进度

找到问题

通过以下三个步骤后,上周的问题最终解决

  • 加上batch normalization层,loss从0.28~0.30降低到0.16~0.2
  • 加上learning rate decay后,loss从0.16~0.2降低到0.13以下
  • 更换优化器为Adam后,训练误差可以降低到0.002以下

所以最终问题主要是因为更换了Adam优化器而解决,原来的网络存在优化上的问题而不是曾怀疑的网络capability不足的问题时,也会出现train loss和test loss都很大的情况,即便尝试了多种SGD的learning rate也无法彻底解决

MagicPoint 训练结果

训练过程可视化

使用tf版本的参数,在90000张数据集上训练了90个epoch,并在每个epoch计算模型在测试集上的误差(此处的误差图像有误,训练误差忘记除以1000,测试误差忘记除以4500),最后模型在第17轮的误差最小,为0.03682,训练误差为0.011602,由于分了两次训练所以途中的曲线是两个不同的颜色
在这里插入图片描述
在这里插入图片描述

在训练集和测试集上的表现

左红色是ground truth,右蓝色是预测结果,这里使用了github上pretrained model的网络前端,对预测结果执行盒半径为4的nms并消除边缘上的一些预测结果,得到以下结果

训练集

在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

测试集

在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
大致看来结果表现不错,除了会错误检测离心率大的椭圆的长轴上的端点,在整个训练和测试集上的准确率和召回率等度量下周将给出

Pytorch Linear regression example

训练一个四次多项式的逼近网络,并与example对比

Pipline

  • 生成数据集
  • 训练
  • 评估

结论

用三层隐藏层的全连接网络训练的结果如图
在这里插入图片描述
网络细节

  • 三层隐层全连接
  • SGD,lr=0.001
  • MSE

发现

以下内容不作额外说明,仅仅表达在本次实验数据上的发现

  • label的归一化影响了网络的优化
    起初我没有将label进行归一化,loss往往降低到3~4左右就不降了,且拟合效果很差,这是因为,没有归一化时,由于MSE误差的特点,网络更偏向于将label绝对值大的点更优先考虑,大大影响了样本的均衡性,相当于给绝对值大的样本加上了一个很大的权值,最终无法顺利优化
  • x的归一化可以使更大的学习率能够被使用
    对label进行归一化之后,我也顺便对x进行了归一化,结果发现训练进程变慢,于是使用了更大的学习率,这一点是显然的,因为基于梯度的算法的更新准则是(以SGD为例):
    w − = l r × d x w-=lr\times dx w=lr×dx
    若通过 μ , σ \mu,\sigma μ,σ对x进行归一化,则归一化后的更新实际上是:
    w − = l r × d x σ w-=lr\times\dfrac{dx}{\sigma} w=lr×σdx
    因为往往x的方差大于1,所以这样做相当于使用了更小的学习率,因此归一化后我们可以使用更大的学习率
  • 为了达到类似的训练效果的Adam的学习率常常比SGD小(十分之一左右),这个结论在之前训练MagicPoint也发现了,Adam比单纯的SGD更快,但是Adam达到瓶颈时会出现震荡
    在这里插入图片描述
    adam更新准则如下
    m = beta1*m + (1-bata1)*dx
    v = beta2*v + (1-beta2)*(dx**2)
    x += -learning_rate * m / (np.sqrt(v) + eps)
    
    注意到CS231n笔记中记道“Adagrad有大梯度的权值的学习率将会下降,反之则上升“,而Adam是基于Adagrad的自适应优化方法,所以,猜测可能是因为损失函数比较平滑,梯度较小,因此Adam起到了增加梯度的作用;到了训练的最后阶段,由于函数接近bowl的底端,因此梯度非常小,自适应方法因而增大了学习率从而导致训练的最后阶段出现震荡
  • 更深的模型lr需要更小,这个结论并不严格,训练过程中,实际表现出的情况如下
    在这里插入图片描述
    如图所示,使用同样的学习率,更深的网络会出现更大的摆动,但这也没有完全使得它们最后比浅层网络表现差,比如红色的3隐层网络虽然开始摆动幅度大,最后收敛值与蓝色曲线(2隐层)相当,可以得出的结论是,使用更小的学习率,可以使学习过程更加稳定平滑,从而也更可能收敛,如下图所示
    在这里插入图片描述
  • 如果将神经网络的输入x,转化为[x,x**2,x**3,x**4],然后仅使用一层网络(实际上就是线性拟合),则仅仅需要之前六分之一的轮次即可达到收敛,且精度很高,这说明神经网络有优点也有缺点
    • (+)深层的神经网络可以自动学习到这个先验信息
    • (-)比起直接使用先验信息来说,神经网络学习的还不够好,说明好的先验可以给神经网络带来很大的提升(比如CNN)

问题

  • 自己打包的batch好像无法被forward接受为输入?
    可以,第一维为batch_size即可

本周小结

  • MagicPoint训练,完成
  • learning opencv 50%,完成
  • 阅读论文,未完成

下周任务

  • 评估MagicPoint的效果,生成pseudo ground truth
  • 阅读论文rcnn
  • learning opencv上册75%
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值