直接阅读技术类的教材是困难的,理论的密集程度常常令人生畏,而Welch Labs的视频用有趣的短片形式,以达到教学的目的,并结合相关资源介绍技术背景,使你能熟练掌握主题。
而本文介绍的系列,将带领大家使用Python构建和训练一个完整的人工神经网络。
1.数据+架构
要想使用一种机器学习的方法,我们首先需要数据。获取到数据后,我们会使用编程语言Python,在二维numpy库里存储数据。数据准备好后,就可以用它训练一个模型了。机器学习中有大量的模型,本文训练的是当前特别火的人工神经网络。
Ps:把数据放进模型之前,我们需要考虑数据单位间的差异。
2.正向传播
上一节我们建立了神经网络,这次我们将用Python编程语言来实现它。
对深度学习模型按照输入层、靠近输入层的隐含层、靠近输出层的隐含层和输出层的次序,依次计算并存储模型的中间变量叫做正向传播(forward-propagation)。在本节中,我们介绍如何使用Python实现正向传播。
3.梯度下降
本节重点放在如何改进神经网络,使预测更准确。
梯度下降法,是当今最流行的优化(optimization)算法,亦是至今最常用的优化神经网络的方法。本视频通过举例,介绍了梯度下降是如何优化神经网络的。
4.反向传播
反向传播(back-propagation)是计算深度学习模型参数梯度的方法。总的来说,反向传播中会依据微积分中的链式法则,按照输出层、靠近输出层的隐含层、靠近输入层的隐含层和输入层的次序,依次计算并存储模型损失函数的得分与参数梯度。
反向传播可能比较简单,但不会太简单。反向传播中的错误是让神经网络学习的关键。在这个视频中,用高中数学水平浅显易懂地介绍了反向传播背后的推导和思考过程。
5.数值梯度检查
当构建复杂的系统,如神经网络时,检查部分工作可以避免以后许多问题。在这里,我们将借助对导数的简单理解和一些小技巧来检查梯度计算部分。
如果代码通过了这个测试,那可以确信,我们已经正确地计算和编码了梯度。
6.训练
经过以上工作,现在是时候训练神经网络了。我们将使用BFGS数值优化算法并查看结果。
7.过拟合,测试和正则化
我们已经建立并训练了神经网络,但是在开香槟庆祝之前,还要保证我们的模型适用于现实世界。
实践中,如果测试数据集是给定的,我们通常用机器学习模型,在该测试数据集上的误差来表示泛化误差。基于上述重要结论,以下两种拟合问题值得注意:
- 欠拟合:机器学习模型无法得到较低训练误差。
- 过拟合:机器学习模型的训练误差远小于其在测试数据集上的误差。
我们要尽可能同时避免欠拟合和过拟合的出现。可以使用正则化来应对过拟合问题。
推荐下我自己创建的Python学习交流群935711829,这是Python学习交流的地方,不管你是小白还是大牛,小编都欢迎,不定期分享干货,包括我整理的一份适合零基础学习Python的资料和入门教程。