神经网络和深度学习

点击量:153

引言

2017年8月8日,吴恩达正式发布了Deepleanring.ai,一个发布在Coursera上的深度学习系列课程Deep Learning Specialization,希望将人工智能时代的基础知识传播到更多人身边。网上对这门课的评价很高,算是深度学习的必备课程了,所以想入门深度学习的同学千万不要错过。但在enroll这门课之前,个人强烈建议先学完同样由Andrew Ng教的Machine Learning,这门课才是最基础的机器学习课程,里面包含了很多最基本,最重要的思想和概念。学完了这门课再来上这门深度学习会感觉比较轻松吧,整体难度并不大,所以在课程发布的前几周我就全部学完了(那时候只发布了前三课),主要是因为课程开放的前一周是免费的,所以学的非常快。但同时也很仓促,也因此没有做笔记。导致的结果就是现在你再问我这些课程到底讲了什么,我已经忘得差不多了。现在又得重新花时间去学习,这是很浪费时间的。所以在学习新知识的过程中,适当地记录和梳理是非常有必要的。从今天开始,我会把这门深度学习课程的学习笔记整理到博客里,并不会面面俱到,只会记录于我而言很重要的知识点。

Deep Learning Specialization系列的深度学习课程分为五个子课程:

  • Neural Networks and Deep Learning
  • Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization
  • Structuring Machine Learning Projects
  • Convolutional Neural Networks
  • Sequence Models

本文总结第一个课程:Neural Networks and Deep Learning,这块比较基础,大部分内容已经在Coursera Machine Learning Week 4&Week 5中被cover过了,具体的也可以参考我的文章:Machine Learning-神经网络(Neural Network)

Week1-Introduction to Deep Learning

Supervised Learning with Neural Networks

  • 目前,深度学习技术主要在以下领域有着很成功的应用:
Input(x) Output(y) Application Model
Home Features price Real Estate Standard NN
Ad, user info Click on ad?(0/1) Online Ad Standard NN
Image Recognzing Object Photo tagging CNN
Audio Text transcript Speech recognition RNN
English Chinese(or other) Machine translation RNN
Image, Radar info Position of other cars Autonomous driving Custom

从上面的几个例子可以看出,针对不同的应用场景,我们会选择不同的神经网络模型。对于房价预测,广告预测这种一般的监督学习问题,我们往往采用标准的神经网络模型,即Standard NN。而对于图像处理,一般是采用卷积神经网络(Convolution Neural Network),即CNN。对于处理类似于语音和翻译这种时序信号,我们一般会采用带有记忆功能的循环神经网络(Recurrent Neural Network),即RNN;而对于自动驾驶,我们可能会选择一些复杂的,高度自定义的网络模型。

  • 结构化(Structured Data)和非结构化数据(Unstructured Data)

    结构化数据:一般指的就是数据库里的数据
    非结构化数据(Unstructured Data):比如语音,图片,文本等

    Imgur

  • 为什么现阶段深度学习能取得很大的成功?(Why is Deep Learning taking off ? )

    下面这个图表中,横轴表示标签数据量(Amount of labeld data),纵轴则表示算法的性能。

    Imgur

    这个图表能解读出很多东西:

    • 在数据量很小的情况下,神经网络和传统的机器学习算法在性能上差别并不大(不分伯仲)
    • 传统的机器学习算法在数据量达到一定程度之后,性能的提升非常缓慢
    • 神经网络的性能随着数据量的增加会有一个很大的跃升,并且远超传统的机器学习算法
    • 在大数据集下,越大的神经网络,性能越好

    接下来,与其问为什么最近深度学习取得了巨大的成功,不如先问问为什么之前默默无闻?我们都知道,神经网络并不是什么新奇的算法,这玩意儿早在上个世纪五六十年代就被提出来了,之后一直不温不火。为什么呢?这得先从神经网络的特点说起,相比于传统的机器学习算法,神经网络其实是比较臃肿的,它有如下特点:

    • 训练很复杂,参数众多,调参很麻烦
    • 训练时需要很大的计算量
    • 性能的提升很大程度上取决于训练数据集的大小

    而我们知道在2000年以前,在那个时代人类并没有能力收集到大量的数据,那时的我们一直生活在小数据时代,而且计算机的运算能力也跟不上。一些传统的机器学习方法(比如SVM,线性回归,逻辑回归等)在小范围数据集下,针对某些特定的问题已经能得到非常好的效果了,所以神经网络根本派不上用场。但是,随着大数据时代的来临,这一切有了很大的改变,深度学习的成功主要归结于以下几点:

    • Data
      大数据、数字化时代的到来,得益于互联网,智能终端的发展,在过去的20年人类收集到了大量的数据,这是之前的时代所无法比拟的
    • Computation
      得益于CPU和GPU的升级
    • Algorithms
      算法的进步,举个例子,之前神经网络中的激活函数采用的是Sigmoid,后来换成了ReLU(Rectified Linear Unit,线性整流函数)。因为sigmoid函数有个特点,函数曲线越往两端越平滑,那么它的导数(梯度)就会很小,从而导致梯度下降非常缓慢。而ReLU则没有这个问题,它在大于0的区域导数是一个恒定的常数,而在小于0的区域导数为0,因此采用ReLU作为激活函数的神经网络,梯度下降会很快。

Week2-Netural Networks Basics

Logistic Regression as a Neural Network

这一部分主要内容是机器学习的一些基本概念,比如Binary Classification, Logistic Regression, cost function,梯度下降和导数等等,这些不再赘述。

Python and Vectorization

这部分主要讲解如何使用Python进行向量化运算,还有Jupyter的使用。

Week3-Shallow Neural Networks(浅层神经网络)

详细介绍了神经网络的结构(三层,single hidden layer),正向传播,反向传播,随机初始化等。

Week4-Deep Neural Networks(深度神经网络)

所谓深度神经网络不过是多了几层的hidden layer而已,计算方法和浅层神经网络没什么本质的区别。

Parameters(参数)和Hyperparameters(超参)

  • Parameters指的是神经网络学习得到的参数,比如W[1],b[1],W[2],b[2]…

  • Hyperparameters则指的是神经网络本身的参数,比如:learning rate(学习曲率),iterations(迭代次数),hidden layer的数量,hidden units,每一层神经元的数量,激活函数:sigmoid, ReLU…,minibatch size,正则化方法等等

发表评论

电子邮件地址不会被公开。 必填项已用*标注