2018年9月版本
Week 2
二元分类 Binary Classification
- 特征向量 n x n_x nx,或简写为 n n n。
- 二元分类的目标:针对一个输入x,预测对应输出y是1还是0。
逻辑回归 Logistic Regression
- 基本思想:给定一个特征向量 X \bold{X} X,得到一个概率 y ^ = P ( y = 1 ∣ X ) \hat{y}=P(y=1|X) y^=P(y=1∣X)
- 已知参数: X ∈ R n x , W ∈ R n x , b ∈ R X\in{\mathbb{R}^{n_x}} ,\; W\in{\mathbb{R}^{n_x}} ,\; b\in{\mathbb{R}} X∈Rnx,W∈Rnx,b∈R
- sigmoid函数: σ ( z ) = 1 1 + e − z \sigma(z)=\frac{1}{1+e^{-z}} σ(z)=1+e−z1,z很大时,这个值非常接近1;z很小时,这个值非常接近0;z=0,值为0.5。
- 基本目标:学习W和b,使得 y ^ \hat{y} y^可以很好地估计y=1的概率。
- 基本形式: y ^ = σ ( W T x + b ) , w h e r e σ ( z ) = 1 1 + e − z \hat{y}=\sigma(\bold{W}^Tx+b),\;where\;\sigma(z)=\frac{1}{1+e^{-z}} y^=σ(WTx+b),whereσ(z)=1+e−z1
代价函和损失函数 Loss Function & Cost Function
- 传统的平方差函数容易使问题非凸,这使得梯度下降不能很好地应用。
- 交叉熵损失函数 L ( y ^ , y ) = − ( y log y ^ + ( 1 − y ) log ( 1 − y ^ ) ) \mathcal{L}(\hat{y},y)=-(y\log{\hat{y}}+(1-y)\log(1-\hat{y})) L(y^,y)=−(ylogy^+(1−y)log(1−y^))
- 代价函数 J ( W , b ) = 1 m ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) = − 1 m ∑ i = 1 m [ y log y ^ + ( 1 − y ) log ( 1 − y ^ ) ] J(W,b)=\frac{1}{m}\sum\limits_{i=1}^{m}\mathcal{L}(\hat{y}^{(i)},y^{(i)})=-\frac{1}{m}\sum\limits_{i=1}^{m}[y\log{\hat{y}}+(1-y)\log(1-\hat{y})] J(W,b)=m1i=1∑mL(y^(i),y(i))=−m1i=1∑m[ylogy^+(1−y)log(1−y^)]
- 损失函数反映了单一的优化示例,损失函数反应的是你的参数代价。
- 整体目标就是缩小J的整体代价。
梯度下降 Gradient Descent
- 在逻辑回归中,各种初始化方式都有效(全零或者随机都可以)。
- 梯度下降的基本过程以及学习率的相关知识可以参考机器学习的相应部分。
- 基本公式为KaTeX parse error: No such environment: equation at position 7: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲ \left\{ …
导数 Derivatives
- 交叉熵函数的导数 − y y ^ + 1 − y 1 − y ^ -\frac{y}{\hat{y}}+\frac{1-y}{1-\hat{y}} −y^y+1−y^1−y
- sigmoid函数的导数 y ^ ( 1 − y ^ ) \hat{y}(1-\hat{y}) y^(1−y^)
计算图 Computation Graph
计算图于导数 Derivatives with a Computation Graph
- 求导数的过程实际上是在计算图上的一次反向转播。
- 简记J对过程中的某个变量var的导数为dvar。
逻辑回归梯度下降 Logistic Regression Gradient Descent
- 对于一个训练样本(针对损失函数),简记公式为(假设有两个参数):KaTeX parse error: No such environment: equation at position 7: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲ \left\{ …
- L对z的导数为a-y
m个样例上的梯度下降 Gradient Descent on m Examples
- 在简单方法中,将会使用的两个for循环:
- 对m个样本的代价函数和导数进行累加
- 便利每一个特征的参数
- 显示for循环会影响代码效率
向量化 Vectorization
- 参照机器学习的向量化部分。
- 逻辑回归的前向传播:
- X ∈ R n x × m X\in{\mathbb{R}^{n_x\times{m}}} X∈Rnx×m,即每一列都是一个样本的全部特征
- Z = [ z ( 1 ) z ( 2 ) … z ( m ) ] = W T X + b Z=[z^{(1)}\;z^{(2)}\;\ldots\;z^{(m)}]=W^TX+b Z=[z(1)z(2)…z(m)]=WTX+b
- A = [ a ( 1 ) a ( 2 ) … a ( m ) ] = σ ( Z ) A=[a^{(1)}\;a^{(2)}\;\ldots\;a^{(m)}]=\sigma(Z) A=[a(1)a(2)…a(m)]=σ(Z)
- 反向传播:
- d Z = A − Y = [ a ( 1 ) − y ( 1 ) a ( 2 ) − y ( 2 ) … a ( m ) − y ( m ) ] dZ=A-Y=[a^{(1)}-y^{(1)}\;a^{(2)}-y^{(2)}\;\ldots\;a^{(m)-y^{(m)}}] dZ=A−Y=[a(1)−y(1)a(2)−y(2)…a(m)−y(m)]
- d b = 1 m s u m ( d Z ) db=\frac{1}{m}sum(dZ) db=m1sum(dZ)
- d W = 1 m X d Z T dW=\frac{1}{m}XdZ^T dW=m1XdZT
- W : = W − α d W W:=W-\alpha{dW} W:=W−αdW
- b : = b − α d b b:=b-\alpha{db} b:=b−αdb
Python 中的广播 Broadcasting
- 针对逐个元素的加减乘除操作
- 对一个 m × n m\times{n} m×n矩阵,后者是一个 m × 1 m\times{1} m×1矩阵,那么后者将会按列复制n次确保维数相同
- 对一个 m × n m\times{n} m×n矩阵,后者是一个 1 × n 1\times{n} 1×n矩阵,那么后者将会按行复制m次确保维数相同
- 对一个 m × n m\times{n} m×n矩阵,后者是一个 1 × 1 1\times{1} 1×1矩阵(也就是一个实数),那么后者将会按列复制 m × n m\times{n} m×n次确保维数相同