热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

余凯在清华的讲座笔记

2014.4.4,余凯在清华FIT楼做了“DeepLearningUnfoldstheBigDataEra”的讲座。感觉这个讲座还是比较high-level的,毕竟90分钟也很难把这么大的

2014.4.4,余凯在清华FIT楼做了“Deep Learning Unfolds the Big Data Era”的讲座。感觉这个讲座还是比较high-level的,毕竟90分钟也很难把这么大的问题讲清楚。


根据我的理解,讲座主要分成4部分:

1. Deep Learning怎样被工业界看重并火得一塌糊涂;

2. 分析了一下shallow model和deep model的区别;

3. 介绍了百度在DL方面的研究和产品;

4. DL的发展趋势,百度可能的发展方向。


第一部分:DL是怎么火起来的


余凯首先以百度为例讲了深度学习的重要性:百度的商业模式是搜索引擎+卖广告,而机器学习算法能够将广告与潜在用户进行精准匹配,帮百度赚钱,turn data into value。在这方面百度需要解决的问题包括:自然图像中的光学字符识别(OCR in natural images)、语音识别(speech recognition and understanding)、基于内容的图像检索(content-based image retrieval)。尤其是鉴于最近可穿戴设备的快速发展,语音识别可能在未来扮演非常重要的角色。


随后他又画了那张很出名的技术发展的曲线,即先升后降再稳步提升。现在处于第一个上升期的代表包括3D打印、自动驾驶等等,第二个上升期的则是虹膜识别等等。


现在DL为什么这么火呢?06年Hinton的文章通过pre-training较好地解决了多层网络难以训练的问题,重新唤起了人们对于neural network的兴趣。但更重要的是在随后的几年里,人们利用DL模型在语音识别和图像分类上获得了突破性的进展。之所以说是突破性的,是因为其性能提升之大是以往小修小补远不能及的。尤其是在图像领域,DL算法甚至不需要human engineered feature,直接以原始像素作为输入就行。这改变了以往人们对于特征提取的认识。套用邓侃的一句话就是:这个领域离钱太近了。(这里还讲了一个小八卦:最早用DL在语音上取得学术成果的是微软,但最先将其产品化的却是谷歌,随后是百度。)


第二部分:shallow model和deep model的比较


余凯将机器学习的模型归为三类:shallow model,包括linear regression、logistic regression等;shallow model with one hidden layer,包括SVM、boosting、MLP等;还有就是deep model。


其中shallow model with one hidden layer,其实都可以认为(是余凯认为)是将数据用某种方法投影到隐含的特征空间中。学习过程就是学习这种映射关系,对隐层的不同假设就形成了不同的模型。余凯将manifold learning和semi-supervised learning也归为这一类,我可以理解;但是他将PCA也归为这一类,我没太明白为什么。


浅层的线性模型在以往获得了很大的成功(我记得Andrew Ng在Machine Learning课上讲完linear regression和logistic regression之后说:OK,你们现在已经比硅谷大部分工程师都牛逼了),不过说白了,浅层模型研究的问题是:已经有了好的特征我们怎么分类。问题是好的特征哪里来?过去人们靠专家拍脑袋想特征,比如SIFT。但是当数据变得更复杂、数据量更大的时候这种办法就不行了,所以要让模型自动提取特征。


余凯给了一幅图像处理的流程图,从左到右依次为:low-levelsensing -> pre-processing -> featureextraction -> featureselection -> prediction/classification  etc.。前面的4个环节都属于dirty work,但这些工作又对最后的结果影响极大。实践中这些环节是最耗费时间的,且往往是通过人工选取的方式,典型的例子就是SIFT和MFCC。正如前面所说,在图像领域我们已经能让模型自动地选取特征,但是在语音领域我们还没到这个程度。


DL能够自动习得从信号到语义的层次化的数据表示(参考谷歌的猫脸),这就是最吸引人的部分。


第三部分:百度在DL方面的工作


这块比较有意思,有研究也有产品。余凯非常自豪得说,现在用户在百度上的每一个query、每一次点击都会用NN处理。成果方面,百度把语音识别的相对出错率降低了25%,OCR的相对错误率降低了30%,图像检索则是世界最好的,“way better than Google”。从给出的几个例子上来看确实是这样。


然后讲了一点怎样把DL 应用于文本检索,这块也是我一直比较好奇的。大致结构是(在网上没找到图,读者脑补一下吧……):先将query和document映射成向量,要求这个向量可以反映出语义上的相关性(有没有参考谷歌的word2vec?);分别对两个向量做pooling;将pooling后的向量送入DNN进行打分,得到query和doc的相关度。对于有标记的训练集,我们可以知道类似score( query, doc1 ) > score( query, doc2 )这样的数据,所以只要定义一个合适的cost function就可以愉快地训练了。


作为搜索服务提供者,百度当然不缺数据。据余凯说,百度使用的图片大概有100 million,用于OCR的数据也差不多,语音是10 billion,CTR(点击预估)甚至达到100 billion。怪不得去百度实习过的同学都看不上学术圈这点玩具一样的数据集……


之后的东西就很水了,提了一下百度的分布式学习框架PADDLE,强调他们最看重的就是scalability。


讲到这里余凯又总结了一下为什么DL现在会这么成功,包括:

○ Big data解决了vanishing gradient的问题,一定程度上缓解了local optimal的问题(能fit这么多数据说明这个local optimal还是足够好的)
○ GPU
○ Large scale parallel computation
○ pre-training(现在不重要,如第一条所述,数据足够就行了)
○ RELU,drop out,normalization等等trick

转载注:RELU其实就是就是这样的一个函数f(x)=max(0,x),相比Sigmoid和tan函数最为激活函数,计算量小,也更符合生物上神经元被激活的场景。

drop out技术其实就是随机强制一些已经激活的神经元处于未激活状态。


第四部分:深度学习和百度的未来


从生物学的角度分析,高等动物相比低等动物,在神经元连接稠密程度上增长不大,但神经元数量要多得多。因此DL下一步的发展方向也许还是更大规模的网络。


从技术角度讲,需要解决的问题包括:1. 大规模海量数据并行训练平台;2. 对于结构和非结构数据的深度学习建模技术;3. 对于语言、语义、知识的建模、学习、表示、集成;4. 线上模型压缩加速技术,软件+硬件。这些不光要靠算法的改进,也依赖于高性能计算、脑科学的发展。


从研究哲学的角度,余凯强调了两点:1. DL不是一个blackbox;2. DL不是AI。在他看来,DL是一种语言、一种框架,就像graphical model。我们只有在先验知识的指导下才能更好的设计网络的结构,以期反映问题的本质。与过去不同的是,过去我们将先验知识应用于feature engineering,现在则是用于model structure。同时需要认识到,一个完整的AI应该包括四方面的能力:利用知识,学习,解决问题,创造。机器学习仅仅是学习的一部分,而DL也只是机器学习的一部分。


第五部分:提问环节


只有一个比较有意思的问题,是一个不知道是研究生还是老师的漂亮姐姐问的:对于一个已经训练好的模型,如果出现了一个新的需要识别的类别,怎样将其快速加入到模型中?余凯给出的解决方法是保留下面几层,只重新训练接近输出层的几层。这也是可以理解的,输入的底层特征都差不多,应该避免重复劳动。


以上就是我梳理的笔记。这么写一遍感觉又加深了自己的理解,以后多来几次。


推荐阅读
  • BZOJ4240 Gym 102082G:贪心算法与树状数组的综合应用
    BZOJ4240 Gym 102082G 题目 "有趣的家庭菜园" 结合了贪心算法和树状数组的应用,旨在解决在有限时间和内存限制下高效处理复杂数据结构的问题。通过巧妙地运用贪心策略和树状数组,该题目能够在 10 秒的时间限制和 256MB 的内存限制内,有效处理大量输入数据,实现高性能的解决方案。提交次数为 756 次,成功解决次数为 349 次,体现了该题目的挑战性和实际应用价值。 ... [详细]
  • 在稀疏直接法视觉里程计中,通过优化特征点并采用基于光度误差最小化的灰度图像线性插值技术,提高了定位精度。该方法通过对空间点的非齐次和齐次表示进行处理,利用RGB-D传感器获取的3D坐标信息,在两帧图像之间实现精确匹配,有效减少了光度误差,提升了系统的鲁棒性和稳定性。 ... [详细]
  • 进程(Process)是指计算机中程序对特定数据集的一次运行活动,是系统资源分配与调度的核心单元,构成了操作系统架构的基础。在早期以进程为中心的计算机体系结构中,进程被视为程序的执行实例,其状态和控制信息通过任务描述符(task_struct)进行管理和维护。本文将深入探讨进程的概念及其关键数据结构task_struct,解析其在操作系统中的作用和实现机制。 ... [详细]
  • 在Python编程中,掌握高级技巧对于提升代码效率和可读性至关重要。本文重点探讨了生成器和迭代器的应用,这两种工具不仅能够优化内存使用,还能简化复杂数据处理流程。生成器通过按需生成数据,避免了大量数据加载对内存的占用,而迭代器则提供了一种优雅的方式来遍历集合对象。此外,文章还深入解析了这些高级特性的实际应用场景,帮助读者更好地理解和运用这些技术。 ... [详细]
  • C++20 引入了指定初始化器(Designated Initializers),这一特性借鉴了 C# 的对象初始化器和 Kotlin 的 apply 范围函数。指定初始化器允许开发者在初始化结构体或类时,直接指定成员变量的值,提高了代码的可读性和简洁性。此外,该特性还支持嵌套初始化,使得复杂对象的初始化更加直观和灵活。本文将详细解析指定初始化器的语法、应用场景及其实现细节,并通过具体示例展示其在实际开发中的优势。 ... [详细]
  • 2019年斯坦福大学CS224n课程笔记:深度学习在自然语言处理中的应用——Word2Vec与GloVe模型解析
    本文详细解析了2019年斯坦福大学CS224n课程中关于深度学习在自然语言处理(NLP)领域的应用,重点探讨了Word2Vec和GloVe两种词嵌入模型的原理与实现方法。通过具体案例分析,深入阐述了这两种模型在提升NLP任务性能方面的优势与应用场景。 ... [详细]
  • 利用Redis HyperLogLog高效统计微博日活跃和月活跃用户数
    本文探讨了如何利用Redis的HyperLogLog数据结构高效地统计微博平台的日活跃用户(DAU)和月活跃用户(MAU)数量。通过HyperLogLog的高精度和低内存消耗特性,可以实现对大规模用户数据的实时统计与分析,为平台运营提供有力的数据支持。 ... [详细]
  • 表面缺陷检测数据集综述及GitHub开源项目推荐
    本文综述了表面缺陷检测领域的数据集,并推荐了多个GitHub上的开源项目。通过对现有文献和数据集的系统整理,为研究人员提供了全面的资源参考,有助于推动该领域的发展和技术进步。 ... [详细]
  • 本文深入解析了 Apache 配置文件 `httpd.conf` 和 `.htaccess` 的优化方法,探讨了如何通过合理配置提升服务器性能和安全性。文章详细介绍了这两个文件的关键参数及其作用,并提供了实际应用中的最佳实践,帮助读者更好地理解和运用 Apache 配置。 ... [详细]
  • 本文详细解析了如何使用 jQuery 实现一个在浏览器地址栏运行的射击游戏。通过源代码分析,展示了关键的 JavaScript 技术和实现方法,并提供了在线演示链接供读者参考。此外,还介绍了如何在 Visual Studio Code 中进行开发和调试,为开发者提供了实用的技巧和建议。 ... [详细]
  • 深入解析:JavaScript中的表达式与语句有何不同
    深入解析:JavaScript中的表达式与语句有何不同 ... [详细]
  • BZOJ1034 详细解析与算法优化
    本文深入解析了BZOJ1034问题,并提出了优化算法。通过借鉴广义田忌赛马的贪心策略,当己方当前最弱的马优于对方最弱的马时进行匹配;同样地,若己方当前最强的马优于对方最强的马,也进行匹配。此方法在保证胜率的同时,有效提升了算法效率。 ... [详细]
  • 本文详细探讨了C语言中`extern`关键字的简易编译方法,并深入解析了预编译、`static`和`extern`的综合应用。通过具体的代码示例,介绍了如何在不同的文件之间共享变量和函数声明,以及这些关键字在编译过程中的作用和影响。文章还讨论了预编译过程中宏定义的使用,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • 本文探讨了在Lumen框架中实现自定义表单验证功能的方法与挑战。Lumen的表单验证机制默认返回无状态的JSON格式API响应,这给初学者带来了一定的难度。通过深入研究Validate类,作者分享了如何有效配置和使用自定义验证规则,以提升表单数据的准确性和安全性。 ... [详细]
  • 如何在 Python 编程中实现各种数据类型的字符串转换? ... [详细]
author-avatar
cindy蔡79
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有