Udacity: 你的第一个神经网络

Udacity深度学习纳米学位项目一:你的第一个神经网络。项目中的一些坑以及感想。

Udacity: 你的第一个神经网络

背景

报名了Udacity的深度学习课程,课程中有若干实战项目,第一个项目需要构建一个神经网络,并用该网络预测每日自行车租客人数。

项目内容

项目中的数据是预先准备好的,并且训练所需的代码也有一部分已经写好。需要自己实现的主要是:

  • sigmoid 激活函数

以及正向传播中的:

  • 隐藏层输入
  • 隐藏层输出
  • 输出层输入
  • 网络输出

和反向传播中的:

  • 输出误差
  • 更新权重

Lessons learned

我花了大概2天的时间完成了这个项目,走了不少弯路。现在回顾一下,感觉有一些需要注意的地方,总结如下,也许对您有用。

理论与公式

Udacity提供了视频与网页介绍了梯度下降反向传播的原理,包括了公式的具体推导过程。请不要为了节省时间而忽视这部分内容。最好自己亲手推导一下,这样在后续写代码的时候能够做到心里有数。否则可能会被error, error term等术语困扰。

矩阵运算

自己动手画一下神经网络的结构,把各个节点、输入、权重的连线都画出来,手动写写输出的表达式,然后将表达式用矩阵相乘的方式写出来,这样可以避免后期写代码时候的矩阵维度匹配问题。

模型特质

共享单车模型的输出于之前的网络结构不同,它的最后一层并不是要输出概率,因此输出层的激活函数不是sigmoid函数。忽视这一点会造成误差计算的错误。

总结

最后,学习不能着急,要扎实。看到群里的小伙伴们有用几个小时就完成项目一的时候感觉很着急。然而基础不牢固就去做项目正好验证了一句老话“欲速则不达”。稳扎稳打才是适合我的学习方法。