“近似算法的误差界是多少?”曹鹏追问。
会议室安静了几秒。瑞迪抬起头,目光在两人之间扫过,嘴角似乎微微上扬了一毫米—,这是他对学生间高质量辩论的认可。
“这……我们还在分析。”维杰最终承认。
“那么在你的实验结果中,至少应该标注‘使用近似算法’的说明。”曹鹏的语气没有得意,只是陈述事实,“否则对比是不公平的。”
维杰点头坐下时,曹鹏对他眨了眨眼,这是两人之间的默契,辩论归辩论,不影响午饭时一起吐槽系里新出台的服务器使用规定。
瑞迪教授朝曹鹏点头,“上周我们讨论了SIFT特征在动态场景中的漂移问题。曹鹏提出了一个新框架的初步想法。今天,请他详细展开。”
曹鹏起身,在靠近白板的位置坐下,他没用投影,有些思路,手写更能体现思考的脉络。
“谢谢教授。”他转向小组,目光扫过每个人的脸。
维杰抱着手臂,眉头微皱,艾米丽已打开笔记本,二年级博士生汤姆眼神放空,大概还没从昨晚的Dota战中回神,而博士后捷尔任斯基,则冲曹鹏眨眨眼。
“我们现有的图像分类流程:特征提取、编码、池化、分类器。”曹鹏画了四个方框,“问题在于,手工设计的特征,比如SIFT。。。。在类别增多、视角变化剧烈时,区分度下降。而编码阶段用的K-means或稀疏编码,本质是假设特征服从单一分布。”
说到这儿,他等等,看是否有人提问。维杰动了动嘴唇,但最终选择放弃。
“我的提议是,放弃手工特征,直接从像素学起。”曹鹏在“特征提取”框上打了个叉,“但不是用传统的全连接神经网络,参数量太大,且忽略图像的空间局部性。我设计了一个多尺度稀疏自编码器结构。”
小主,这个章节后面还有哦,请点击下一页继续阅读,后面更精彩!
他又在白板上画出三层结构,第一层是小感受野的卷积核,提取边缘纹理,第二层卷积核变大,整合局部结构,第三层是全连接层,但施加L1稀疏约束。每一层都用无监督预训练初始化,再用反向传播微调。
“关键在这里,”曹鹏在第三层旁写下公式,“我们不在像素空间做稀疏,而是在特征空间做。将每张图的特征激活视为一个信号,用字典学习找到过完备基,然后求解稀疏系数。”
“这样,分类问题转化为,在字典空间中找到最具判别力的稀疏模式。”
说着,写下一串数学符号。然后转向实际问题,“我在Caltech101数据集上试了初步版本。64×64的图,三层结构,第一层用6×6卷积核,步长2,得到16个特征图;第二层……”
“等等。”维杰终于举手,语气带着质疑,“曹,你算过时间复杂度吗?光是第一层卷积,假设输入是64×64的RGB图,6×6核,步长2,输出16个特征图,一次前向传播就需要多少乘加操作?这还没算上稀疏编码的迭代优化。你的模型能在合理时间内完成训练吗?”
问题尖锐,但曹鹏预料到了。他保持平静,甚至微笑。
“好问题。我算过。”他走到白板另一侧,快速写下算式,“第一层卷积,输入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亿次操作。在双Xeon3。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%以内。”