Udacity: 你的第一个神经网络
Udacity深度学习纳米学位项目一:你的第一个神经网络。项目中的一些坑以及感想。
背景
报名了Udacity的深度学习课程,课程中有若干实战项目,第一个项目需要构建一个神经网络,并用该网络预测每日自行车租客人数。
项目内容
项目中的数据是预先准备好的,并且训练所需的代码也有一部分已经写好。需要自己实现的主要是:
- sigmoid 激活函数
以及正向传播中的:
- 隐藏层输入
- 隐藏层输出
- 输出层输入
- 网络输出
和反向传播中的:
- 输出误差
- 更新权重
Lessons learned
我花了大概2天的时间完成了这个项目,走了不少弯路。现在回顾一下,感觉有一些需要注意的地方,总结如下,也许对您有用。
理论与公式
Udacity提供了视频与网页介绍了梯度下降反向传播的原理,包括了公式的具体推导过程。请不要为了节省时间而忽视这部分内容。最好自己亲手推导一下,这样在后续写代码的时候能够做到心里有数。否则可能会被error, error term等术语困扰。
矩阵运算
自己动手画一下神经网络的结构,把各个节点、输入、权重的连线都画出来,手动写写输出的表达式,然后将表达式用矩阵相乘的方式写出来,这样可以避免后期写代码时候的矩阵维度匹配问题。
模型特质
共享单车模型的输出于之前的网络结构不同,它的最后一层并不是要输出概率,因此输出层的激活函数不是sigmoid
函数。忽视这一点会造成误差计算的错误。
总结
最后,学习不能着急,要扎实。看到群里的小伙伴们有用几个小时就完成项目一的时候感觉很着急。然而基础不牢固就去做项目正好验证了一句老话“欲速则不达”。稳扎稳打才是适合我的学习方法。
Comments ()