深度学习笔记本

  呉真的深度学习笔记本,基于吴恩达(Andrew Y. Ng)教授的深度学习入门课程,可以在Coursera网易云课堂学习该课程。

第一课:神经网络和深度学习(Neural Networks and Deep Learning)

第一周:深度学习概论(Introduction to deep learning)

1.1 欢迎(Welcome)

1.2 什么是神经网络?(What is a neural network?)

1.3 用神经网络进行监督学习(Supervised Learning with Neural Networks)

  神经网络在各领域的适用情况:

  • 房价预测,广告推荐,一般用普通神经网络
  • 图像识别,更适合卷积神经网络(Convolutional Neural Network)
  • 序列数据(如音频,文本),更适合循环神经网络(Recurrent Neural Network)
  • 自动驾驶,需要更复杂的混合神经网络

  一些专业术语:

  • 结构化数据(Structured Data):类似关系型数据库中数据表的数据
  • 非结构化数据(Unstructured Data):诸如音频、图像、文本等数据
  • 人类更擅长理解非结构化数据,而由于深度学习和神经网络的出现,计算机现在也可以更好的理解非结构化数据

1.4 为什么深度学习会兴起(Why is Deep Learning taking off?)

  数据集不大的时候,一些传统的机器学习方法,诸如支持向量机(Support Vector Machine)可能表现的会更好。当拥有非常庞大的数据集时,神经网络才能发挥出它应有的性能。

1.5 关于这门课(About this Course)

1.5 课程资源(Course Resources)

1.6 Geoffrey Hinton interview

第二周:神经网络基础(Neural Networks Basics)

2.1 二分分类(Binary Classification)

  一些约定:

  • m:表示训练集的规模(训练样本数量)
  • n:表示单个训练数据的维度
  • X \Chi :表示整个训练集,用 x i x^{i} 表示第 i i 个训练样本
  • Υ \Upsilon :表示整个标签(label)集,用 y i y^{i} 表示第 i i 个标签

2.2 逻辑回归(Logistic Regression)

g i v e n { ( x ( 1 ) , y ( 1 ) ) , , ( x ( m ) , y ( m ) ) } given \enspace \{(x^{(1)},y^{(1)}),\cdots,(x^{(m)},y^{(m)})\}

w e w a n t y ^ ( i ) y ( i ) we \enspace want \enspace \hat{y}^{(i)} \thickapprox y^{(i)}

y ^ ( i ) = σ ( w T x ( i ) + b ) \hat{y}^{(i)} = \sigma(w^Tx^{(i)}+b)

σ ( z ) = s i g m o i d ( z ) = 1 1 + e z \sigma(z) = sigmoid(z) = \frac{1}{1 + e^{-z}}

  • Sigmoid函数:将实数映射到 ( 0 , 1 ) (0,1) 的区间,常用于输出二分类问题中的概率分布。

2.3 逻辑回归成本函数(Logistic Regression Cost Function)

L ( y ^ ( i ) , y ( i ) ) = 1 2 ( y ^ ( i ) y ( i ) ) 2 L(\hat{y}^{(i)},y^{(i)})=\frac{1}{2}(\hat{y}^{(i)}-y^{(i)})^2

L ( y ^ ( i ) , y ( i ) ) = ( y ( i ) l o g ( y ^ ( i ) ) + ( 1 y ( i ) ) l o g ( 1 y ^ ( i ) ) ) L(\hat{y}^{(i)},y^{(i)})=-(y^{(i)}log(\hat{y}^{(i)})+(1-y^{(i)})log(1-\hat{y}^{(i)}))

  • 损失函数 L ( y ^ , y ) L(\hat{y},y) :用来衡量预测值和实际值的差距
  • 成本函数 J ( w , b ) = 1 m i = 1 m L ( y ^ ( i ) , y ( i ) ) J(w,b)=\frac{1}{m}\sum_{i=1}^mL(\hat{y}^{(i)},y^{(i)}) :整个训练集的平均损失

2.4 梯度下降法(Gradient Descent)

w w α d J ( w ) d w w \coloneqq w - \alpha \frac{\mathrm{d} J(w)}{\mathrm{d} w}

w w α J ( w , b ) w w \coloneqq w - \alpha \frac{\partial J(w,b)}{\partial w}

  关于梯度的理解:一元函数某点的导数在几何意义上即是该点切线的斜率,且切线只有一条。而对于多元函数来说,某点具有无数条切线,我们可以通过偏导数的思想,求得该点在固定x轴的情况下沿y轴的切线斜率又或是在固定y轴的情况下沿x轴的切线斜率。而方向导数可以使我们脱离坐标轴的限制,取得任意方向下的切线斜率或变化率。梯度则代表了函数变化率最大的方向,梯度值即为函数变化率最大值。

2.5 导数(Derivatives)

2.6 更多导数的例子(More Derivative Examples)

2.7 计算图(Computation graph)

  一些约定:

  • 正向传播过程从左到右使用蓝色绘图
  • 反向传播过程从右到左使用红色绘图

2.8 计算图的导数(Derivatives with a Computation Graph)

2.9 逻辑回归中的梯度下降法(Logistic Regression Gradient Descent)

Gradient Descent on m Examples
Vectorization
More Vectorization Examples
Vectorizing Logistic Regression
Vectorizing Logistic Regression’s Gradient Output
Broadcasting in Python
A note on python/numpy vectors
Quick tour of Jupyter/iPython Notebooks
Explanation of logistic regression cost function (optional)
Pieter Abbeel interview