Deep Learning Notes - 1.2深度学习基础
二进制分类 Binary Classification
例如:判断图片中是否含有猫
图片为rbg模式,大小为width×heightwidth×height,使用矩阵(列向量)存储如下:
其中nx=3×width×heightnx=3×width×height,并将xx作为输入。
输出:
任意一个实例可以表示为(x,y)(x,y),x∈Rnxx∈Rnx,y∈{0,1}y∈{0,1},矩阵化之后为:
Logistic 回归
给定xx的前提下,令
输出:y^=σ(wTx+b)y^=σ(wTx+b),x∈Rnxx∈Rnx,w∈Rnxw∈Rnx,b∈Rb∈R
其中σ(z)=11+e−zσ(z)=11+e−z,图像如下:
Loss 函数:
Cost 函数:
其中的loglog均以ee为底。
梯度下降 Gradient Descent
计算来使得J(w,b)J(w,b)数值最小,以下是一次梯度下降公式:
其中,αα为学习率。
此后,不再详细区分dd和符号。
计算图
例如:
正向计算数值和反向计算导数的过程如下:
Logistic回归的梯度下降
z=wTx+bz=wTx+b
y^=a=σ(z)y^=a=σ(z)
L(a,y)=−[yloga+(1−y)log(1−a)]L(a,y)=−[yloga+(1−y)log(1−a)]
用于mm个样例,并高度向量化:
Python伪代码为:
# 高度向量化的目的是
# 减少for循环
# 以加快代码的运行速度
import numpy as np
for i in range(1000): # 梯度下降1000次
# 计算 a (y hat)
Z = np.dot(W.T, X) + b
A = sigmod(Z)
dz = A - Y
dw = 1/m * np.dot(X, dz.T)
db = 1/m * np.sum(dz)
w -= alpha * dw
b -= alpha * db
Python Broadcasting
Some Coding Techniques
记得创建行向量
np.random.randn( (5,1) )
、列向量
np.random.randn( (1,5) )
,而不要使用
np.random.randn( 5 )
多使用
reshape()
函数没有坏处尽可能多的使用
assert( a.shape()==(5,1) )
来保证程序的健壮性