引言
前段时间 Andrew Ng(吴恩达)在 Coursera 开设了深度学习的课程,正如 Andrew 在 Coursera 上的机器学习课程一样,Andrew 总是面向零基础的工程师来授课,而不是有专业背景的人员。所以课程总是会力求直观且应用性强,但是往往对专业从事机器学习的人员来看略显简单,但是大牛对事物的理解还是值得参考的,所以我把课程中自己学到的要点记录如下。
第一课:神经网络和深度学习
第一周:深度学习引言
- 结构化数据与非结构化数据?
- 机器学习中的结构数据可以理解为意义明确的特征,这样我们可以像数据库一样构建一个表每一行代表一个样本,每一列代表一个特定的特征或者属性值。
- 机器学习中的非结构数据就像图像、语音和文本一样,不是特别容易存成表的形式。
- 深度学习为什么会流行?
- 本质上讲是因为深度学习的算法在大数据量上的表现远胜其他算法,尤其在非结构化数据上。
- 客观上讲流行的原因是受到:1)数据量的增加;2)计算速度的提高;3)算法的改进;的三方面的影响。
第二周:神经网络基础
- 讲解了 logistic 回归以及如何如何通过最大似然估计导出其代价函数。
- 讲解了基于链式法则的反向传导算法的直观理解,比较容易理解,但是还是不如严格的证明来的舒服,严格推导可参考吴恩达在斯坦福大学UFLDL的材料的汉译版(具有更加详细的推导)
- 讲解了向量化的代码实现,相信习惯了写 MATLAB 代码的人都习惯了向量化的实现,提高并行化、高效
- 讲解了Python包numpy的广播机制以及numpy容易出错的地方,这个细节我也没有注意过。就是大家要注意 np.random.randn(5)、np.random.randn(5,1)、np.random.randn(1,5)的区别,最后两种比较好理解,可以理解为5*1的向量和1*5的向量,而第一种的方式最好不要使用,会比较凌乱,大家可以做一些矩阵和向量的运算测试一下。
- 总的来说,这一课的内容基本没有特别的营养,都是一些基本的机器学习知识和python的代码常识,大家有基础的可以直接略过,不会遗漏什么知识点。
第三周:浅层神经网络
- 讲解了一个单个隐藏层的神经网络的例子以及激活函数选择和随机初始