学习作业和课间整理:
课程包含的五个部分:
https://github.com/jasmine-0/deeplearning.ai
每周更新提交作业,
注:由于版本问题,作业中有的报错的地方
常见报错1:
‘c’ argument has 1 elements…
这个主要是plt.scatter函数改版所致,解决方法:
1 import operator 2 from functools import reduce 3 plt.scatter(X[0, :], X[1, :], c=reduce(operator.add, Y), s=40, cmap=plt.cm.Spectral)
常见报错2:
当然是 tensorflow 升级为2之后一堆报错,那天幸幸苦苦装好了 tensorflow ,开心的得瑟,运行,pangpang报错,简直是翻车现场
之后有时间再先学一下 tensorflow
还会持续更新。
学习计划:
每周周末学习一周的课程并完成作业,每走会有一个小结。
学习心得:
1. 现在深度学习如此强大的原因归结为三个因素:
Data(数据) Computation(运算能力) Algorithms(算法)
数据量的几何级数增加,加上GPU出现、计算机运算能力的大大提升,使得深度学习能够应用得更加广泛。另外,算法上的创新和改进让深度学习的性能和速度也大大提升。深度神经网络(DNN’s)可以更好地利用大规模的数据,从而超越较小的网络及传统学习算法。
2. 数据的矢量表达:
数据的处理还可以不用一层一层的 for 循环,矢量化设计数据据处理的结构很好的提高了效率。
3. 激活函数的原理(activation function):
激活函数是对每一层网络计算结果的处理,如果没有激活函数,那就起不到深层网络结构优化的效果
4. 随机初始化的重要性:
不好的参数初始化将导致梯度消失或爆炸。他认为解决这个问题的基本原则是确保每一层的权重矩阵的方差都近似为1。
5. 处理偏差(bias)和方差(variance)的工具
首先要先理解这两个术语的意思,
HIGH VARIANCE: training set error is low while the dev set error is high. HIGH BIAS: not fitting the trainin data well, however, this generalizing at a reasonable level to the dev set.
用英文就比较好理解这两个概念
6. 为什么使用小批量梯度下降(mini-batch)
吴教授使用等高线图解释了减小和增加小批量尺寸的权衡。基本原则是较大的尺寸每次迭代会变慢,而较小的尺寸则可以加快迭代过程,但是无法保证同样的收敛效果。最佳方法就是在二者之间进行权衡,使得训练过程比立即处理整个数据集要快,又能利用向量化技术的优势。
7. 高级优化技术
吴恩达老师解释了动量(momentum)和RMSprop等技术是如何限制梯度下降逼近极小值的路径。他还用球滚下山的例子生动地解释了这一过程。他把这些方法结合起来以解释著名的Adam优化过程。
8. Batch Norm
(这个十分熟悉的名词但是对它这个概念实在是模糊,吴恩达老师真的讲的太细致了!)
实际上,Batch Norm经常使用在mini-batch上,这也是其名称的由来。
值得注意的是,因为Batch Norm对各隐藏层 Z[l]=W[l]A[l−1]+b[l] 有去均值的操作,所以这里的常数项b[l]可以消去,其数值效果完全可以由Z~[l]中的β来实现。因此,我们在使用Batch Norm的时候,可以忽略各隐藏层的常数项b[l]。在使用梯度下降算法时,分别对W[l],β[l]和γ[l]进行迭代更新。除了传统的梯度下降算法之外,还可以使用我们之前介绍过的动量梯度下降、RMSprop或者Adam等优化算法。
9. Softmax Regression
相对于 hard max ,就是可输出多个评估的结果。
10. tensorflow 基础
11. Introduction to ML strategy
-- Sigle number evaluation metric
-- Train/ dev/ test distribution
-- Size of dev and test set
-- When to change dev/ test sets and metrics
-- Comparing to human performance
-- Improving your model performance