【吴恩达机器学习】神经网络week2

神经网络week2

1.1 Tensorflow实现

例子:手写数字识别

【吴恩达机器学习】神经网络week2_第1张图片

BinaryCrossentropy是分类交叉熵

1.要求Tensorflow将神经网络这三层串在一起;

2.让Tensorflow编译模型,指定要使用的最后一个函数是什么;

3.调用fit函数,告诉Tensorflow在步骤1中使用在步骤2中指定的最后一个成本函数对数据集XY进行了指定。

epochs表示可能想要运行多少步来创建下降

1.2 模型训练细节

训练一个模型来做二分类,神经网络的训练分为三步

  • 定义模型(指定如何在给定输入特征x和参数w、b的情况下计算输出)

  • 定义损失函数

  • 优化损失函数(使用梯度下降法)去最小化成本函数 J

2.1 Sigmoid激活函数

如果不用激活函数,神经网络相当于一个线性函数

常用的激活函数:

【吴恩达机器学习】神经网络week2_第2张图片

2.2如何选择激活函数

【吴恩达机器学习】神经网络week2_第3张图片

二分类问题选择Sigmoid函数

回归问题:y可取正取负,线性激活函数;y只能取非负,ReLU(较常用,计算速度快;只有左边是平的,所以收敛速度快)

隐藏层中可以使用relu来尽可能准确的保留特征,只要最后的输出时再使用sigmoid方法,输出就会是一个0或1

为什么不用sigmoid?

因为sigmoid两头都是平的,做梯度下降的时候参数的每次更新是减去参数的导数的,而当函数是接近水平的时候,导数是接近0的,这时候参数的更新会很慢。

3.1多分类问题

3.3神经网络的Softmax输出

多分类问题:输出很多分类的模型

例子:手写数字识别问题,需要从0到9的十个分类中选择正确的分类。

这个问题可以通过加一个10个神经元的输出层来解决。

模型会输出10个值z1到z10,我们需要把这10个值转化为概率。最直观的方法是取最大值,也就是说把最大的那个值设成1,其他值都设为0。Softmax可以解决数字模糊不定的问题,把每个值z变成

然后算出每一个在全体占的比例,即最终概率。

稀疏分类交叉熵损失函数

之所以是linear是因为下面设定为True之后,softmax不再单独计算,只在计算cost时嵌入内部一起算了。这样输出层只会输出Z的值,不再带入softmax计算了。 输出层只会输出Z的值,那么你测试集带入后也会输出Z的值,还要经过sigmoid,这样算出来的才是区间在[0,1]的概率。

【吴恩达机器学习】神经网络week2_第4张图片

3.2 Softmax

多分类模型的输出层可以用Softmax函数,是多分类分类上下文的二进制分类算法。

Softmax回归公式:

z_j=\vec{w_j}\cdot\vec{x}+b_j\quad j=1,...,N

a_j={e^{z_j}\over\sum_{k=1}^{N}e^{z_k}}=P(y=j|\vec{x})\\ a_1+a_2+...+a_N=1

如何指定Softmax回归的成本函数

loss=-logaj if y=j

aj越小损失越大

【吴恩达机器学习】神经网络week2_第5张图片

3.4多标签分类

同时输出多个标签的分类叫多标签分类

比如我们要从图片里检测三个物体,最终模型输出的是一个有三个数字的矩阵,每个数字表示该物体是否存在。

对于这种任务,做法为同时做3个二分类

把输出层设置为3个神经元,激活函数为sigmoid,结果就是三个数字,每个数字代表该物体存在的概率。

【吴恩达机器学习】神经网络week2_第6张图片

你可能感兴趣的:(机器学习,神经网络,深度学习)