第1811章 哥,你什么时候来的? (2 / 2)
要看书www.1kanshu.net
“计算复杂度方面,”维杰翻动着幻灯片,试图找到相应的分析页面,“理论上是O(n2),但实际实现中我们采用了近似算法……”
“近似算法的误差界是多少?”曹鹏追问。
会议室安静了几秒。瑞迪抬起头,目光在两人之间扫过,嘴角似乎微微上扬了一毫米—,这是他对学生间高质量辩论的认可。
“这……我们还在分析。”维杰最终承认。
“那么在你的实验结果中,至少应该标注‘使用近似算法’的说明。”曹鹏的语气没有得意,只是陈述事实,“否则对比是不公平的。”
维杰点头坐下时,曹鹏对他眨了眨眼,这是两人之间的默契,辩论归辩论,不影响午饭时一起吐槽系里新出台的服务器使用规定。
瑞迪教授朝曹鹏点头,“上周我们讨论了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亿次操作。在双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。虽然实现细节有待商榷。
曹鹏听着,不时点头,在笔记本上记录。辩论时的锋芒收起了,此刻他是海绵,吸收每一点有用的灵感。当艾米丽提出一个巧妙的正则化方法时,他眼睛一亮,迅速推演了几步,抬头说,“这个可以和我之前想的流形约束结合。”
“如果我们把特征空间视为黎曼流形,你的正则化项其实就是对流形曲率的惩罚。艾米丽,会后能详细聊聊吗?”
这章没有结束,请点击下一页继续阅读!
艾米丽笑着点头。
维杰插话,“曹,你总能把不同领域的东西缝在一起。上次是稀疏编码和视觉注意力,这次是流形几何。你的脑子怎么长的?”
“多读书。”曹鹏认真回答,“《微分几何基础》和《压缩感知理论》一起读,有时候会在凌晨三点产生奇怪的联想。”
众人都笑了。
瑞迪教授看着弟子们,眼神欣慰。他喜欢这种氛围,严谨但不死板,竞争却又合作。
曹鹏尤其让他惊喜,不仅天赋惊人,更难得的是懂得如何将锋芒包裹在谦逊之下,在扞卫自己观点时不伤及同僚自尊,在吸收他人意见时不忘真诚致谢。
会议在十一点半结束。曹鹏被围住,回答关于代码实现的问题。他耐心解释,答应晚点把优化后的卷积核计算代码分享给大家。
出门时,维杰走到他身边,拍拍他肩,“今天又被你碾压了,曹。不过那个字典初始化的问题,我昨晚其实有点想法……”
“一起吃午饭?我想听听。”曹鹏自然而然地接话,仿佛刚才的激烈交锋从未发生。
两人并肩走向食堂。
窗外,匹兹堡的天空湛蓝如洗,几朵白云停在卡内基梅隆大学红色屋顶的上空,像在等待什么。
曹鹏想着下午要跑的对比实验,脑中已开始规划代码结构。但此刻,他更愿意听维杰说话。谁知道呢?也许“有点想法”,能点亮下一盏灯。
走在橡树掩映的小径上,他忽然想起昨夜笔记本边缘写下的一句自语,“算法如棋,妙手偶得,但妙手之前,是十年厚积。”
他笑了笑,推开了食堂的门。冷气混合着意面酱的香气扑面而来,而他的思绪,已飘向下午将要书写的、那些无人见过的代码行。
只不过,当看到一个人高马大,正嘬着一杯可乐,迎面的朝自己走来的圆寸脑袋的时候,那笑容忽然变得激动起来。
“哥,你什么时候来的?”