目录

一.模型训练细节

二.激活函数

1.Sigmoid激活函数的替代方案

2.如何选择激活函数

3.为什么模型需要激活函数


一.模型训练细节

epochs:number of steps in gradient descent

模型训练的步骤:

1.指定输入数据是什么,并将其放到逻辑回归函数中

2.指定损失和成本函数

3.最小化成本函数(即梯度下降)

上面三步如下图所示

向毕业妥协系列之机器学习笔记:神经网络(三)Tensorflow实现(上)-LMLPHP

上图右侧执行model.compile时(即上面说的第二步)要指定损失函数,同时tensorflow会自动帮我们提供相应的和成本函数,当调用model.fit就是上面说的第三步了。

向毕业妥协系列之机器学习笔记:神经网络(三)Tensorflow实现(上)-LMLPHP

在第三步执行梯度下降的过程的时候,需要计算偏导数,tensorflow是利用反向传播技术来计算偏导的,反向传播我们在后面会学到。

二.激活函数

1.Sigmoid激活函数的替代方案

下面是神经网络中的最常用的几个激活函数,分别是线性激活函数,Sigmod激活函数,ReLU激活函数,表达式和函数图像如图所示。其中做左侧的线性激活函数有些人也会说没加激活函数,因为g(z)=z,所以也就是g(wx+b)=wx+b

向毕业妥协系列之机器学习笔记:神经网络(三)Tensorflow实现(上)-LMLPHP

在后面我们还会学到第四种激活函数:Softmax。

2.如何选择激活函数

输出层的激活函数选择:

通常面对二进制分类问题时,那么我们通常选择Sigmoid激活函数,因为神经网络的输出最后是一个介于0到1的值,而二进制分类也是对应0或1。

如果面对回归问题,那么有不同的选择,如果是预测明天的股票如何变化的话,那么通常会选择线性激活函数,因为股票的涨跌对应着数值的正负,而线性激活函数正好允许正值和负值的存在

又如回归问题当中的房价预测,就是需要一个非负值,这时候就需要ReLU激活函数。

通过上面的举例,也就是通常可以根据y标签的来判断使用那个激活函数。

向毕业妥协系列之机器学习笔记:神经网络(三)Tensorflow实现(上)-LMLPHP

隐藏层的激活函数选择:

其实现在也就二进制分类问题的输出层才会用sigmoid激活函数,但是现在无论隐藏层还是输出层基本都用ReLU,吴恩达老师也是建议对于大多数问题无论输出层还是隐藏层都只使用ReLU,原因有二:

1.可以对比一下Sigmoid和ReLU的公式,显然ReLU的公式更简单,计算效率更高。

2.可以看到Sigmoid函数在左侧和右侧都有相对很平坦的部分,这些平坦的部分会降低梯度下降的速度。

向毕业妥协系列之机器学习笔记:神经网络(三)Tensorflow实现(上)-LMLPHP

现在一些论文里可能还用一些其他的激活函数,每隔几年,研究者都会提出一种新型的激活函数,但是吴恩达老师说对于大多数问题,ReLU就行,其他的可以自己上网了解一下。

3.为什么模型需要激活函数

向毕业妥协系列之机器学习笔记:神经网络(三)Tensorflow实现(上)-LMLPHP

 上面那个例子如果用线性激活函数的话,那么就会达不到神经网络的要求,无法去拟合比线性回归模型更复杂的东西。

像下面的例子,左侧那个神经网路模型,输入层就是一个数字x,然后后面有两个隐藏层,每个隐藏层里都只有一个神经元,看右侧的公式推导,最后的输出值还是个线性函数的输出,所以就印证了咱们上面说的那句话(无法去拟合比线性回归模型更复杂的东西)

向毕业妥协系列之机器学习笔记:神经网络(三)Tensorflow实现(上)-LMLPHP

还是那句话:建议ReLU

11-11 08:42