Deep Learning Notes - 1.2深度学习基础
二进制分类 Binary Classification
例如:判断图片中是否含有猫
图片为rbg模式,大小为 width×height w i d t h × h e i g h t ,使用矩阵(列向量)存储如下:
其中 nx=3×width×height n x = 3 × w i d t h × h e i g h t ,并将 x x 作为输入。
输出:
任意一个实例可以表示为 (x,y) ( x , y ) , x∈Rnx x ∈ R n x , y∈{0,1} y ∈ { 0 , 1 } ,矩阵化之后为:
Logistic 回归
给定 x x 的前提下,令
输出: y^=σ(wTx+b) y ^ = σ ( w T x + b ) , x∈Rnx x ∈ R n x , w∈Rnx w ∈ R n x , b∈R b ∈ R
其中 σ(z)=11+e−z σ ( z ) = 1 1 + e − z ,图像如下:
Loss 函数:
Cost 函数:
其中的 log log 均以 e e 为底。
梯度下降 Gradient Descent
计算来使得 J(w,b) J ( w , b ) 数值最小,以下是一次梯度下降公式:
其中, α α 为学习率。
此后,不再详细区分 d d 和符号。
计算图
例如:
正向计算数值和反向计算导数的过程如下:
Logistic回归的梯度下降
z=wTx+b z = w T x + b
y^=a=σ(z) y ^ = a = σ ( z )
L(a,y)=−[yloga+(1−y)log(1−a)] L ( a , y ) = − [ y log a + ( 1 − y ) log ( 1 − a ) ]
用于 m m 个样例,并高度向量化:
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) )
来保证程序的健壮性