吴恩达【深度学习工程师】之《神经网络和深度学习》小白笔记----【第一周】深度学习概论
本笔记记录的是吴恩达老师在网易云课堂开设的深度学习微专业课程。
网易云课堂深度学习微专业的地址:http://mooc.study.163.com/smartSpec/detail/1001319001.htm
目前为免费课程,希望大家有时间有精力听听。
深度学习目前是一门火热的课程,一直对这个也比较感兴趣,正好在网易云课堂目前有这门课程的讲解,还是吴恩达老师的课程。为更好的学习与理解课程内容,做笔记是很有必要的。
====================分割线==========================
吴恩达【深度学习工程师】微专业课程包含以下五门课程:
1、神经网络和深度学习;
2、改善深层神经网络:超参数调试、正则化以及优化;
3、结构化机器学习项目;
4、卷积神经网络;
5、序列模型;
本节介绍《神经网络与深度学习》系列第一周:深度学习概述。
=====================分割线==========================
1.2 什么是神经网络?
图1 深度学习
简单来说,深度学习(Deep Learning)就是指训练神经网络(Neural Network)。那么,什么是神经网络呢?下面我们将通过一个简单的例子来引入神经网络模型的概念。
图2 一个简单的神经网络
首先,介绍了一个房价预测的问题,一共有六个房子。在这里仅仅考虑了房屋面积大小与房价的关系,可以很好的理解,面积越大,房价也就会越高,但是房价也不会为0,甚至是负数。我们已知输入x即每个房子的面积(多少尺或者多少平方米),还知道其对应的输出y即每个房子的价格。根据这些输入输出,我们要建立一个函数模型,来预测房价:y=f(x)。因此有了如图2所示,蓝色的线是根据红色叉叉训练出来的函数,形如这样的形状的线称为“ReLu”。图2就是一个非常简单的神经网络。
图3 神经网络中的“隐藏单元”
当然了,影响房价不可能只有面积这一个特征因素。在图3中,左侧又列出了几个影响房价的因素,size-面积、bedroom-房间数目、zip code-邮编、wealth-富裕程度。这几个作为输入参数x,我们的目的就是要得到一个网络,训练出一个模型,最终能够预测输出参数y的值。图3中,蓝色箭头指的圈圈是神经网络中的“隐藏单元”。神经网络自己决定这个节点是什么,我们只给输入特征,随便神经网络怎么计算。
值得注意的是神经网络,只有你喂给它足够多的数据,关于x和y的数据,给到足够的x、y训练样本,神经网络非常擅长于,计算从x到y的精准映射函数。
这就是一个简单的神经网络。
===============分割线===================
1.3 用神经网络进行监督学习
目前为止,由神经网络模型创造的价值基本上都是基于监督式学习(Supervised Learning)的。监督式学习与非监督式学习本质区别就是是否已知训练样本的输出y。在实际应用中,机器学习解决的大部分问题都属于监督式学习,神经网络模型也大都属于监督式学习。下面我们来看几个监督式学习在神经网络中应用的例子。在监督学习中,输入x,学习得一个函数,映射到输出y。
图4 一些监督学习的应用
如图4所示,每一行代表监督学习下的一个例子。
- 第一个:房价预测。根据训练样本的输入x和输出y,训练神经网络模型,预测房价。
- 第二个:广告点击。这是深度学习最广泛、最赚钱的应用之一。其中,输入x是广告和用户个人信息,输出y是用户是否对广告进行点击。神经网络模型经过训练,能够根据广告类型和用户信息对用户的点击行为进行预测,从而向用户提供用户自己可能感兴趣的广告。前两个问题可以用标准的神经网络模型就可以很好的解决。
- 第三个:图像识别。利用CNN模型。图像识别是近些年来越来越火的课题,而图像识别发展迅速的原因很大程度上是得益于深度学习。其中,输入x是图片像素值,输出是图片所属的不同类别。
- 第四个:语音识别。深度学习可以将一段语音信号辨识为相应的文字信息。
- 第五个:语言翻译。例如通过神经网络输入英文,然后直接输出中文。第四个和第五个这两个问题为序列数据,一般采用CNN模型。
- 第六个:自动驾驶。通过输入一张图片或者汽车雷达信息,神经网络通过训练来告诉你相应的路况信息并作出相应的决策。这个是一个比较复杂的问题,采样混合模型。
图5 SNN、CNN、CNN模型示例
如图5所示,第一个为标准神经网络(SNN),符合上一节介绍是房价问题。
第二个为卷积神经网络(CNN),通常用于图像数据。
第三个为循环神经网络(RNN),适合处理一维序列数据。
图6 结构化数据与非结构化数据
另外,机器学习常常处理结构化数据与非结构化数据,如图6所示。结构化数据是数据的数据库,意味着每个特征,例如图6中Size-面积、User Age-用户的年龄,都有清晰的定义。相反,非结构化数据指的是,比如音频、图像,以及要识别图像或文本中的内容。这里的特征,可能是图像中的像素值,或者是文本中的单个单词。一般来说,非结构化数据相比结构化数据来说,它让计算机理解起来更困难。
===============分割线============
1.4 为什么深度学习会兴起
如果说深度学习和神经网络背后的技术思想已经出现数十年了,那么为什么直到现在才开始发挥作用呢?接下来,我们来看一下深度学习背后的主要动力是什么,方便我们更好地理解并使用深度学习来解决更多问题。
深度学习为什么这么强大?下面我们用一张图来说明。如图7所示,横坐标x表示数据量(Amount of data),纵坐标y表示机器学习模型的性能表现(Performance)。
图7 深度学习
上图共有4条曲线。
- 其中,最底下的那条红色曲线代表了传统机器学习算法的表现,例如是SVM,logistic regression,decision tree等。当数据量比较小的时候,传统学习模型的表现是比较好的。但是当数据量很大的时候,其表现很一般,性能基本趋于水平。
- 红色曲线上面的那条黄色曲线代表了规模较小的神经网络模型(Small NN)。它在数据量较大时候的性能优于传统的机器学习算法。
- 黄色曲线上面的蓝色曲线代表了规模中等的神经网络模型(Media NN),它在在数据量更大的时候的表现比Small NN更好。
- 最上面的那条绿色曲线代表更大规模的神经网络(Large NN),即深度学习模型。从图中可以看到,在数据量很大的时候,它的表现仍然是最好的,而且基本上保持了较快上升的趋势。
值得一提的是,近些年来,由于数字计算机的普及,人类进入了大数据时代,每时每分,互联网上的数据是海量的、庞大的。如何对大数据建立稳健准确的学习模型变得尤为重要。传统机器学习算法在数据量较大的时候,性能一般,很难再有提升。然而,深度学习模型由于网络复杂,对大数据的处理和分析非常有效。所以,近些年来,在处理海量数据和建立复杂准确的学习模型方面,深度学习有着非常不错的表现。然而,在数据量不大的时候,例如上图中左边区域,深度学习模型不一定优于传统机器学习算法,性能差异可能并不大。
其中,数据量的几何级数增加,加上GPU出现、计算机运算能力的大大提升,使得深度学习能够应用得更加广泛。另外,算法上的创新和改进让深度学习的性能和速度也大大提升。举个算法改进的例子,之前神经网络神经元的**函数是Sigmoid函数,后来改成了ReLU函数。之所以这样更改的原因是对于Sigmoid函数,在远离零点的位置,函数曲线非常平缓,其梯度趋于0,所以造成神经网络模型学习速度变得很慢。然而,ReLU函数在x大于零的区域,其梯度始终为1,尽管在x小于零的区域梯度为0,但是在实际应用中采用ReLU函数确实要比Sigmoid函数快很多。
所以说,现在深度学习如此强大的原因归结为三个因素:
- Data
- Computation
- Algorithms
图8 三因素
构建一个深度学习的流程是首先产生Idea,然后将Idea转化为Code,最后进行Experiment。接着根据结果修改Idea,继续这种Idea->Code->Experiment的循环,直到最终训练得到表现不错的深度学习网络模型。如果计算速度越快,每一步骤耗时越少,那么上述循环越能高效进行。
===================分割线=========================
【第一课第一周作业】
https://zhuanlan.zhihu.com/p/31256876
================分割线================
参考文章:
=============END============