欢迎来到本课程,关于高级学习算法,在之前我们学习了如何在神经网络中进行推理,本周我们将复习神经网络的训练。我认为能够利用自己的数据训练自己的神经网络很好。
我们继续运行手写数字识别示例,识别此图像是1还是0。这里我们使用的还是之前看到的神经网络架构:
其中有一个输入x,那就是输入,然后是第一个隐藏层,有25个单元,第二个隐藏层,有15个单元,然后还有一个输出。
我们将得到一组由图像x组成的训练示例,但是如何训练这个神经网络的参数?
![](https://i-blog.csdnimg.cn/direct/ea41f98f1e144158b8c92841ed4011d9.png)
![](https://i-blog.csdnimg.cn/direct/c6f3e2432e1143cbbdb28807f4a769a6.png)
第一步就是之前的神经网络过程(推理过程);第二步要求tensorflow编译模型;(而要求tensorflow编译模型的关键步骤是指定要使用的损失函数是什么)第三步是调用fit函数(训练模型),他告诉tensorflow拟合在步骤一中使用指定的损失函数模型/或者在第二步中指定的数据集x,y的成本函数。
epochs是专业术语,可以调节步长,以及梯度下降要跑多长时间。
现在先让我们回忆一下如何训练一个逻辑回归模型的,在上一个课程中,建立一个Logistic回归模型,(这个模型将指定如何计算输出,给定输入特征x和参数w和b)
第一步:在哪里指定什么是Logistic回归的输入输出函数(这取决于输入x和参数w和·b)
![](https://i-blog.csdnimg.cn/direct/4034bd70cf68448fb6ff11543050c5a0.png)
第二步是训练Logistic回归模型
![](https://i-blog.csdnimg.cn/direct/c371eee819854c6cb41c9b3f1c1cabec.png)
这是一个衡量Logistic回归在单个训练示例上做得多好的指标
成本函数:
第三步是使用算法,特别是梯度下降最小化w,b的代价函数j
之后w,b均更新为新的w,b
![](https://i-blog.csdnimg.cn/direct/c2daeea054994acb978c846b11f1e0b9.png)
以上三个步骤是我们如何在张量流中训练神经网络。
简单来说,
第一步是给定输入x和参数w,b如何计算输出:
![](https://i-blog.csdnimg.cn/direct/7737447bfeb040ec9aeab9b6f20f379c.png)
第二步是编译模型,告知它我们想用什么损失函数,下面这个是用来指定这个损失函数的代码。即(binary cross entropy)(二元交叉熵损失函数)
![](https://i-blog.csdnimg.cn/direct/942e94a60c694ab9803b93456154aeea.png)
即在整个训练集上取平均值,神经网络的成本函数。
第三步就是调用函数,试图最小化成本(作为神经网络参数的函数)
![](https://i-blog.csdnimg.cn/direct/aad0ef86971640b888c72a890f37eba6.png)
第一步就是指定了神经网络的整个架构
![](https://i-blog.csdnimg.cn/direct/c04de18d9c9b4545a9e72832f23c04d6.png)
第二步要指定损失函数是什么(这也将定义我们用来训练神经网络的成本函数)下面是最常用的
损失函数
![](https://i-blog.csdnimg.cn/direct/a958c3832cd048c599acc1d7c4987332.png)
成本函数
![](https://i-blog.csdnimg.cn/direct/92169d4f62664f8ea6ce45534e15525c.png)
成本函数就是神经网络中所有参数的函数
如果你想要优化成本函数,你就要试图优化它的所有参数。
第三步就要要求TensorFlow最小化成本函数,就是要使用梯度下降,
为了使用梯度下降,需要计算的关键是这些偏导数项
而张量流的作用,事实上,神经网络训练的标准是使用一种叫做反向传播的算法
而TensorFlow 可以为我们做这些事情,它在fit的函数中实现了反向传播,所以我们要做的是调用模型点拟合x,y并且告诉它这样做100次迭代。