吴恩达机器学习Course2要点记录

Advanced Learning Algorithms

1、什么是神经网络

本课程course2讲授的神经网络neural networks,包含以下几大部分内容:
①推理(预测),若你从网上下载别人训练好的神经网络参数,然后使用神经网络来做出预测,这也被称为推理
②训练,训练自己的神经网络,比如你有一组示例x和y的训练集,如何为自己训练神经网络的参数
③构建机器学习系统的一些实用建议
④决策树,一种非常强大的学习算法之一。
在神经网络结果跌宕起伏的发展后,在此基础上发展了深度学习deeplearning,应用于语音识别、计算机视觉、文本或自然语言处理NLP等方面,甚至用于气候变化、医学影像、在线广告和产品推荐等,说明机器学习的许多应用领域现在都在使用神经网络。
当你构建人工神经网络或深度学习算法时,不是一次建立一个神经元,你通常想同时模拟许多这样的神经元,对这些神经元输入一些数据并进行计算,将所得的结果作为其他神经元的输入。
考虑一个只有单层的神经网络的例子,对售卖的衣服进行需求预测
在这里插入图片描述
例如用逻辑回归来拟合sigmoid函数,你的预测输出可能是如下图这样
在这里插入图片描述
为了建立神经网络,用字母a(激活:activation)表示这个逻辑回归算法的输出,类似于指一个神经元发送了多少对下游其他神经元的输出,即对已建立的神经元输入一个或多个特征,然后输出一个或多个特征给之后的神经元,在整个神经网络中就是要建立一堆这样的神经元,将它们连接在一起。
考虑本节第一幅图,有四个特征来预测一件衣服是否畅销,分别为:价格、运费、销售量(营销)和原材料,例如通过对这四个特征分析能够得到三个有用的神经元,以试图估计这件衣服被认为是非常实惠的可能性,分别为:可负担性(你要付钱的总额)、意识(用于估计人们对这件衣服的认识)和认知质量(高质量和价格等,例如一件很贵的衣服人们通常认为它的质量很高),并将这三个神经元的输出连接到另一个神经元中(本例即逻辑回归单元),并输出这件衣服称为畅销的概率。
上述三个神经元合在一起在神经网络中称为隐藏层,一层即是一组神经元,以相同或相似的特征作为输入(通常以特征向量的形式输入)并以特征向量的形式输出到另一神经元,最后一层称为输出层,起始特征组成的特征向量称为输入层
故对于本例,我们必须一次一个地检查每个神经元并决定它将从上一层获得什么输入,若这样做的话将有很多很多工作要做,而在神经网络的实现方式中,通常将其上一层的各特征向量及其值都作为该神经元的输入,并通过某一策略来适当地设置参数来解决只关注最感兴趣的特征。
神经网络的作用之一是不需要手动设计它可以学习的功能,使学习问题本身更容易,例如以往有特征x1和x2,要我们自己找到特征x3=x1x2,当你从数据集中训练它时,你不需要进入来明确地决定哪些是特征,例如上例中的可负担性等,相反它会自己弄清楚它在这个隐藏层中使用哪些功能,这就是神经网络,当今世界上最强大的学习算法之一。当你建立自己的神经网络时,你需要做的一个决定是你想要多少隐藏层,每个隐藏层有多少个神经元,这是后续课程中要学习的关于神经网络结构的问题,即为神经网络选择合适体系结构的一些技巧,多层神经网络也称为多层感知机
图像识别的例子
例如一副图像由1000
1000像素组成,其值范围为0-255,可将每一行作为一个特征向量作为神经网络的输入,通过建立一个神经网络来执行例如识别图像中人物的身份这项任务。在各隐藏层中执行不同的任务(特征检测器),在神经网络中没人告诉它每一层该做些什么,你可以通过查看每一层在做些什么,各层之间相互合作,一步步将特征整合并最终传给输出层以决定最终的输出,这些小神经元的可视化实际上对应图像中不同大小的区域
在这里插入图片描述
在这里插入图片描述
上述两幅图展示了在不同数据集上训练这个神经网络的过程,只要给它输入不同的数据,训练好后,神经网络自动学习检测非常不同的特征,从而做出相应的预测

2、神经网络中的层

如何理解每一层神经元做了些什么?下面看看对于sigmoid函数,各层具体做了些并引入一些上标和下标,第一层实际上计算除了z的值:
在这里插入图片描述
将所得的结果以特征向量的形式传给输出层,该例中输出层因为只有一个神经元,输出了一个标量:
在这里插入图片描述
例如输出层计算出一个值为0.84,你可以选择执行或不执行最后一个可选步骤,若你想要一个二元预测,那么通过判断给你最终的预测:
在这里插入图片描述
这就是神经网络的工作原理,每一层都输入一个特征向量,并对其应用一组逻辑回归单元,然后计算另一个特征向量,从一层传递到另一层,直到你得到最终的输出层的计算,这是对神经网络的预测,你可以在最终阶段提出或不提出最终的预测
更复杂的神经网络
当我们说神经网络有四层时,包括所有隐藏层和输出层,而不将输入层计算在内
在这里插入图片描述

在构建神经网络时单位j指的是神经元,其中每个单元都是一个神经元,这里g为逻辑回归中的sigmoid函数,在本例神经网络中也称作激活函数,因为g输出这个激活值,故其有激活功能,这就让你知道如何计算任何层的激活,在之后我们把这个放入神经网络的推理算法中。
推理:做出预测(向前传播)
为了让你的神经网络做出推断或预测,有一种叫做向前传播的算法可以实现这一点。
例子:手写数字识别,为了简单起见,只需识别写的是0还是1,下图是计算隐藏层1的过程,得到a1
在这里插入图片描述
再计算隐藏层2,得a2:
在这里插入图片描述
最后一步计算a3,并将利用它进行最终的预测
在这里插入图片描述

这就是使用向前传播算法的神经网络推理,有了该算法你就可以下载其他人训练好的神经网络的参数,对你的新数据进行推断,进而利用他们的神经网络,与其相反的算法称为反向传播算法,这种类型的神经网络架构最初你有更多的隐藏单元,然后隐藏单元的数量随着你越来越接近输出层而减少

3、TensorFlow

TensorFlow是实现深度学习算法的领先框架之一,另一个流行的工具是Pytorch
代码中的推理
例子:烘烤咖啡豆,两个参数:温度和烘烤时间,如下图所示
在这里插入图片描述
在神经网络中使用TensorFlow进行推理,代码形式如下图所示
在这里插入图片描述
使用TensorFlow框架还涉及到如何加载TensorFlow库以及如何同时加载神经网络的参数w和b等问题。
向前传播的关键步骤有如何计算a1和a2以及可选阈值a2
TensorFlow中的数据
我们在使用线性回归和逻辑回归时,通常使用一维数组(一串数字)来表示输入特征,如下图第三行,在TensorFlow中通常是使用矩阵来表示数据,因为TensorFlow是为处理非常大的数据集而设计的,如下图第一、二行
在这里插入图片描述
tensor是TensorFlow团队创建的数据类型,为了有效地存储和执行矩阵上的计算,今后碰到tensor就把它想象成这几张图上的矩阵就行,可把tensor看作是表示矩阵的一种方式(numpy和tensorflow都可以表示矩阵,这是历史的产物,让你有时候不得不做一些这种额外的转换工作,用好这两个库可以很好地协同工作),隐藏层1的激活如下图所示
在这里插入图片描述
再来看看第二层(输出层)的激活,
在这里插入图片描述
这就让我了解了数据是如何在TensorFlow和numpy中表示的以及两者之间的区别与联系。
构建一个神经网络
在TensorFlow中构建神经网络。在上文我们如果要做向前传播,要初始化数据x创建隐藏层1并计算出a1,接着创建第二层并计算a2,这是一种实现向前传播的方式,如下图所示
在这里插入图片描述

实际上,TensorFlow是实现向前传播的另一种方式,也即在TensorFlow中创建神经网络的不同方法,和之前一样也要创建第一层和第二层,但现在不是你手动获取数据并将其传递到第一层然后把第一层激活传递到第二层,相反,我们可以告诉TensorFlow把第一层和第二层串在一起形成一个神经网络,如下图TensorFlow中Sequential函数所做的,如果你想要训练这个神经网络,对于训练数据x和y,你只需要调用两个函数model.compile(…)和model.fit(x,y),后者即调用模拟点拟合x和y,它告诉TensorFlow把这个神经网络将第一层和第二层连接在一起并在训练集x和y上训练它
那么你如何在这个训练好的神经网络上进行推理、做向前传播?若你有一个新的例子x,它是具有该神经网络两个特征的numpy数组,要进行向前传播,而不是自己一层一层地做,你只需要在该x例子上调用模型进行预测。
所以模型预测进行向前传播或者用这个神经网络使用序列函数(sequential function)为你进行推理
在这里插入图片描述
再看一个数据分类模型
在这里插入图片描述
将各layer_i带入序列函数(sequential function)中得到更为紧凑的代码
在这里插入图片描述
这就是如何在TensorFlow中建立神经网络,不仅要调用这些代码,还要知道这些代码到底在做些什么

  • 16
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值