深度学习讲义 - CSDN
精华内容
参与话题
  • 深度学习ppt讲义

    2020-07-30 23:30:19
    这个ppt是朱兴权教授讲义的ppt,幽默风趣有不市区学术的严谨性,很开心可以有机会听朱老师的课,受益匪浅,希望大家也可以有很大的收获!
  • 很直观 入门很好! Lecture I: Introduction of Deep Learning Lecture II: Tips for Training Deep Neural Network Lecture III: Variants of Neural Network Lecture IV: Next Wave
  • 一份较为详细的深度学习资料汇总

    万次阅读 多人点赞 2018-04-20 21:32:18
    转载自:...需求说明:深度学习FPGA实现知识储备 来自:时间的诗 第一部分:博客大牛(深度学习方向) 1、http://blog.csdn.net/zouxy09 研究方向:机器学...
    转载自:https://blog.csdn.net/Times_poem/article/details/51596233,总结的资源还挺多,也很杂,有的东西以前研究过,还是不错的,先囤着吧,以后有空可以看看~
    
    
    

    需求说明:深度学习FPGA实现知识储备

    来自:时间的诗


    第一部分:博客大牛(深度学习方向)

    1、http://blog.csdn.net/zouxy09

    • 研究方向:机器学习、计算机视觉、人机交互和人工智能等领域
    • 作品:Deep Learning(深度学习)学习笔记整理系列
    • 网友评价:深入浅出、条理清晰、内容全面、适合反复阅读


    2、http://blog.csdn.net/matrix_space
    • 研究方向:专注于图像处理,计算机视觉,机器学习。
    • 作品:机器学习专栏http://lib.csdn.net/base/2



    第二部分:学习资料大全

    1、来自:http://blog.csdn.net/on2way/article/details/50094845

    该篇小记一下学习到的一些好教程与资料。 
    关于深度学习,介绍性的文章与博客非常多,写的也非常好。一个综述点的博客系列就是Zouxy大神的文章:

    Deep Learning(深度学习)学习笔记整理

    如果你是刚入门的小白,建议收藏这位大神的系列文章,这一系列基本山涵盖了深度学习的所有基本东西,所以相对来说也是比较综述性质的,很多的细节是你需要有一点了解的才能看得懂。可能第一遍下去看不懂,或者只能懂很浅显的一部分,但是不要紧,建议每隔一段时间看一看这个大综述,每一次你都会有不同的收获的。

    如果觉得光看别人写的很难理解,网络上相关的视频也是很多的,比如说复旦大学 
    吴立德教授的

    《深度学习课程》

    另外一个学习较好的教程是吴恩达的UFLDL教程,该教程也有网友翻译成中文版的了,可以说也是非常浅显易懂的,里面涉及到的代码也是有网友分享过。关于吴恩达,感觉研究深度学习的没几个不知道的,他还有比较经典的机器学习教程,这些可谓是更底层的原理介绍与一些浅层学习算法,对于较好的理解机器学习乃至深度学习非常有帮助。深度学习UFLDL教程教程如下:

    http://ufldl.stanford.edu/wiki/index.php/UFLDL%E6%95%99%E7%A8%8B

    机器学习教程网址如下:

    http://openclassroom.stanford.edu/MainFolder/CoursePage.php?course=MachineLearning

    该机器学习教程有更早的斯坦福课堂上的版本,在哪里有网友翻译的中文字幕,可以搜一下学习学习,很不错。

    当然还有很多很多很好的教程: 
    博客园上的网友总结系列,当你具体到学习某个部分的时候会很有用: 
    http://www.cnblogs.com/tornadomeet/tag/Deep%20Learning/default.html?page=1

    这位网友翻译的系列: 
    机器学习 
    其英文版的课程: 
    CS231n: Convolutional Neural Networks for Visual Recognition.

    在贴一个国外大牛还未出版的电子书: 
    http://neuralnetworksanddeeplearning.com/index.html

    还有一个好的教程(有英文视频) 
    http://cl.naist.jp/~kevinduh/a/deep2014/

    再就是DeepLearning的官网,里面好的好东西自己发现: 
    http://deeplearning.net/

    关于学习深度学习工具,似乎也有好多(matlab版,c++版,Python版等等深度学习库),视你自己熟悉而定。比如一个比较适合初学者学习原理的matlab版工具箱:

    DeepLearnToolbox 
    (后面会基于这个工具箱进行相关实验)。

    Python下的工具箱:Theano; 深度学习平台:caffe等等,这些只是看过也没有实际用过,属于比较高端下的深度学习应用范围了。

    教程可谓是多不胜数,只待寻找适合自己的最重要,找到一个好的教程坚持学下去,一定会有所收获的。


    2、机器学习的最佳入门学习资源
    来自:http://blog.csdn.net/thomashtq/article/details/42487955

    这是一篇很难写的文章,因为我希望这篇文章能对学习者有所启发。我在空白页前坐下,并且问自己了一个很难的问题:什么样的库、课程、论文和书籍对于机器学习的初学者来说,是最好的。

    文章里到底写什么、不写什么,这个问题真的让我很烦恼。我必须把自己当做一个程序员和一个机器学习的初学者,站在这个角度去考虑最合适的资源。

    我找出了每个类型中最适合的资源。如果你是一个真正的初学者,并且乐意于开始了解机器学习领域的相关知识,我希望,你可以在我的文章中,找到有用的 资料。我的建议是,从中挑出一件来,一本书或者是一个库,反复阅读或者认真学习所有的相关教程。挑出一件并且坚持学习,直到你完全掌握,再重新选择一件, 重复这个学习过程。现在就让我们开始吧!

    Programming Libraries 编程库资源

    我是一个“学习要敢于冒险和尝试”观念的倡导者。这是我学习编程的方式,我相信很多人也是这样学习程序设计的。先了解你的能力极限,然后去拓展你的 能力。如果你了解如何编程,可以将编程经验很快借鉴到深入学习机器学习上。在你实现一个实际的产品系统之前,你必须遵循一些规则、学习相关数学知识。

    找到一个库并且仔细阅读相关文档,根据教程,开始尝试实现一些东西。下面列出的是开源的机器学习库中最好的几种。我认为,并不是他们中的每一种都适合用在你的系统中,但是他们是你学习、探索和实验的好材料。

    你可以从一个由你熟悉的语言编写的库开始学习,然后再去学习其他功能强大的库。如果你是一个优秀的程序员,你会知道怎样从一种语言,简单合理地迁移到另一种语言。语言的逻辑都是相同的,只是语法和API稍有不同。

    • R Project for Statistical Computing: 这是一个开发环境,采用一种近似于Lisp的脚本语言。在这个库中,所有你想要的与统计相关的功能都通过R语言提供,包括一些复杂的图标。CRAN(你可 以认为是机器学弟的第三方包)中的机器学习目录下的代码,是由统计技术方法和其他相关领域中的领军人物编写的。如果你想做实验,或是快速拓展知识,R语言 都是必须学习的。但它可能不是你学习的第一站。
    • WEKA:这是一个数据挖掘工作平台,为用户提供数一系列据挖掘全过程的API、命令行和图形化用户接口。你可以准备数据、可视化、建立分类、进行回归分析、建立聚类模型,同时可以通过第三方插件执行其他算法。除了WEKA之外, Mahout是Hadoop中为机器学习提供的一个很好的JAVA框架,你可以自行学习。如果你是机器学习和大数据学习的新手,那么坚持学习WEKA,并且全心全意地学习一个库。
    • Scikit Learn:这是用Python编写的,基于NumPy和SciPy的机器学习库。如果你是一个Python或者Ruby语言程序员,这是适合你用的。这个库很用户接口友好,功能强大,并且配有详细的文档说明。如果你想试试别的库,你可以选择Orange。
    • Octave:如果你很熟悉MatLab,或者你是寻求改变的NumPy程序员,你可以考虑 Octave。这是一个数值计算环境,与MatLab像是,借助Octave你可以很方便地解决线性和非线性问题,比如机器学习算法底层涉及的问题。如果你有工程背景,那么你可以由此入手。
    • BigML:可能你并不想进行编程工作。你完全可以不通过代码,来使用 WEKA那样的工具。你通过使用BigMLS的服务来进行更加深入的工作。BigML通过Web页面,提供了机器学习的接口,因此你可以通过浏览器来建立模型。

    挑选出一个平台,并且在你实际学习机器学习的时候使用它。不要纸上谈兵,要去实践!

    Video Courses视频课程

    很多人都是通过视频资源开始接触机器学习的。我在YouTube和VideoLectures上看了很多于机器学习相关的视频资源。这样做的问题 是,你可能只是观看视频而并不实际去做。我的建议是,你在观看视频的时候,应该多记笔记,及时后来你会抛弃你的笔记。同时,我建议你将学到的东西付诸实 践。

    坦白讲,我没有看见特别合适初学者的视频资源。视频资源都需要你掌握一定的线性代数、概率论等知识。Andrew Ng在斯坦福的讲解可能是最适合初学者的,下面是我推荐的一些视频资源。

    • Stanford Machine Learning斯坦福的机器学习课程:可以在Coursera上观看,这门课是由 Andrew Ng讲解的。只要注册,你可以随时观看所有的课程视频,从Stanford CS229 course下载讲义和笔记。这门课包括了家庭作业和小测试,课程主要讲解了线性代数的知识,使用Octave库。
    • Caltech Learning from Data加 利福尼亚理工学院的数据分析课程:你可以在edX上学习这门课程,课程是由Yaser Abu-Mostafa讲解的。所有的课程视频和资料都在加利福尼亚理工学院的网站上。与斯坦福的课程类似,你可以根据自己的情况安排学习进度,完成家庭 作业和小论文。它与斯坦福的课程主题相似,关注更多的细节和数学知识。对于初学者来说,家庭作业可能稍有难度。
    • Machine Learning Category on VideoLectures.Net网 站中的机器学习目录:这是个很容易令人眼花缭乱的资源库。你可以找出比较感兴趣的资源,并且深入学习。不要纠结于不适合你的视频,或者对于感兴趣的内容你 可以做笔记。我自己会一直重复深入学习一些问题,同时发现新的话题进行学习。此外,在这个网站上你可以发现是这个领域的大师是什么样的。
    • “Getting In Shape For The Sport Of Data Science” – 由Jeremy Howard讲授:这是与机器学习竞赛者的对话,他们是一些实践中的R语言用户。这是非常珍贵的资源,因为很少有人会讨论研究一个问题的完整过程和究竟怎样做。我曾经幻想过在网上找到一个TV秀,记录机器学习竞赛的全过程。这就是我开始学习机器学习的经历!

    Overview Papers综述论文

    如果你并不习惯阅读科研论文,你会发现论文的语言非常晦涩难懂。一篇论文就像是一本教科书的片段,但是论文会介绍一个实验或者是领域中其他的前沿知识。然而,如果你准备从阅读论文开始学习机器学习的话,你还是可以找到一些很有意思的文章的。

    • The Discipline of Machine Learning机器学习中的规则:这是由Tom Mitchell编著的白皮书,其中定义了机器学习的规则。Mitchell在说服CMU总裁为一个百年内都存在的问题建立一个独立的机器学习部门时,也用到了这本书中的观点。

    我只是列出了两篇重要的论文,因为阅读论文会让你陷入困境。

    Beginner Machine Learning Books给机器学习初学者的书

    关于机器学习的书有很多,但是几乎没有为初学者量身定做的。什么样的人才是初学者呢?最有可能的情况是,你从另外一个完全不同的领域比如:计算机科学、程序设计或者是统计学,来到机器学习领域。那么,大部分的书籍要求你有一定的线性代数和概率论的基础。

    但是,还有一些书通过讲解最少的算法来鼓励程序员学习机器学习,书中会介绍一些可以使用工具、编程函数库来让程序员尝试。其中最有代表性的书是: 《Programming Collective Intelligence》,《Machine Learning for Hackers》,《Hackersand Data Mining: Practical Machine Learning Tools and Techniques》(Python版, R版, 以及Java版)。如果感到迷惑的话,你可以选择其中一本开始学习。

    机器学习的最佳入门学习资源
    • Machine Learning for Hackers  (中文版:机器学习:实用案例解析 ):我建议你在阅读了《Programming Collective Intelligence》一书之后,再阅读这本书。这本书中也提供了很多实践练习,但是涉及更多的数据分析,并且使用R语言。我个人很喜欢这本书!
    • Machine Learning: An Algorithmic Perspective:这本书是《Programming Collective Intelligence》的高级版本。它们目的相同(让程序员开始了解机器学习),但是这本书包括一些数学知识,参考样例和phython程序片段。如果你有兴趣的话,我建议你在看完《Programming Collective Intelligence》之后来阅读这本书。
    • 数据挖掘:实用机器学习工具与技术(英文版·第3版) : 我自己是从这本书开始了解机器学习的,那时是2000年这本书还是第一版。我那时是Java程序员,这本书和WEKA库为我的学习和实践提供了一个很好的 环境。我通过这样的平台和一些插件,实现我的算法,并且真正开始实践机器学习和数据挖掘的过程。我强烈推荐这本书,和这样的学习过程。

    有一些人认为那些经典的机器学习教科书很了不起。 我也赞同,那些书的确非常好。但是,我认为,对于初学者来说,这些书可能并不合适。

    Further Reading 继续阅读

    在写这篇文章时,我认真思考了相关问题,同时也参考了其他人推荐的资料,以确保我没有遗漏任何重要参考资料。为了确保文章的完整性,下面也列出了一些网上流行的,可以供初学者使用的材料。.

    你是不是以及读过或者用过上面的一些资源了呢?你怎么看这个问题?

    我是不是如愿为那些对机器学习有兴趣的初学者提供了重要、有用的资源呢?请留下你的建议,让我们分享!

     翻译: 伯乐在线 programmer_lin

     译文链接: http://blog.jobbole.com/56256/

     原文连接:http://www.open-open.com/news/view/fab75c



    来自:http://blog.csdn.net/augusdi/article/details/20238157

    Deep Learning(深度学习)

    ufldl的2个教程(这个没得说,入门绝对的好教程,Ng的,逻辑清晰有练习):一

    ufldl的2个教程(这个没得说,入门绝对的好教程,Ng的,逻辑清晰有练习):二

    Bengio团队的deep learning教程,用的theano库,主要是rbm系列,搞python的可以参考,很不错。

    deeplearning.net主页,里面包含的信息量非常多,有software, reading list, research lab, dataset, demo等,强烈推荐,自己去发现好资料。

    Deep learning的toolbox,matlab实现的,对应源码来学习一些常见的DL模型很有帮助,这个库我主要是用来学习算法实现过程的。

    2013年龙星计划深度学习教程,邓力大牛主讲,虽然老师准备得不充分,不过还是很有收获的。

    Hinton大牛在coursera上开的神经网络课程,DL部分有不少,非常赞,没有废话,课件每句话都包含了很多信息,有一定DL基础后去听收获更大。

    Larochelle关于DL的课件,逻辑清晰,覆盖面广,包含了rbm系列,autoencoder系列,sparse coding系列,还有crf,cnn,rnn等虽然网页是法文,但是课件是英文。

    CMU大学2013年的deep learning课程,有不少reading paper可以参考。

    达慕思大学Lorenzo Torresani的2013Deep learning课程reading list.

    Deep Learning Methods for Vision(余凯等在cvpr2012上组织一个workshop,关于DL在视觉上的应用)。

    斯坦福Ng团队成员链接主页,可以进入团队成员的主页,比较熟悉的有Richard Socher, Honglak Lee, Quoc Le等。

    多伦多ML团队成员链接主页,可以进入团队成员主页,包括DL鼻祖hinton,还有Ruslan Salakhutdinov , Alex Krizhevsky等。

    蒙特利尔大学机器学习团队成员链接主页,包括大牛Bengio,还有Ian Goodfellow 等。

    纽约大学的机器学习团队成员链接主页,包括大牛Lecun,还有Rob Fergus等。

    豆瓣上的脑与deep learning读书会,有讲义和部分视频,主要介绍了一些于deep learning相关的生物神经网络。

    Large Scale ML的课程,由Lecun和Langford讲的,能不推荐么。

    Yann Lecun的2014年Deep Learning课程主页,强烈推荐。

    一些常见的DL code列表,csdn博主zouxy09的博文,Deep Learning源代码收集-持续更新…

    Deep Learning for NLP (without Magic),由DL界5大高手之一的Richard Socher小组搞的,他主要是NLP的。

    2012 Graduate Summer School: Deep Learning, Feature Learning,高手云集,深度学习盛宴,几乎所有的DL大牛都有参加。

    matlab下的maxPooling速度优化,调用C++实现的。

    2014年ACL机器学习领域主席Kevin Duh的深度学习入门讲座视频。

     

    Machine Learning(机器学习):

    介绍图模型的一个ppt,非常的赞,ppt作者总结得很给力,里面还包括了HMM,MEM, CRF等其它图模型。反正看完挺有收获的。

    机器学习一个视频教程,youtube上的,翻吧,内容很全面,偏概率统计模型,每一小集只有几分钟。 

    龙星计划2012机器学习,由余凯和张潼主讲。

    demonstrate 的 blog :关于PGM(概率图模型)系列,主要按照Daphne Koller的经典PGM教程介绍的,大家依次google之

    FreeMind的博客,主要关于机器学习的。

    Tom Mitchell大牛的机器学习课程,他的machine learning教科书非常出名。

    CS109,Data Science,用python介绍机器学习算法的课程。

     

    Computer Vision(计算机视觉):

    MIT2013年秋季课程:Advances in Computer Vision,有练习题,有些有code.

    IPAM一个计算机视觉的短期课程,有不少牛人参加。

     

    OpenCV相关:

    http://opencv.org/

    2012年7月4日随着opencv2.4.2版本的发布,opencv更改了其最新的官方网站地址。

    http://www.opencvchina.com/

    好像12年才有这个论坛的,比较新。里面有针对《learning opencv》这本书的视频讲解,不过视频教学还没出完,正在更新中。对刚入门学习opencv的人来说很不错。

    http://www.opencv.org.cn/forum/

    opencv中文论坛,对于初次接触opencv的学者来说比较不错,入门资料多,opencv的各种英文文档也翻译成中文了。不足是感觉这个论坛上发帖提问很少人回答,也就是说讨论不够激烈。

    http://opencv.jp/

    opencv的日文网站,里面有不少例子代码,看不懂日文可以用网站自带的翻译,能看个大概。

    http://code.opencv.org/projects/opencv

    opencv版本bug修补,版本更新,以及各种相关大型活动安排,还包含了opencv最近几个月内的活动路线,即未来将增加的功能等,可以掌握各种关于opencv进展情况的最新进展。

    http://tech.groups.yahoo.com/group/OpenCV/

    opencv雅虎邮件列表,据说是最好的opencv论坛,信息更新最新的地方。不过个人认为要查找相关主题的内容,在邮件列表中非常不方便。

    http://www.cmlab.csie.ntu.edu.tw/~jsyeh/wiki/doku.php

    台湾大学暑假集训网站,内有链接到与opencv集训相关的网页。感觉这种教育形式还蛮不错的。

    http://sourceforge.net/projects/opencvlibrary/

    opencv版本发布地方。

    http://code.opencv.org/projects/opencv/wiki/ChangeLog#241    http://opencv.willowgarage.com/wiki/OpenCV%20Change%20Logs

    opencv版本内容更改日志网页,前面那个网页更新最快。

    http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/tutorials.html

    opencv中文教程网页,分几个模块讲解,有代码有过程。内容是网友翻译opencv自带的doc文件里的。

    https://netfiles.uiuc.edu/jbhuang1/www/resources/vision/index.html

    网友总结的常用带有cvpr领域常见算法code链接的网址,感觉非常的不错。

    http://fossies.org/dox/OpenCV-2.4.2/

    该网站可以查看opencv中一些函数的变量接口,还会列出函数之间的结构图。

    http://opencv.itseez.com/

    opencv的函数、类等查找网页,有导航,查起来感觉不错。

     

    优化:

    http://submodularity.org/

    submodual优化。

     

    数学:

    http://www.youku.com/playlist_show/id_19465801.html

    《计算机中的数学》系列视频,8位老师10讲内容,生动介绍微积分和线性代数基本概念在计算机学科中的各种有趣应用!

     

    Linux学习资料:

    http://itercast.com/library/1

    linux入门的基础视频教程,对于新手可选择看第一部分,视频来源于LinuxCast.net网站,还不错。

     

    OpenNI+Kinect相关:

    http://1.yuhuazou.sinaapp.com/

    网友晨宇思远的博客,主攻cvpr,ai等。

    http://blog.csdn.net/chenli2010/article/details/6887646

    kinect和openni学习资料汇总。

    http://blog.csdn.net/moc062066/article/category/871261

    OpenCV 计算机视觉 kinect的博客:

    http://kheresy.wordpress.com/index_of_openni_and_kinect/comment-page-5/

    网友Heresy的博客,里面有不少kinect的文章,写的比较详细。

    http://www.cnkinect.com/

    体感游戏中文网,有不少新的kinect资讯。

    http://www.kinectutorial.com/

    Kinect体感开发网。

    http://code.google.com/p/openni-hand-tracker

    openni_hand_tracking google code项目。

    http://blog.candescent.ch/

    网友的kinect博客,里面有很多手势识别方面的文章介绍,还有源码,不过貌似是基于c#的。

    https://sites.google.com/site/colordepthfusion/

    一些关于深度信息和颜色信息融合(fusion)的文章。

    http://projects.ict.usc.edu/mxr/faast/

    kinect新的库,可以结合OpenNI使用。

    https://sites.google.com/a/chalearn.org/gesturechallenge/

    kinect手势识别网站。

    http://www.ros.org/wiki/mit-ros-pkg

    mit的kinect项目,有code。主要是与手势识别相关。

    http://www.thoughtden.co.uk/blog/2012/08/kinecting-people-our-top-6-kinect-projects/

    kinect 2012年度最具创新的6个项目,有视频,确实够创新的!

    http://www.cnblogs.com/yangyangcv/archive/2011/01/07/1930349.html

    kinect多点触控的一篇博文。

    http://sourceforge.net/projects/kinect-mex/

    http://www.mathworks.com/matlabcentral/fileexchange/30242-kinect-matlab

    有关matlab for kinect的一些接口。

    http://news.9ria.com/2012/1212/25609.html

    AIR和Kinect的结合,有一些手指跟踪的code。

    http://eeeweba.ntu.edu.sg/computervision/people/home/renzhou/index.htm

    研究kinect手势识别的,任洲。刚毕业不久。

     

    其他网友cvpr领域的链接总结:

    http://www.cnblogs.com/kshenf/

    网友整理常用牛人链接总结,非常多。不过个人没有没有每个网站都去试过。所以本文也是我自己总结自己曾经用过的或体会过的。

     

    OpenGL有关:

    http://nehe.gamedev.net/

    NeHe的OpenGL教程英文版。

    http://www.owlei.com/DancingWind/

    NeHe的OpenGL教程对应的中文版,由网友周玮翻译的。

    http://www.qiliang.net/old/nehe_qt/

    NeHe的OpengGL对应的Qt版中文教程。

    http://blog.csdn.net/qp120291570

    网友”左脑设计,右脑编程”的Qt_OpenGL博客,写得还不错。

    http://guiliblearning.blogspot.com/

    这个博客对opengl的机制有所剖析,貌似要翻墙才能进去。

     

    cvpr综合网站论坛博客等:

    http://www.cvchina.net/

    中国计算机视觉论坛

    http://www.cvchina.info/

    这个博客很不错,每次看完都能让人兴奋,因为有很多关于cv领域的科技新闻,还时不时有视频显示。另外这个博客里面的资源也整理得相当不错。中文的。

    http://www.bfcat.com/

    一位网友的个人计算机视觉博客,有很多关于计算机视觉前沿的东西介绍,与上面的博客一样,看了也能让人兴奋。

    http://blog.csdn.net/v_JULY_v/

    牛人博客,主攻数据结构,机器学习数据挖掘算法等。

    http://blog.youtueye.com/

    该网友上面有一些计算机视觉方向的博客,博客中附有一些实验的测试代码.

    http://blog.sciencenet.cn/u/jingyanwang

    多看pami才扯谈的博客,其中有不少pami文章的中文介绍。

    http://chentingpc.me/

    做网络和自然语言处理的,有不少机器学习方面的介绍。

     

    ML常用博客资料等:

    http://freemind.pluskid.org/

    由 pluskid 所维护的 blog,主要记录一些机器学习、程序设计以及各种技术和非技术的相关内容,写得很不错。

    http://datasciencemasters.org/

    里面包含学ML/DM所需要的一些知识链接,且有些给出了视频教程,网页资料,电子书,开源code等,推荐!

    http://cs.nju.edu.cn/zhouzh/index.htm

    周志华主页,不用介绍了,机器学习大牛,更可贵的是他的很多文章都有源码公布。

    http://www.eecs.berkeley.edu/~jpaisley/Papers.htm

    John Paisley的个人主页,主要研究机器学习领域,有些文章有代码提供。

    http://foreveralbum.yo2.cn/

    里面有一些常见机器学习算法的详细推导过程。

    http://blog.csdn.net/abcjennifer

    浙江大学CS硕士在读,关注计算机视觉,机器学习,算法研究,博弈, 人工智能, 移动互联网等学科和产业。该博客中有很多机器学习算法方面的介绍。

    http://www.wytk2008.net/

    无垠天空的机器学习博客。

    http://www.chalearn.org/index.html

    机器学习挑战赛。

    http://licstar.net/

    licstar的技术博客,偏自然语言处理方向。

     

    国内科研团队和牛人网页:

    http://vision.ia.ac.cn/zh/index_cn.html

    中科院自动化所机器视觉课题小组,有相关数据库、论文、课件等下载。

    http://www.cbsr.ia.ac.cn/users/szli/

    李子青教授个人主页,中科院自动化所cvpr领域牛叉人!

    http://www4.comp.polyu.edu.hk/~cslzhang/

    香港理工大学教授lei zhang个人主页,也是cvpr领域一大牛人啊,cvpr,iccv各种发表。更重要的是他所以牛叉论文的code全部公开,非常难得!

    http://liama.ia.ac.cn/wiki/start

    中法信息、自动化与应用联合实验室,里面很多内容不仅限而cvpr,还有ai领域一些其他的研究。

    http://www.cogsci.xmu.edu.cn/cvl/english/

    厦门大学特聘教授,cv领域一位牛人。研究方向主要为目标检测,目标跟踪,运动估计,三维重建,鲁棒统计学,光流计算等。

    http://idm.pku.edu.cn/index.aspx

    北京大学数字视频编码技术国家实验室。 

    http://www.csie.ntu.edu.tw/~cjlin/libsvm/

    libsvm项目网址,台湾大学的,很火!

    http://www.jdl.ac.cn/user/sgshan/index.htm

    山世光,人脸识别研究比较牛。在中国科学院智能信息处理重点实验室

     

    国外科研团队和牛人网页:

    https://netfiles.uiuc.edu/jbhuang1/www/resources/vision/index.html

    常见计算机视觉资源整理索引,国外学者整理,全是出名的算法,并且带有代码的,这个非常有帮助,其链接都是相关领域很火的代码。

    http://www.cs.cmu.edu/afs/cs/project/cil/ftp/html/txtv-groups.html

    国外学者整理的各高校研究所团队网站

    http://research.microsoft.com/en-us/groups/vision/

    微软视觉研究小组,不解释,大家懂的,牛!

    http://lear.inrialpes.fr/index.php

    法国国家信息与自动化研究所,有对应牛人的链接,论文项目网页链接,且一些code对应链接等。

    http://www.cs.ubc.ca/~pcarbo/objrecls/

    Learning to recognize objects with little supervision该篇论文的项目网页,有对应的code下载,另附有详细说明。

    http://www.eecs.berkeley.edu/~lbourdev/poselets/

    poselets相关研究界面,关于poselets的第一手资料。

    http://www.cse.oulu.fi/CMV/Research

    芬兰奥卢大学计算机科学与工程学院网页,里面有很多cv领域相关的研究,比如说人脸,脸部表情,人体行为识别,跟踪,人机交互等cv基本都涉及有。

    http://www.cs.cmu.edu/~cil/vision.html

    卡耐基梅隆大学计算机视觉主页,内容非常多。可惜的是该网站内容只更新到了2004年。

    http://vision.stanford.edu/index.html

    斯坦福大学计算机视觉主页,里面有非常非常多的牛人,比如说大家熟悉的lifeifei.

    http://www.wavelet.org/index.php

    关于wavelet研究的网页。

    http://civs.ucla.edu/

    加州大学洛杉矶分校统计学院,关于统计学习方面各种资料,且有相应的网上公开课。

    http://www.cs.cmu.edu/~efros/

    卡耐基梅隆大学Alexei(Alyosha)Efros教授个人网站,计算机图形学高手。

    http://web.mit.edu/torralba/www//

    mit牛人Associate教授个人网址,主要研究计算机视觉人体视觉感知,目标识别和场景理解等。

    http://people.csail.mit.edu/billf/

    mit牛人William T. Freeman教授,主要研究计算机视觉和图像学

    http://www.research.ibm.com/peoplevision/

    IBM人体视觉研究中心,里面除了有其研究小组的最新成果外,还有很多测试数据(特别是视频)供下载。

    http://www.vlfeat.org/

    vlfeat主页,vlfeat也是一个开源组织,主要定位在一些最流行的视觉算法开源上,C编写,其很多算法效果比opencv要好,不过数量不全,但是非常有用。

    http://www.robots.ox.ac.uk/~az/

    Andrew Zisserman的个人主页,这人大家应该熟悉,《计算机视觉中的多视几何》这本神书的作者之一。

    http://www.cs.utexas.edu/~grauman/

    KristenGrauman教授的个人主页,是个大美女,且是2011年“马尔奖”获得者,”马尔奖“大家都懂的,计算机视觉领域的最高奖项,目前无一个国内学者获得过。她的主要研究方法是视觉识别。

    http://groups.csail.mit.edu/vision/welcome/

    mit视觉实验室主页。

    http://code.google.com/p/sixthsense/

    曾经在网络上非常出名一个视频,一个作者研究的第六感装置,现在这个就是其开源的主页。

    http://vision.ucsd.edu/~pdollar/research.html#BehaviorRecognitionAnimalBehavior

    Piotr Dollar的个人主要,主要研究方向是人体行为识别。

    http://www.mmp.rwth-aachen.de/

    移动多媒体处理,将移动设备,计算机图像学,视觉,图像处理等结合的领域。

    http://www.di.ens.fr/~laptev/index.html

    Ivan Laptev牛人主页,主要研究人体行为识别。有很多数据库可以下载。

    http://blogs.oregonstate.edu/hess/

    Rob Hess的个人主要,里面有源码下载,比如说粒子滤波,他写的粒子滤波在网上很火。

    http://morethantechnical.googlecode.com/svn/trunk/

    cvpr领域一些小型的开源代码。

    http://iica.de/pd/index.py

    做行人检测的一个团队,内部有一些行人检测的代码下载。

    http://www.cs.utexas.edu/~grauman/research/pubs.html

    UT-Austin计算机视觉小组,包含的视觉研究方向比较广,且有的文章有源码,你只需要填一个邮箱地址,系统会自动发跟源码相关的信息过来。

    http://www.robots.ox.ac.uk/~vgg/index.html

    visual geometry group

     

    图像:

    http://blog.sina.com.cn/s/blog_4cccd8d301012pw5.html

    交互式图像分割代码。

    http://vision.csd.uwo.ca/code/

    graphcut优化代码。

     

    语音:

    http://danielpovey.com/kaldi-lectures.html

    语音处理中的kaldi学习。

     

    算法分析与设计(计算机领域的基础算法):

    http://www.51nod.com/focus.html

    该网站主要是讨论一些算法题。里面的李陶冶是个大牛,回答了很多算法题。

     

    一些综合topic列表:

    http://www.cs.cornell.edu/courses/CS7670/2011fa/

    计算机视觉中的些topic(Special Topics in Computer Vision),截止到2011年为止,其引用的文章都是非常顶级的topic。

     

    书籍相关网页:

    http://www.imageprocessingplace.com/index.htm

    冈萨雷斯的《数字图像处理》一书网站,包含课程材料,matlab图像处理工具包,课件ppt等相关素材。

    Consumer Depth Cameras for Computer Vision

    很优秀的一本书,不过很贵,买不起啊!做深度信息的使用这本书还不错,google图中可以预览一部分。

    Making.Things.See

    针对Kinect写的,主要关注深度信息,较为基础。书籍中有不少例子,貌似是Java写的。

     

    国内一些AI相关的研讨会:

    http://www.iipl.fudan.edu.cn/MLA13/index.htm

    中国机器学习及应用研讨会(这个是2013年的)

     

    期刊会议论文下载:

    http://cvpapers.com/

    几个顶级会议论文公开下载界面,比如说ICCV,CVPR,ECCV,ACCV,ICPR,SIGGRAPH等。

    http://www.cvpr2012.org/

    cvpr2012的官方地址,里面有各种资料和信息,其他年份的地址类似推理更改即可。

    http://www.sciencedirect.com/science/journal/02628856

    ICV期刊下载

    http://www.computer.org/portal/web/tpami

    TPAMI期刊,AI领域中可以算得上是最顶级的期刊了,里面有不少cvpr方面的内容。

    http://www.springerlink.com/content/100272/

    IJCV的网址。

    http://books.nips.cc/

    NIPS官网,有论文下载列表。

    http://graphlab.org/lsrs2013/program/

    LSRS (会议)地址,大规模推荐系统,其它年份依次类推。

     

    会议期刊相关信息:

    http://conferences.visionbib.com/Iris-Conferences.html

    该网页列出了图像处理,计算机视觉领域相关几乎所有比较出名的会议时间表。

    http://conferences.visionbib.com/Browse-conf.php

    上面网页的一个子网页,列出了最近的CV领域提交paper的deadline。

     

    cvpr相关数据库下载:

    http://research.microsoft.com/en-us/um/people/jckrumm/WallFlower/TestImages.htm

    微软研究院牛人Wallflower Paper的论文中用到的目标检测等测试图片

    http://archive.ics.uci.edu/ml/

    UCI数据库列表下载,最常用的机器学习数据库列表。

    http://www.cs.rochester.edu/~rmessing/uradl/

    人体行为识别通过关键点的跟踪视频数据库,Rochester university的

    http://www.research.ibm.com/peoplevision/performanceevaluation.html

    IBM人体视觉研究中心,有视频监控等非常多的测试视频。

    http://www.cvpapers.com/datasets.html

    该网站上列出了常见的cvpr研究的数据库。

    http://www.cs.washington.edu/rgbd-dataset/index.html

    RGB-D Object Dataset.做目标识别的。

     

    AI相关娱乐网页:

    http://en.akinator.com/

    该网站很好玩,可以测试你心里想出的一个人名(当然前提是这个人必须有一定的知名度),然后该网站会提出一系列的问题,你可以选择yes or no,or I don’t know等等,最后系统会显示你心中所想的那个人。

    http://www.doggelganger.co.nz/

    人与狗的匹配游戏,摄像头采集人脸,呵呵…

     

    Android相关:

    https://code.google.com/p/android-ui-utils/

    该网站上有一些android图标,菜单等跟界面有关的设计工具,可以用来做一些简单的UI设计.

     

    工具和code下载:

    http://lear.inrialpes.fr/people/dorko/downloads.html

    6种常见的图像特征点检测子,linux下环境运行。不过只提供了二进制文件,不提供源码。

    http://www.cs.ubc.ca/~pcarbo/objrecls/index.html#code

    ssmcmc的matlab代码,是Learning to recognize objects with little supervision这一系列文章用的源码,属于目标识别方面的研究。

    http://www.robots.ox.ac.uk/~timork/

    仿射无关尺度特征点检测算子源码,还有些其它算子的源码或二进制文件。

    http://www.vision.ee.ethz.ch/~bleibe/code/ism.html

    隐式形状模型(ISM)项目主页,作者Bastian Leibe提供了linux下运行的二进制文件。

    http://www.di.ens.fr/~laptev/download.html#stip

    Ivan Laptev牛人主页中的STIP特征点检测code,但是也只是有二进制文件,无源码。该特征点在行为识别中该特征点非常有名。

    http://ai.stanford.edu/~quocle/

    斯坦福大学Quoc V.Le主页,上有它2011年行为识别文章的代码。

     

    开源软件:

    http://mloss.org/software/

    一些ML开源软件在这里基本都可以搜到,有上百个。

    https://github.com/myui/hivemall

    Scalable machine learning library for Hive/Hadoop.

    http://scikit-learn.org/stable/

     

    基于Python的机器学习开源软件,文档写得不错。

     

    挑战赛:

    http://www.chioka.in/kaggle-competition-solutions/

    kaggle一些挑战赛的code. 

     

    公开课:

    网易公开课,国内做得很不错的公开课,翻译了一些国外出名的公开课教程,与国外公开课平台coursera有合作。

    coursera在线教育网上公开课,很新,有个邮箱注册即可学习,有不少课程,且有对应的练习,特别是编程练习,超赞。

    斯坦福网上公开课链接,有统计学习,凸优化等课程。

    udacity公开课程下载链接,其实速度还可以。里面有不少好教程。

    机器学习公开课的连接,有不少课。

    整理来自:时间的诗

    展开全文
  • 李宏毅深度学习景点讲义PPT完整版 对于深度学习,首先第一步定义方法 - 神经网络。深度学习顾名思义是指多层的神经网络。 神经网络的思想来源于对于人脑的生理上的研究,人脑由数亿个神经元组成,神经元通过轴突...
  • 深度学习入门基础讲义

    千次阅读 多人点赞 2017-11-28 16:22:35
    工作确定以后,闲暇时间做了如下一个PPT讲义,用于向实验室新生学弟学妹介绍深度学习。他们大部分在本科期间学习通信相关专业课程,基本没有接触过图像处理和机器学习。对于一个研究生而言,自学应当是一个最基本也...

    工作确定以后,闲暇时间做了如下一个PPT讲义,用于向实验室新生介绍深度学习。他们大部分在本科期间学习通信相关专业课程,基本没有接触过图像处理和机器学习。

    对于一个研究生而言,自学应当是一个最基本也是最重要的能力。自学不仅是独立学习,更是主动学习。因此,该讲义的目的主要是使其对深度学习有一个初步的认识,并顺便了解一些常见的概念。 而真正走进深度学习,还需要各自的努力。

    该讲义尽量用一些浅显的话语来介绍。囿于水平,一些讲解可能存在模糊甚至错误的情况,欢迎大家提出宝贵的意见。此外,希望补充某些内容,也可以留言或者私信。

    PPT中有些图来自于网络,如果有侵权可以联系删除。

    讲义下载:deeplearning讲义第一版 http://pan.baidu.com/s/1i4Jo3tz 密码:nxf9

    讲义整体包含三部分:

    • 相关基础
    • 深度卷积神经网络
    • 深度学习应用示例

    一、相关基础

    这里写图片描述

    关于世界是离散还是连续的目前还没有定论,但多数人倾向于 “世界是连续的,认知是离散的”。 对于通信系统或者信号处理专业的同学而言,离散和连续是一对熟悉而又重要的概念,它们可以相互转化。我们通常采用 采样量化 的方式将连续信号转化为离散信号,比如声卡设备的采集原理(稍好点的声卡都可以调节采样频率以及位深度等参数)。离散信号转化为连续信号通常采用 插值拟合 的方式来进行逼近,比如等高线地图的绘制、游戏地图的渲染。

    对于机器学习而言,几乎所有的任务都可以归类为 离散的分类 任务和 连续的回归 任务。当我们面对一个机器学习问题时,可能需要以离散和连续的角度从宏观上认识该问题,并注意离散和连续的转化。

    这里写图片描述

    分类是一个典型的离散问题。如上面的三维空间点图,每一个蓝色点都是点热源附近的一个温度传感器。可惜的是,由于传感器部署位置以及损坏的原因,在绿色点A和B我们没有测得有效的温度数据。现在的问题是,如果我们将一块冰分别置于A和B两点,冰是否
    会融化?

    “是或者不是”,这是一个典型的二分类问题。解决这个问题很简单,我们甚至根本不用具体知道A和B两点的温度。我们只需要设定一个距离阈值,然后计算A、B两点距点热源的距离是否大于该阈值就可以了。

    这里写图片描述

    回归是一个典型的离散到连续的问题。还是上面的图,如果我们想要知道A、B两点的具体温度该怎么办?

    一个常见的方法是 “插值”,比如左图所示的 “双线性插值”。最简单的双线性插值是用未知点周围4个已知点的数值加权得到,加权系数由未知点到已知点的距离决定。具体操作时常采用先水平加权再垂直加权的方式。

    插值仅仅利用了未知点附近的信息,没有考虑全局的分布。事实上,传感器所测量的温度恰好符合如右图所示的高斯曲面。于是,如果我们找到了这样一个可以尽可能描述温度数据分布的曲面方程,那么A、B两点的温度直接就可以知道了。

    通过上面的例子,我们除了要认识到“离散”和“连续”之间的区别,也要学会思考二者之间的联系。毕竟,如果知道了具体的温度,也就直接解决了那块冰会不会融化的问题。

    这里写图片描述

    线性回归可以说是最简单的也是我们接触最早的机器学习方法,因为线性回归出现在很多中学数学教材中。线性回归的问题很简单,如上右图所示,寻找一条最“贴合”的直线。所以我们假设的模型就是一条直线,有2个未知参数(斜率和截距);然后我们继续定义一个代价函数(有些地方也称损失函数 loss function),这个代价函数其实就是一个欧氏距离平方和;最后我们的目标函数就是最小化代价。

    模型假设 —— 代价函数 —— 目标函数,基本是解决一个机器学习问题所必备的三个要素和步骤。

    这里写图片描述

    数学中所有的优化问题都可以描述为在一个解空间中找到使目标值最小的解的问题。然后,这类最优化问题又可以被分为 凸优化非凸优化问题。 凸优化是一个非常简单的问题,并且有着一个特别好的性质:任何局部最优解即为全局最优解。但是,绝大部分实际问题都是非凸的,直观上体现为解空间有着很多局部最小点。

    幸好,我们的直线拟合问题是一个简单的凸优化问题,其有着唯一最优解(当数据点对称分布时可能不满足)。

    这里写图片描述

    为了求解直线参数,我们之前定义了最小化误差的平方和作为我们的损失函数。为什么用误差平方和而不是用误差绝对值?误差的立方?

    于是,我们又要引入最小二乘法(又称最小平方法)这种数学优化技术。在所有无偏的线性估计类中,最小二乘方法是其中方差最小的。

    当我们把数据点带入目标函数并整理,我们发现这只是一个简单的双变量二次函数,其解空间如上右图所示,即只有一个全局最小点。 此时,极值点即为全局最小点。因此,我们令偏导数为0,则可以求出一个解。

    这里写图片描述

    上面我们已经根据偏导为0求出了线性回归的统一解,但是这种方法并不是一直有效的,特别是矩阵求逆困难或者不能求逆时。为此,这里引入另外一种经典的数值优化方法 —— 梯度下降法。

    梯度下降法,又称最速下降法。顾名思义,即在解空间中沿着下降速度最快的方向进行搜索。最简单的,一条直线,其梯度就是其斜率,那么我们沿着斜率的反方向移动,数值下降的最快。上左图中蓝色曲线表示 \(f(x,y)=-(cos^2x+cos^2y)^2\), 下面的红色箭头表示每一点的梯度。

    于是,简单的梯度下降方法就是初始化参数后不断迭代执行 计算梯度 <——> 更新参数,直至目标函数值满足要求。

    这里写图片描述

    由于梯度下降算法需要随机初始化参数,因此当解空间有多个极小值点时,梯度下降算法有可能会陷入局部最优。

    这里写图片描述

    线性回归用于连续数值回归,逻辑回归则用做离散的二分类。比如,肿瘤可以分为良性肿瘤与恶性肿瘤,一般需要病理切片才可以确诊,但可以通过观察肿瘤尺寸来为初步判定提供指导。上图横轴表示肿瘤尺寸,纵轴非0即1表示是否为恶性肿瘤。我们可以利用前面的线性回归方法找到一条直线,然后医生诊断时可以将患者的肿瘤尺寸代入直线方程,如果回归得到的数值大于0.5则判断为恶性肿瘤。

    上面的例子其实说明了:回归 + 判决 ——> 分类。

    但是,如果患者问医生:“我有多大几率是恶性肿瘤?” 医生该怎么回答。

    这里写图片描述

    为了获得有意义的概率输出,我们需要追加一个Logistic非线性函数。由于该函数长得像“S”形,所以又叫Sigmoid函数。 该函数可以把无穷区间内的数值压缩到 [0,1] 之间。

    于是,我们的模型假设,完整的逻辑回归,相当于线性回归加上一个非线性Logistic函数。而我们的代价函数也变成了交叉熵。

    这里写图片描述

    原始的逻辑回归只能用于处理二分类问题,但实际中更多的问题其实是多分类问题。最简单的将二分类技术应用于N分类问题的方法是:训练N个二分类器。

    这里写图片描述

    上面我们使用了最简单的线性假设,当我们的模型假设上升为更高阶的非线性模型时,我们便引入了非线性回归。

    非线性回归其实和线性回归很多地方非常相似,但有一点需要注意,那就是 过拟合 的问题。上左图是一个典型的一次模型欠拟合的示例,欠拟合表示模型能力不足以描述数据分布;当采用二次模型时,数据拟合就比较合理了;但是当采用更高阶的四次模型时,我们会发现曲线 过度 拟合了数据,虽然曲线经过了每个样本点,但直观上这并不是我们想要的。

    这里写图片描述

    在上一张PPT中,我们通过画图的形式比较直观的观察了欠拟合和过拟合的样子。这里引入 Bias(偏差)Variance(方差)来定量的描述这几种模型状态。

    偏差: 偏差描述的是模型的准确性,偏差比较大表明模型欠拟合。在靶标图上表示为:落点远离靶心。

    方差: 方差描述的是模型的稳定性,方差比较大通常表示过拟合。在靶标图上表示为:落点非常散乱。

    偏差的概念比较好理解,方差的概念可能还需要再次解释一下。 大家可能听说过Bagging方法:采用同一种模型假设,有放回地从训练数据中抽取一部分数据,然后重复得到N个模型。如果这N个模型实际测试时表现差异很大,就可以认为是高方差。

    这里写图片描述

    过拟合在模型训练中是经常遇到的问题。防止过拟合的一个有效方法就是控制模型的训练程度。

    我们通常会将数据划分为两部分(训练集和测试集)或者三部分(训练集、验证集和测试集)。训练集用来学习模型参数,比如逻辑回归中的直线斜率和截距;验证集用来调整一些模型超参数,比如逻辑回归分类恶性肿瘤中,我们将概率阈值设为0.5;测试集用来测试模型的性能。

    我们可以在训练过程中不断绘制训练误差和测试误差相对训练时间的变化曲线,通过观察曲线我们来判断是否过拟合。显然,测试误差逐渐增大,训练误差持续减小,二者差距逐步扩大,表明模型正在经受过拟合的风险。

    这里写图片描述

    降低过拟合最有效最直接的方法还是增加更多高质量的训练样本。有些时候,冥思苦想怎么解决过拟合,还不如多搞点数据立竿见影。因为,数据多了通常更利于我们发现和学习统计规律。

    这里写图片描述

    另外一种普遍使用的防止过拟合的方法就是控制模型的复杂度。显然从前面的例子我们知道,复杂的模型更容易过拟合,但过于简单的模型又容易欠拟合。 那我们该如何选择一个合适复杂度的模型?一种比较呆的方式是准备一系列复杂度由低到高的模型进行训练,然后观察其测试集表现。

    通过观察不同的模型表达式,我们可以发现如果对高阶项的系数加以约束,那么高阶模型便可以退化为低阶模型,从而降低模型复杂度。于是,我们修改之前的代价函数,在原来的基础上增加对参数的约束,主要包括L1正则化(绝对值)和L2正则化(平方)。

    这里写图片描述

    L1和L2正则化都有缩小参数的作用。

    但L1会倾向于使得参数稀疏化(一些值为0);L2倾向于使得参数稠密地接近于零。关于这一点的解释,可以从梯度上认识:L2的梯度在接近0点附近时会变得很小,这会明显放缓参数的更新;但L1的梯度是保持恒定的,即会一直以大学习率更新参数。另一种解释是从解空间来看,平方误差项和L2正则项的交点更容易出现在凸点处。

    这里写图片描述

    我们之前提到的线性模型加上一个阶跃函数就可以构成一个 单层感知机。 同样地,也有多变量单层感知机。单层感知机可以轻松解决 “与” 问题。

    这里写图片描述

    但是单层感知机的线性分类能力并不足以解决 “异或”问题。

    这里写图片描述

    理论证明,多层感知机,只要节点足够多,就可以逼近任意非线性函数。证明很简单,无限阶跃信号求和可以任意逼近。

    这里写图片描述

    既然了解到了多层感知机,那么使用MLP对图像进行分类也是理所当然的了。比如我们要对手写数字进行识别,图像大小为 28x28=784。 那么这个问题就可以如上图所示解决:输入784个变量,中间有一个隐藏层,然后输出10个数值用于对应数字0-9的概率。上面的三层感知机,包含一个输入层、一个隐藏层、一个输出层,但实际只拥有两级参数。另外,之所以称中间的层为隐藏层,大体是因为中间东西太多看不清楚,而我们只能看清输入和输出。

    这里写图片描述

    但是当我们的待分类图片特别大时,比如做汽车分类。假设彩色图像宽和高分别为400和300,则像素个数为360000,如果我们第一个隐层有N个节点,那么单单是第一层的参数就有360000*N这么多。所以MLP的一大缺点就是参数太多,参数过多带来的是硬件设备的压力、训练的难度以及过拟合的风险。

    这里写图片描述

    MLP的缺点几乎注定了其在机器学习的早期阶段难有大的作为。早期的机器学习方法大多属于两段式方法。第一段:根据先验知识提取一些高级的特征,比如SIFT、LBP、颜色直方图等。这些特征基本都是人为设计的,然后用于描述图像颜色、纹理、结构之类的关键信息。原始的像素信息可以认为是低级的特征,维度很高;而特征提取可以看作一个变相的降维。第二阶段:利用之前提取的高级特征,然后结合一些具体的分类和回归方法。

    这里写图片描述

    所以纵观MLP的历史发展,大致有三个重要的阶段。早期的单层感知机不能解决异或问题,后来的多层感知机尽管有着万能逼近定理结合梯度反传算法的支持,但因为时代的局限性还是被SVM打压。一直到后来的卷积神经网络。

    这里写图片描述

    卷积神经网络的成功除了算法上的进步,时代背景环境的发展也是重要因素。

    • 卷积神经网络通常有大量参数需要学习,因此计算机硬件计算能力的提升,特别是GPU的发展,为神经网络的发展提供了重要的支撑。当然,卖显卡的NVIDIA也起飞了。
    • 另外就是互联网的发展使得图像视频资源大大丰富起来,神经网络已经有机会获得其所需的百万级别规模的训练数据。
    • 当然,众多研究人员在神经网络训练方法、机理探究等方面做出的突破也是CNN成功的重要因素。

    这里写图片描述

    最后,在第一部分“相关基础”环节,再提一下 “监督学习”“非监督学习”概念。

    所谓的学习,就是 举一反三。 用已有的知识来解决类似的已知的或未知的问题。

    我们前面提到的 分类回归都属于监督学习,因为我们的训练数据是有 标签的。我们训练的对不对、准不准,是可以通过和真实结果(ground truth)直接进行对比而知晓的。就比如说,大家为了考试去刷题,题目都是有答案的,这样我们才能不断纠错反馈进步。

    但是还有另外一种学习,叫做 无监督学习,无监督学习最难的地方在于我们没有 标签。目前的无监督学习更多的是解决 聚类 的问题。 一个经典的无监督学习的例子叫做 “鸡尾酒会问题”,是计算机语音识别领域的一个问题。当前语音识别技术已经可以以较高精度识别一个人所讲的话,但是当说话的人数为两人或者多人时,语音识别率就会极大的降低,这一难题被称为鸡尾酒会问题。(通信信号处理专业,有些人会称之为盲信号分离或者信号的盲原分离。)

    这里写图片描述

    深度卷积神经网络可以认为就是高级点的 多层感知机。 深度卷积神经网络的深入学习需要阅读大量的论文,可以百度Github开源项目 —— “深度学习论文阅读路线图”。

    这里写图片描述

    深度卷积神经网络(DCNN)中 “Neural” 一词来源于神经元模型。一个典型的生物神经元,是一个多输入单输出的信息处理单元。而我们的感知机模型基本就是因此而来的。

    这里写图片描述

    “Network” 的概念也很清晰。生物学家发现人类大脑处理任务是分层的,同时众多神经元协同工作共同成了功能强大的神经网络。

    这里写图片描述

    “Deep” 形容的就是网络的层数。早期的感知机可能只有3层(一个输入层、一个输出层、一个隐藏层),但是最新的DCNN已经超过了1000层。

    这里写图片描述

    “Convolution” 是一种特殊的 “采样” 方式。 前面我们看到的感知机的输入都是一个一个的数值,尽管我们可以将一幅图像拉成一个矢量并送入感知机,但这样却会极大削弱图像固有的 局部相关性。为了更好的保留局部相关性信息,最直接的方式就是整块整块的输入,具体实现起来很像滑动窗口。 学过数字信号处理或者进一步选修过数字图像处理的,应该对卷积这一概念比较熟悉。

    这里写图片描述

    我们注意到,深度卷积神经网络的构成是 分层的 这一概念带给我们最直观的感受是我们可以像组装乐高积木一样,用不同功能的模块来构成千奇百怪的网络模型。下面我们就介绍一些常用的模块 —— 层。

    这里写图片描述

    首先当然是全连接层。这层很简单,而且我们前面提到的多层感知机默认就使用了这种结构。该层会默认将任意维度的输入首先 “平铺”成一维矢量,然后执行y=wx+b的操作。 需要学习的参数主要有w和b。尽管全连接层参数通常比较多,但由于我们可以利用很多高度优化的基础线性运算库(比如MKL、OpenBLAS等),因此执行效率还是蛮高的。

    这里写图片描述

    由于DCNN更多的被用来处理图像,因此卷积层的使用频率是最高的。 当把卷积看作滑窗的时候,其实我们可以很容易想到有哪些有关卷积的超参数需要我们提前设置好:窗口大小,我们一般称之为卷积核大小;卷积核的个数;窗口的滑动步长;还有就是图像边缘是否需要填补。我们除了要能够计算清楚卷积后的输出维度之外,还必须清楚的是:每一个卷积核通常都是3D的,以彩色图像为例,一个卷积核除了有宽和高两个维度外,还有第3个维度用于处理RGB通道。

    尽管卷积的操作稍显复杂,但还是属于线性操作,因为其本质还是加权求和。

    这里写图片描述

    Pooling,中文通常翻译为 池化。 Pooling层的操作方式和卷积很像,都是滑动窗口,但没有需要学习的参数。Pooling有Max Pooling 和 Average Pooling两种。前者返回窗口范围内的最大值,后者返回窗口内数值的均值。

    这里写图片描述

    Dropout层用来减轻网络过拟合的风险。Dropout没有需要学习的参数,只是需要提前设定一个概率p。训练时,按照一定概率p将输出置0;测试时,启用所有节点,但为了数值均衡需要将输出乘以(1-p)。

    我们可以简单思考下Dropout防止过拟合背后的原理。

    • 让输出更稀疏,而稀疏一直都是重要的正则化手段;
    • 随机输出置0,相当于给训练引入更多干扰。虽然增加训练难度,但也会让模型更鲁棒;
    • 由于是随机操作,相当于每次都在训练不同的模型。有点类似于Bagging方法。

    这里写图片描述

    卷积通常会使得输出的宽和高变小,反卷积则致力于将输出尺寸变大。反卷积最早应用在图像的语义分割上,因为语义分割要求输出和输入一样大小。 反卷积的操作方式类似于卷积,只不过会实现对输入进行插值或者说填空。

    这里写图片描述

    我们在前面已经接触到了Sigmoid激活函数。 激活函数通常都是非线性变换,其主要目的也是为了让网络拥有更强大的非线性表示能力。Sigmoid和TanH因为可以对数据范围进行压缩,有些特殊的场合还是有需求的;但更多的网络所采用的其实还是ReLU激活函数(包含一些变种,但还是ReLU更常用)。

    这里写图片描述

    之所以ReLU会取代Sigmoid而占据主流地位,主要原因有:

    • ReLU计算复杂度低,包括求导也简单;
    • ReLU可以解决Sigmoid带来的梯度消失问题,因为ReLU对有效值的梯度始终为1,而Sigmoid的梯度值总小于1/4;
    • ReLU可以让输出稀疏,稀疏是个正则化的好东西;

    这里写图片描述

    接下来开始介绍几个常用的损失函数,首先是Sigmoid交叉熵。 其一般用于二分类问题,也可以用于相互不独立的1对多问题。比如一个实际上包含3个二分类的问题:是否喜欢吃西瓜?是否喜欢吃草莓?是否喜欢吃苹果?可以存在同时喜欢3种水果的人。此外还需要注意的是,在进行Sigmoid概率归一化时要注意数值溢出的问题,比如 \(x\) 远小于0,那么我们计算时就不应当使用 \(1/(1+e^{-x})\) 而应当使用 \(e^x/(1+e^{x})\)

    这里写图片描述

    实际当中我们遇到更多的其实是独立N分类问题,比如之前提到的手写数字识别分10类,这个时候我们通常使用Softmax Loss。其实该loss也是一种交叉熵,但由于往往使用one shot label,即每个样本的标签是一个 1xN 维矢量,且矢量只有对应具体类别的位置处数值才为1,其余全部为0,因此该loss函数会退化为 \(-log(p_i)\)的简单形式。

    为了使得输出数据范围在 [0,1]之间且之和为1,我们通产会采用softmax归一化。

    这里写图片描述

    L1和L2 loss通常用于数值回归,其定义比较简单,后面会给出具体的例子。此外,还有以下几点补充:

    • L2 Loss中,之所以除以2N,只是为了在求导时比较方便而已;
    • L1 和 L2哪个更好用一点,更多的时候真的要看经验;
    • 通常在L1 和 L2 Loss之前都会对输入做归一化(常用单位方差归一化),以防止数值溢出和Loss动荡;


    —————————————————————————————————————————————

    接下来介绍一些神经网络求解优化相关的一些东西:

    这里写图片描述

    神经网络的优化求解,主体上是基于 反向传播这一框架,然后使用 梯度下降 这一核心算法。
    我们需要梯度下降来更新参数,那么就需要计算每一个参数的偏导数。反向传播其实就是我们熟悉的链式求导,这主要是因为我们的网络是分层的,可以看作函数嵌套。

    因为链式求导是一个连续乘积的形式,如果每个中间梯度的幅值都比较小,这将导致最后计算出的梯度异常小,这就是所谓的 梯度消失现象,反之也有所谓的 梯度爆炸。 这其实我们放弃 Sigmoid 而改用 ReLU激活函数的原因所在,ReLU求导梯度幅值保持为1。

    这里写图片描述

    在前面我们就已经介绍过 梯度下降 这一优化方法。事实上,我们之前介绍的方法确切来说应当称为 批量梯度下降,因为我们将全部训练样本(点)带入了我们的代价函数中来计算梯度。 这样做的好处是梯度估计准确,但是缺点也很多:当考虑所有样本时,计算压力会很大(内存不够用),同时也很难在线添加新的样本。

    这里写图片描述

    我们采用一种简化的方式:计算某个样本的梯度,用一个样本的梯度去代替整体样本的梯度。

    因为我们是用一个样本的梯度来估计整个数据集的梯度,具有一定的的随机性(误差),因此称为随机梯度下降。

    这里写图片描述

    为了提高效率,我们采用一个折衷的版本。我们使用小批量的(mini-batch)训练数据来估计梯度。事实上,绝大部分场景下我们使用的都是该处理方式。

    这里写图片描述

    动量的引入是为了加速SGD的优化过程。简单分析下公式就会发现,带动量的SGD在计算当前梯度时会加上一部分上次的梯度。由于梯度是带方向的矢量,当前梯度与上次梯度进行加权,如果方向一致,则累加导致更新步长变大;如果方向不同,则相互抵消中和导致更新趋向平衡。

    这里写图片描述

    另外就是参数初始化的问题。我们一般采用随机参数初始化,主要是为了破坏网络的对称性。试想,如果所有参数都初始化一样,那网络的很多连接就会因为重复而浪费。随机通常采用均匀分布和高斯分布,因为二者都只需要均值和方差两个参数便可以控制。通常都是采用零均值,置于方差早期大多根据经验设置,后来也有人进行具体研究,比较有代表性的就是 XavierMSRA方法,二者的出发点基本一致。

    神经网络可以说在学习一个非常复杂的非线性表达式来描述输入数据的分布。学习到最后收敛了应当是一个稳定的分布,而每一层的分布也应当是稳定的。但可惜的是,每一层的参数每次都在更新导致其分布也在变化,这不利于 “信息的流动”。因此,我们应当尽量保证每一层同分布。于是Xavier经过推导认为某一层参数的方差应当同时等于输入和输出神经元个数的倒数,折衷后就有了上面的表达式。 MSRA的推导也类似,只不过采用了高斯分布。

    这里写图片描述

    为了保证分布稳定统一,前面设计了特殊的网络参数初始化策略。事实上,我们还可以通过更加强硬的手段在每一个卷积层或者全连接层后追加一个Batch Normalization层来对输出进行0均值单位方差归一化。 归一化的方法很简单:减去均值除以方差。由于均值和方差是通过一个batch的样本计算得到的,因此叫Batch Normalization。


    —————————————————————————————————————————————

    接下来介绍一些经典的神经网络模型:

    这里写图片描述

    LeNet被美国银行和邮政系统用来识别支票、邮政编码中的的手写或机打数字。LeNet共有7层,主要使用了卷积层和全连接层,参数也不算多,但准确性很高,其可被商用便可证明。

    早期的神经网络研究领域一片灰暗,LeNet就像那一点星火。

    这里写图片描述

    以深度卷积神经网络为代表的这场AI大火真正热烈起来应该始于2012年的AlexNet。 在ImageNet这一大规模图像识别比赛上,基于DCNN的ImageNet以压倒性的优势夺冠。尽管当时很多人表示对ImageNet的通用性特别是可解释性很怀疑。因为它的参数太多了,超过60M的参数使得ImageNet变成了一个黑箱,我们根本无法了解这个箱子里面所包含的隐层到底学到了什么。

    效果好才是王道,DCNN很快流行起来。

    ImageNet使用了很多优化技术来提高模型效果,比如我们已经介绍过的ReLU激活层和Dropout层。还有LRN层,虽然现在已经不是很常用了,大家现在基本都在使用BatchNorm层。另外两种值得一提的就是Data Augmentation(数据扩增)和 Group 卷积。

    这里写图片描述

    Data Augmentation(数据扩增)是在深度学习中普遍使用的一种技术或者说策略,其目的就是为了增强训练数据的多样性。一方面,神经网络模型通常有巨量参数,即模型很容易过拟合,因此增加数据多样性可以有效降低过拟合的风险。另一方面,深度学习内部的学习机理我们其实并不清楚,我们其实不能高估其能力,比如简单的手写数字像素取反就会导致错误的识别,因此增加更多各种各样的训练样本,有助于提高模型的泛化能力。(所谓的泛化能力是指模型在未曾见过的数据上的表现)

    这里写图片描述

    AlexNet中使用了Group卷积这一特殊操作,在了解该卷积之前我们先说一下普通卷积是怎样实现的。由于卷积的普遍使用,因此弄清楚卷积的原理和实现方式是很重要的。

    卷积最常用的实现方式是 im2col + GEMM(图像块展开 + 矩阵乘法)。我们知道卷积的原理就是滑动窗口,然后窗口内做点积运算。滑窗意味着循环,如果我们每滑动一次就做一次点积运算,这样效率就太低了。于是我们把整个过程分为两步:第一步对图像滑窗遍历,每滑动一次就把图像块展开作为临时矩阵的一行;第二步直接进行一个大的矩阵乘法。

    上述这种卷积实现方法速度较快的原理其实就是用空间换时间。因为要把每次滑动的块展开并存储,因此内存占用较大。 因为可以把很多小的点积运算变成一个大的矩阵乘法,因此效率更高。

    这里写图片描述

    普通的卷积其卷积核是3D的,且第3个维度等于输入feature map的channel数,如上图顶部所示。在AlexNet中使用了一种与众不同的Group卷积,以Group=4为例,此时每个卷积核的第3个维度仅仅等于输入feature map的channel数的1/4。

    从上图我们可以看出,如果使用了Group,那么输出的维度不会有变化,但参数的数量却会平方倍减少。当初AlexNet使用Group=2的原因仅仅是GPU显存不够,但却没有料到这一操作在目前很多神经网络加速方法中被用的风生水起(大佬就是大佬)。

    这里写图片描述

    VGGNet可以看作是AlexNet的加强版。提升神经网络表达能力最直接的方法就是把网络变宽变深,VGGNet在宽度上作了进一步增强,但模型的参数量也多的让人窒息。

    这里写图片描述

    通常把网络变深所带来的收益要高于把网络变宽。 Network in Network 简称NIN,采用了标准的模块化设计。NIN的一大亮点是大量使用了1x1卷积,以少量的参数就可以增加层的深度。此外,1x1卷积可以省略im2col步骤,直接通过矩阵乘法完成,因此效率更高。

    这里写图片描述

    如果说VGGNet以简单粗犷取胜,那么GoogLeNet可以说把设计玩到了极致。GoogLeNet为了向LeNet致敬,特意将名字中的字母 “L”大写。

    GoogLeNet共有22个卷积层,模型大小约50MB,远小于VGGNet的(约)500M,但性能很接近。GoogLeNet大体上也是模块化设计,其模块叫做 “Inception module”。“Inception”一词来源于电影盗梦空间,因为里面小李子说 “We need to go deeper”。该标准模块中对输入施加不同的卷积核,然后将多个分支的特征进行拼接,这样便可以综合利用不同的特征。此外,由于网络太深可能导致梯度消失,因此整个网络共使用了3个Loss来帮助梯度反传。

    这里写图片描述

    GoogLeNet有好几个进化版本。对于V3版本,主要的改进是用小卷积核级联来代替大卷积核,比如两个3x3卷积层相当于一个5x5卷积层,但参数量只有18/25。然后也用1xn卷积后跟nx1卷积来代替nxn卷积,这样参数量就只有2/n。

    这里写图片描述

    GoogLeNet网络比较深性能也不错,但训练难度比较高,明显比VGGNet要高,所以VGGNet流传好像更多一点。

    ResNet,又叫“残差网络”,其最大的贡献是为深层网络的训练提供了一个突破口。ResNet34,ResNet152以至于后面1001层的也出现了。ResNet和普通的直线型结构相比,主要是多了一些 “跳接”。

    这里写图片描述

    DenseNet相比ResNet最大的改进就是引入了更多的 “跳接”,同时将ResNet中的 “+” 操作改为了特征拼接。

    未完待续

    展开全文
  • 本文档为黄海广翻译的学习笔记,非常详细,感谢作者做出的贡献~
  • 深度学习中文版第二版20161218

    千次阅读 2016-12-19 10:06:13
    2016年12月18号深度学习经典教材中文版校订完成。 深度学习爱好者共勉。 网盘下载:链接:... 特推荐一本讲义神经网络与深度学习讲义20151211 网盘下载:链接:http://pan.baidu.com/s/1c12RlYC 密码:6c7i

    2016年12月18日,据最新消息,深度学习经典教材中文版校订完成。

    深度学习爱好者共勉。

    网盘下载:链接:http://pan.baidu.com/s/1nuINTmp 密码:s0ep


    特推荐一本讲义神经网络与深度学习讲义20151211

    网盘下载:链接:http://pan.baidu.com/s/1c12RlYC 密码:6c7i

    推荐博客深度学习机器学习资料集锦:http://blog.csdn.net/u012162613/article/details/42059981

    展开全文
  • 斯坦福 CS229 机器学习中文讲义 第一部分到第三部分 第四部分 生成学习算法 第五部分 支持向量机 第六部分 学习理论 第七部分 正则化与模型选择 感知器和大型边界分类器 K 均值聚类算法 ...深度学习...
  • 而且台式英语不像原生的那么拗口,看着挺熟悉的~一天入门(但也仅仅是入门而已...)深度学习不是梦,只要有高数基础都能看懂。好东西要分享,需要的童鞋请拿走~ 链接: ...
  • 本篇文章我们给出了一份详尽的深度学习教程,该教程来自于台湾大学的李宏毅教授主讲的“一天搞懂深度学习”课程的全部PPT讲义,该讲义为268页图文。作者从神经网络的原理、框架形式以及将来的发展进行了详细的介绍,
  • 最近看了上海交大张志华教授的精品课程 《机器学习导论》和《统计机器学习》,觉得讲的很深入,适合学习机器学习和深度学习的研究者深入学习,张教授讲的比较偏向理论,需要一定的数学基础。 至于广大网友最关心的...
  • 吴恩达老师深度学习课程完整笔记

    万次阅读 多人点赞 2019-04-30 02:09:06
    为了方便学习深度学习课程,转载一个吴恩达老师的一个深度学习笔记,转载的网站是下面这个 https://blog.csdn.net/red_stone1/article/details/80207815 从去年8月份开始,AI界大IP吴恩达在coursera上开设了由5们课...
  • 台湾李宏毅教授深度学习

    千次阅读 2016-11-13 12:13:54
    1、深度学习,是一个矩阵计算过程,输入层,隐含层,输出层 2、神经元一层层计算 3、链接视频
  • 吴恩达老师机器学习课程中文文字版整理: https://github.com/fengdu78/Coursera-ML-AndrewNg-Notes吴恩达老师深度学习课程中文文字版整理: https://github.com/fengdu78/deeplearning_ai_books关注更新。...
  • 本篇文章我们给出了一份详尽的深度学习教程,该教程来自于台湾大学的李宏毅教授主讲的“一天搞懂深度学习”课程的全部PPT讲义,该讲义为268页图文。作者从神经网络的原理、框架形式以及将来的发展进行了详细的介绍,...
  • CS294--深度强化学习

    千次阅读 2017-01-09 20:58:45
    加州伯克利计算机教程 2017年春季 CS294 深度强化学习官方网站 【包括教学大纲、视频讲义、阅读材料】中文连载翻译地址 感谢杜客大神~
  • 更多好玩的机器学习教程: 进入袋马学院领一份 ,全部免费
  • 1新智元编译1来源:Linkedin译者:胡祥杰【新智元导读】本文是2016 台湾资料科学年会前导课程“一天搞懂深度学习”的全部讲义PPT(共268页),由台湾大学电机工程学助理教授李宏毅主讲。作者在文中分四个部分对神经...
  • 《一天搞懂深度学习》--李宏毅

    千次阅读 2018-01-31 13:05:59
    【新智元导读】本文是2016 台湾资料科学年会前导课程“一天搞懂深度学习”的全部讲义PPT(共268页),由台湾大学电机工程学助理教授李宏毅主讲。作者在文中分四个部分对神经网络的原理、目前存在形态以及未来的发展...
1 2 3 4 5 ... 20
收藏数 3,851
精华内容 1,540
热门标签
关键字:

深度学习讲义