第1811章 哥,你什么时候来的?(4 / 5)

编码的迭代优化。你的模型能在合理时间内完成训练吗?”

问题尖锐,但曹鹏预料到了。他保持平静,甚至微笑。

“好问题。我算过。”他走到白板另一侧,快速写下算式,“第一层卷积,输入64×64×3,核6×6×3×16,步长2,输出特征图尺寸30×30×16。乘加次数约:6×6×3×30×30×16 = 1,555,200次。对于Caltech-101的9144张图,一个epoch是142亿次操作。在双Xeon 3.0GHz的服务器上,用高度优化的C++和SSE指令,一个epoch大约需要47分钟。”

数字精确到个位。会议室安静了。

“但这只是朴素实现。”曹鹏继续,“我做了三处优化,一,将卷积转化为矩阵乘法,用Strassen算法加速,二,利用特征图之间的独立性,并行计算。三,稀疏编码阶段,我用了改进的迭代收缩阈值算法,将收敛速度提升了40%。最终,完整训练一轮的时间是28分钟,在可接受范围内。”

维杰盯着算式,手指无意识敲着桌面。几秒后,他抬头,“准确率呢?你说了这么多计算,但分类效果比SIFT+SPM的空间金字塔匹配好多少?”

“Caltech-101,SIFT+SPM的最好结果是78.3%。”曹鹏抽出打印好的图表,贴在白板上,“我的方法,在相同训练、测试划分下,目前是81.7%。错误分析显示,提升主要来自动物类和交通工具类。”

“这些类别视角变化大,手工特征容易失效。”

3.4个百分点的提升,在视觉领域已算显着。艾米丽轻声赞叹,汤姆也坐直了身体,只有捷尔任斯基,小声的吹了个口哨。

但维杰还没放弃,“你的模型参数量多大?过拟合风险呢?”

“参数量,卷积层约1.7万,全连接层约12万,总计不到14万。作为对比,一个三层的全连接神经网络,输入是64×64×3=维,隐层若取500单元,参数量就超过600万。”

曹鹏从容应对,“至于过拟合,我用到了数据增强,平移、旋转、缩放、Dropout,以及在损失函数中加入权重衰减。五折交叉验证的方差在0.8%以内。”

滴水不漏。维杰靠回椅背,终于露出一丝苦笑,“行吧,看来你都考虑到了。”

“不,还有问题。”曹鹏忽然说。所有人都看向他。他指向白板上的一处,“稀疏编码的字典学习,我目前用的是在线梯度下降,但初始化敏感。我试了KSVD和MOD,效果都不稳定。”

“这是我今天想请教大家的:有没有更好的字典初始化策略?或者,我们是否该换一种思路,不学固定的字典,而学一个能生成字典的函数?”

问题抛回给小组。一直沉默的瑞迪教授此时开口,声音里带着赞许,“很棒的思考,曹。字典初始化……让我想到非线性降维中的局部线性嵌入。或许可以将LLE的邻域重构思想迁移过来,用局部样本的线性组合初始化字典原子。”

讨论就此转向更深的技术细节。维杰出用拉普拉斯特征映射约束字典原子的平滑性,艾米丽建议在损失函数中加入判别性项。汤姆贡献了一个CUDA加速的idea。虽然实现细节有待商榷。

曹鹏听着,不时点头,在笔记本上记录。辩论时的锋芒收起了,此刻他是海绵,吸收每一点有用的灵感。当艾米丽提出一个巧妙的正则化方法时,他眼睛一亮,迅速推演了几步,抬头说,“这个可以和我之前想的流形约束结合。”

“如果我们把特征空间视为黎曼流形,你的正则化项其实就是对流形曲率的惩罚。艾米丽,会后能详细聊聊吗?”

继续阅

site stats